-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAMDtemp.asm
917 lines (822 loc) · 25.9 KB
/
AMDtemp.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
;; Copyright (C) 2021-2022, Michael Frolov aka Doczom
macro send_notify send_str{
mov dword[run_notify.message], send_str
mcall SF_FILE, run_notify
}
use32
org 0
db 'MENUET01'
dd 1
dd START
dd I_END
dd MEM
dd STACKTOP
dd PATH
dd 0
include '..\..\proc32.inc'
include '..\..\macros.inc'
include '..\..\KOSfuncs.inc'
include '..\..\dll.inc'
include 'parser.inc'
START:
;init heap
mcall 68, 11
; load lib
stdcall dll.Load, @IMPORT
or eax, eax
jnz err_load_lib
; init opendial
invoke OpenDialog_Init, OpenDialog_data
; init futex
mcall SF_FUTEX, SSF_CREATE, futex_cmd
mov [futex_handle], eax
; parse cmd_line
cmp byte[PATH], 0
jz @f
call parse_cmd
@@:
;;óñòàíîâêà ìàñêà ñîáûòèé íà ïîëó÷åíèå ïåðåïèñîâêè è íàæàòèÿ íà êíîïêó
mcall SF_SET_EVENTS_MASK, 0x05
;load driver
mcall SF_SYS_MISC, SSF_LOAD_DRIVER_PE, [drv_ptr], 0
mov dword[drv_struct.handl], eax
test eax, eax ;ïðîâåðêà çàãðóçêè
jz error_drv
main:
mcall SF_SYS_MISC, SSF_CONTROL_DRIVER, drv_struct
cmp dword[save_ptr], 0
jz still
mcall 51, 1, thread_auto_save, thread_auto_save.stack
cmp eax, -1
jz still
mov dword[PID_AUTO_SAVE], eax
still: ;void main()
call draw
;;îæèäàíèå ñîáûòèÿ â òå÷åíèè 2000ìñ
mcall SF_WAIT_EVENT_TIMEOUT, 200 ;2 second
dec eax ; redraw request ?
je still
cmp eax, 2 ;button
jz button
jmp still
button:
mcall SF_GET_BUTTON
cmp eax, 1
jz still
dec ah
je exit
;; id button micro_info = 8
cmp ah, 7 ;// ah-1=7
jnz .no_micro_info
xor byte[flag_micro_info], 1
jmp still
.no_micro_info:
; id button log = 9
cmp ah, 8 ; 9-1
jnz .no_log_button
cmp dword[text_log_butt], _start_log
jnz .log_stop
cmp dword[log_ptr], 0
jnz @f
mcall 68, SSF_MEM_ALLOC, 19 ; íà÷àëüíûå äàííûå äëÿ Graph
test eax, eax
jz .err_alloc_mem
mov [log_ptr], eax
mov dword[log_size], 19
mov edi, eax
mov eax,[drv_data.Tmax]
mov ebx, graph_start.new_data
call int_to_str
mov esi, graph_start
; set base value in log
movsd
movsd
movsd
movsd
movsw
movsb
@@:
mcall 51, 1, thread_timer, thread_timer.stack
mov dword[text_log_butt], _stop_log
jmp still
.log_stop:
; ïðîáóæäàåì ïîòîê ÷åðåç ôüþòåêñ
mov byte[futex_cmd], 1 ; stop thread
mcall SF_FUTEX, SSF_WAKE, [futex_handle], 1
mcall 68, 1 ; ïåðåêëþ÷àåì ïîòîêè, äëÿ òîãî, ÷òîáû ñîîáùåíèå ïðèøëî ïîòîêó ñ òàéìåðîì
; ìåíÿåì òåêñò â êíîïêå
mov dword[text_log_butt], _start_log
jmp still
.err_alloc_mem:
send_notify Error_text.alloc_1
jmp still
.no_log_button:
; id button save = 10
cmp ah, 9 ; 10-1
jnz still
cmp dword[log_ptr], 0
jnz @f
send_notify Error_text.save_log
jmp still
@@:
cmp byte[futex_cmd], 2 ; 2 - save file
jnz @f
send_notify Error_text.save_log_1
jmp still
@@:
; òóò âûçîâ ôóíêöèè openDialog
invoke OpenDialog_Start, OpenDialog_data
cmp [OpenDialog_data.status], 1
jne still
;mov dword[log_path], openfile_path
; ïðîáóæäàåì ïîòîê ÷åðåç ôüþòåêñ
mov byte[futex_cmd], 2 ; save_log
mcall SF_FUTEX, SSF_WAKE, [futex_handle], 1
test eax, eax
jnz still
mcall 51, 1, thread_timer, thread_timer.stack
mcall 68, 1 ; ïåðåêëþ÷àåì ïîòîêè, äëÿ òîãî, ÷òîáû ñîîáùåíèå ïðèøëî ïîòîêó ñ òàéìåðîì
@@:
mov byte[futex_cmd], 3 ; save_log & exit
mcall SF_FUTEX, SSF_WAKE, [futex_handle], 1
test eax, eax
jz @b
mcall 68, 1 ; ïåðåêëþ÷àåì ïîòîêè, äëÿ òîãî, ÷òîáû ñîîáùåíèå ïðèøëî ïîòîêó ñ òàéìåðîì
jmp still
align 4
draw:
mcall SF_REDRAW, SSF_BEGIN_DRAW
mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
mov eax, dword[sc.work_graph]
mov dword[frame_struct.FR_OUTER_COLOR], eax
mov eax, dword[sc.work_light]
mov dword[frame_struct.FR_INNER_COLOR], eax
mov eax, dword[sc.work_text]
mov dword[frame_struct.FR_FORE_COLOR], eax
mov eax, dword[sc.work]
mov dword[frame_struct.FR_BACK_COLOR], eax
mov eax, SF_CREATE_WINDOW
mov ebx, 0x00ff0132
mov ecx, 0x00150114 ; link with 80 line
mov edx, 0x14000000
add edx, [sc.work]
mov edi, title
mcall
mcall SF_SYS_MISC, SSF_CONTROL_DRIVER, drv_struct
cmp byte[flag_micro_info], 1
mov eax, SF_CHANGE_WINDOW
mov ebx, -1
mov ecx, ebx
jz draw.micro
mov esi,0x00000115 ; link with 58 line
mov edx,0x00000132
mcall
;;ñîçäàíèå êíîïêè ïåðåêëþ÷åíèÿ ðåæèìà
mov eax, SF_DEFINE_BUTTON
mov ebx, 0x00fc0010
mov ecx, 0x001d0015
mov edx, 0x00000008
mov esi, [sc.work_button]
mcall
;;âûâîä çíàêà íà êíîïêó
;;òàê êàê ôóíêöèÿ writeText íå äîëæíà èçìåíÿòü ðåãèñòðû
;;ïðèñâîåíèÿ â ðåãèñòðû eax è ecx ïðîèñõîäÿò òîëüêî 1 ðàç
;; Äàëåå, òàê êàê òåêñò âûâîäèòñÿ ïî÷òè âñåãäà ñ îäèíàêîâûì
;; ñìåùåíèåì âíèç(ðàâíûì 15) äûííûå(ñòðîêè) èìåþò îäèíàêîâûé
;; ðàçìåð , òî èñïîëüçóåòñÿ èíñòðóêöèÿ add
mov eax, SF_DRAW_TEXT
mov ebx, 0x01000020
mov ecx, 0x81000000
add ecx, [sc.work_text]
mov edx, _up
mcall
;ñîçäàíèå êíîïêè çàïóñêà/âûêëþ÷åíèÿ ëîãà
mov eax, SF_DEFINE_BUTTON
mov ebx, 0x00a00070
mov ecx, 0x004a0015
mov edx, 0x00000009 ;id button
mov esi, [sc.work_button]
mcall
; âûâîä òåêñòà
mov eax, SF_DRAW_TEXT
mov ebx, 0x00a8004c
mov ecx, 0x90000000
add ecx, [sc.work_text]
mov edx, [text_log_butt]
mcall
;ñîçäàíèå êíîïêè ñîõðàíåíèÿ ëîãà â ôàéë
mov eax, SF_DEFINE_BUTTON
mov ebx, 0x00a00070
mov ecx, 0x00630015
mov edx, 0x0000000a ; id=10
mov esi, [sc.work_button]
mcall
; âûâîä òåêñòà
mov eax, SF_DRAW_TEXT
mov ebx, 0x00a80065
mov ecx, 0x90000000
add ecx, [sc.work_text]
mov edx, _save_log
mcall
;âûâîä "Tctl:"
mov ebx, 0x00150035
mov ecx, 0x90000000
add ecx, [sc.work_text]
mov edx, _Tctl
mcall
;âûâîä "Tmax:"
add ebx, 0x15
add edx, 7
mcall
;âûâîä "Tcrit hyst:"
;mov ebx,0x0015005f
add ebx, 0x15
add edx, 7
mcall
;âûâîä "Tcrit:"
add ebx, 0x15;0x2a
add edx, 7
mcall
;âûâîä "Tdie:"
;mov ebx,0x00150089 ;0x00a5005f
add ebx, 0x15
add edx, 7
mcall
;âûâîä "Tccd1:"
add ebx, 0x2b;0x19
add edx, 7
mcall
;âûâîä "Tccd2:"
add ebx, 0x15
add edx, 7
mcall
;âûâîä "Tccd3:"
add ebx, 0x15
add edx, 7
mcall
;âûâîä "Tccd4:"
add ebx, 0x15
add edx, 7
mcall
;âûâîä "Tccd5:"
mov ebx, 0x009d00b4
add edx, 7
mcall
;âûâîä "Tccd6:"
add ebx, 0x15
add edx, 7
mcall
;âûâîä "Tccd7:"
add ebx, 0x15
add edx, 7
mcall
;âûâîä "Tccd8:"
add ebx, 0x15
add edx, 7
mcall
;;;;;;input data driver;;;;;;;;;
mov eax, 0x004a0035 ;0x004a0020
mov ebx, drv_data.Tctl ;âûâîä äàííûõ îò äðàéâåðà
call write_data
add eax, 0x15
mov byte[write_data.defaunt_color], 1
mov ebx, drv_data.Tmax
call write_data
add eax, 0x2a
mov byte[write_data.defaunt_color], 1
mov ebx, drv_data.Tcrit
call write_data
add eax, 0x40;0x19
mov ebx, drv_data.Tccd1
call write_data
add eax, 0x15
add ebx, 4
call write_data
add eax, 0x15
add ebx, 4
call write_data
add eax, 0x15
add ebx, 4
call write_data
mov eax, 0x00d000b4
add ebx, 4
call write_data
add eax, 0x15
add ebx, 4
call write_data
add eax, 0x15
add ebx, 4
call write_data
add eax, 0x15
add ebx, 4
call write_data
mov eax, 0x004a0089
mov ebx, drv_data.Tdie
mov byte[write_data.defaunt_color], 1
call write_data
mov eax, 0x004a005f
mov byte[write_data.defaunt_color], 1
mov ebx, drv_data.Tcrit_hyst
call write_data
mov dword[frame_struct.FR_WIDTH], 0x0f008a
mov dword[frame_struct.FR_HEIGHT], 0x280075
mov dword[frame_struct.FR_TEXT], frame_text_1
invoke frame_draw, frame_struct
mov dword[frame_struct.FR_WIDTH],0x0f0114
mov dword[frame_struct.FR_HEIGHT], 0xa70060
mov dword[frame_struct.FR_TEXT], frame_text_2
invoke frame_draw, frame_struct
jmp @f
.micro:
mov esi, 0x00000035
mov edx, 0x000000c0
mcall
mov eax, SF_DEFINE_BUTTON
mov ebx, 0x00a70010
mov ecx, 0x001d0015
mov edx, eax;0x00000008
mov esi, [sc.work_button]
mcall
mov eax, SF_DRAW_TEXT
mov ebx, 0x000a0020
mov ecx, 0x90000000
add ecx, [sc.work_text]
mov edx, _Tctl
mcall
add ebx, 0x00a00000
mov ecx, 0x81000000
add ecx, [sc.work_text]
mov edx, _down
mcall
mov eax, 0x004a0020
mov ebx, drv_data.Tctl
call write_data
@@:
mcall SF_REDRAW, SSF_END_DRAW
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; procedure write_data(eax, ebx);
;; eax=x*65536+y
;; ebx = pointer on value
;; edx = 1 - set color, 0 - set defaunt color
;; ecx register don`t save
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
align 4
write_data:
push eax ;save koord
push ebx ;save *value
;mov edx,[ebx] ;edx=value
mov esi, ebx
cmp dword[ebx], -1 ; flag ziro data
mov ecx, 0x90000000
mov ebx, eax
jnz @f
;write n/a
add ecx, [sc.work_text]
mov eax, SF_DRAW_TEXT
add ebx, 0x00100000
mov edx, _NA
mcall
pop ebx
pop eax
ret
@@:
;set color
push eax
push edx
push ecx
mov dword[.color_text], 0x000000cf ;blue
cmp byte[.defaunt_color], 1
jnz @f
;mov dword[.color_text], 0x000000cf ;blue
jmp .end_set_color
@@:
cmp dword[drv_data.Tcrit], -1
jz .end_set_color
cmp dword[drv_data.Tcrit], 0
jz .end_set_color
xor edx, edx
mov eax, [esi]
imul eax, 10
xor edx, edx
div dword[drv_data.Tcrit]
cmp eax, 9
jb @f
mov dword[.color_text], 0x00d50000 ; red
jmp .end_set_color
@@:
cmp eax, 7
jb @f
mov dword[.color_text], 0x00f07000 ; orange
jmp .end_set_color
@@:
mov dword[.color_text], 0x0000a500 ; green
.end_set_color:
pop ecx
pop edx
pop eax
;write_value
; value / 1000 =value_in_1
;input value_in_1,koord_start
; if value >=100 then dot_kord=4 ; =0x20
; if value >10 then dot_kord=3; =0x18
; dot_kord=2
;input ".", koord_start+dot_koord*size_w(char)
;value-value_in_1 = value_in_2
;input value_in_2, koord_start+dot_kord+1*size_w(char=8)
push eax ;save koord
mov eax, [esi] ; eax = value
xor edx, edx
mov ebx, 1000
div ebx
cmp eax, 100
jae .dot_4
cmp eax, 10
jae .dot_3 ; ----|
mov edi, 0x10 ; |
jmp .write ; |
.dot_4: ; |
xor edi, edi ; |
jmp .write ; |
.dot_3: ; <-|
mov edi, 8
.write:
mov ecx, edx
pop edx ; edx = koord
push ecx ;save mask string
shl edi, 16
push edx ; save koord
add edx, edi
mov ecx, eax ;ecx = value/1000
mov ebx, 0x80030000 ; ebx = mask sysfn47
mov eax, SF_DRAW_NUMBER
mov esi, 0x10000000
add esi, [.color_text]
mcall
pop ebx ; ebx = koord
add ebx, 0x00180000 ; x + x_size_char*3
mov eax, SF_DRAW_TEXT
mov ecx, 0x90000000
add ecx, [.color_text]
mov edx, _dot
mcall
mov eax, SF_DRAW_NUMBER
mov edx, ebx
mov esi, 0x10000000
add esi, [.color_text]
mov ebx, 0x00030000
add edx, 0x80000
pop ecx
mcall
mov eax, SF_DRAW_TEXT
mov ebx, edx
mov ecx, 0x80000000
add ecx, [.color_text]
add ebx, 0x180000
mov edx, _t
mcall
mov ecx, 0x90000000
add ecx, [.color_text]
add ebx, 0x60000
mov edx, _C
mcall
pop ebx
pop eax
mov byte[.defaunt_color], 0
ret
.color_text: rd 1 ; color input temp
.defaunt_color: rb 1 ; flag set color
;; end proc
error_drv:
send_notify Error_text
exit:
mov byte[futex_cmd], 2
mcall SF_FUTEX, SSF_WAKE, [futex_handle], 1
mcall 68, 1 ; ïåðåêëþ÷àåì ïîòîêè, äëÿ òîãî, ÷òîáû ñîîáùåíèå ïðèøëî ïîòîêó ñ òàéìåðîì
; destroy futex
mcall SF_FUTEX, SSF_DESTROY, [futex_handle]
mcall 68, 13, [log_ptr] ; free page
mcall 18, 18, dword[PID_AUTO_SAVE]
mcall SF_TERMINATE_PROCESS
err_load_lib:
send_notify Error_text.load_lib
mcall SF_TERMINATE_PROCESS
align 4
index_item:
dd 1
;eax = int value / 1000
;ebx = *str
; èç çà êîíêðåòèêè äàííîãî ïðèëàæåíèÿ(à èìåííî èçìåðåíèå òåìïåðàòóðû ïðîöà), ñîìíèâàþñü
; ÷òî ïîòðåáóåòñÿ áîëüøå 3 öèôð íà çíà÷åíèå(õõõ.õõõ) òàê ÷òî áóäåò êîñòûëü
align 4
int_to_str:
push ecx edx esi
mov ecx, '0000'
mov [ebx], ecx
mov [ebx + 5], ecx
xor edx, edx
mov esi, 1000
div esi
push edx
mov esi, 10
push ebx
add ebx, 3
and eax, 0x3ff ; 1023
.loop:
test eax, eax
jz @f
xor edx, edx
div esi
add edx, '0'
mov byte[ebx], dl
dec ebx
jmp .loop
@@:
pop ebx
add ebx, 8;4
pop edx
test edx, edx
jz @f
mov eax, edx
imul eax, 10
xor edx, edx
push edx
push ebx
jmp .loop
@@:
pop esi edx ecx
ret
thread_timer:
mcall 40, 0x00 ; î÷èùàåì ìàñêó ñîáûòèé
@@:
mov byte[futex_cmd], 0x00
mcall SF_FUTEX, SSF_WAIT, [futex_handle],[futex_cmd], 100*60 ; 1 min
test eax, eax
jz .check_cmd
cmp eax, -2
je .exit ; error
; realloc log
mov ecx, [log_size]
mov edx, [log_ptr]
add ecx, 20 ; size item data
mov ebx, SSF_MEM_REALLOC ; 20
mcall 68
test eax, eax
jz .err_alloc_2
mov [log_ptr], eax
add eax, [log_size]
mov [log_size], ecx;edx
mov edi, eax
; get new data temp
push edi
mov eax,[index_item]
imul eax,1000
mov ebx, graph_start.new_data
call int_to_str
mov ebx, [log_ptr]
mov eax, [graph_start.new_data]
mov [ebx + 2], eax ; rewrite index x koord
inc dword[index_item]
mov eax,[drv_data.Tctl]
mov ebx, graph_start.new_data_2
call int_to_str
pop edi
mov esi, graph_start.new_data
; save data
movsd
movsd
movsd
movsd
movsd
cmp dword[save_ptr], 0
jz .no_save_mode
push dword[log_path]
mov eax, [save_ptr]
mov [log_path], eax
mcall 70, file_log
pop dword[log_path]
.no_save_mode:
jmp @b
.err_alloc_2:
send_notify Error_text.alloc_2
jmp @b
.check_cmd:
test byte[futex_cmd], 0x02 ; 1- stop 2 - save in file
jz .exit
mcall 70, file_log
test byte[futex_cmd], 1
jz @b
.exit:
mov byte[futex_cmd], 0x00
mcall -1
thread_auto_save:
mcall 40, 0 ;clear event mask
;calculate first data in file(4 value border graphic)
mov eax,[drv_data.Tmax]
mov ebx, graph_start_1.new_data
call int_to_str
;create file
mcall 70, .file
mov dword[.file], 3
mov dword[.log_size], 20
mov dword[.log_offset], 19
mov dword[.log_ptr], graph_start_1.new_data
@@:
mcall 5, 100*60
; add new item in file
push dword[.log_offset]
mov dword[.log_size], 4
mov dword[.log_offset], 2
mov eax,[.index_item]
imul eax,1000
mov ebx, graph_start_1.new_data
call int_to_str
mcall SF_FILE, .file
inc dword[.index_item]
pop dword[.log_offset]
mov dword[.log_size], 20
; get string y koord
mov eax,[drv_data.Tctl]
mov ebx, graph_start_1.new_data_2
call int_to_str
mcall SF_FILE, .file
add dword[.log_offset], 20
jmp @b
mcall -1
.index_item: dd 1
.file:
dd 2
.log_offset: dd 0
dd 0
.log_size: dd 19
.log_ptr: dd graph_start_1
db 0
save_ptr: dd 0 ; pointer to save file or zero
PID_AUTO_SAVE: dd 0 ; for break this thread
;Data_program;
title db 'AMDtemp',0
path_drv db '/kolibrios/drivers/sensors/k10temp.sys',0
Error_text db '"Error load driver\nk10temp.sys was not found or is faulty " -tdE ',0
.save_log: db '"Error save log\nThe log has not been created" -tdE',0
.save_log_1:db '"Error save log\nThe log file is already saving" -tdE',0
.alloc_1: db '"Error alloc memory for log" -tdE',0
.alloc_2: db '"Error alloc memory for new koord" -tdE',0
.load_lib: db '"Error load library" -tdE',0
_NA db 'N/A',0
_dot db '.',0
_t db 0x1d,0x00
_C db 'C',0x00
_down db 0x1f,0x00
_up db 0x1e,0x00
_Tctl db 'Tctl: ',0
_Tmax db 'Tmax: ',0
_Tcrit_hyst db 'Thyst:',0;'Tcrit hyst:',0
_Tcrit db 'Tcrit:',0
_Tdie db 'Tdie: ',0
_Tccd1 db 'Tccd1:',0
_Tccd2 db 'Tccd2:',0
_Tccd3 db 'Tccd3:',0
_Tccd4 db 'Tccd4:',0
_Tccd5 db 'Tccd5:',0
_Tccd6 db 'Tccd6:',0
_Tccd7 db 'Tccd7:',0
_Tccd8 db 'Tccd8:',0
_start_log: db 'start loging',0
_stop_log: db 'stop loging ',0
_save_log: db ' save log ',0
text_log_butt: dd _start_log
align 4
file_log:
dd 2
dd 0
dd 0
log_size: dd 0
log_ptr: dd 0
db 0
log_path: dd openfile_path
futex_handle: dd 0
futex_cmd: dd 0 ;1- stop 2 - save in file & no exit 3 - save in file & exit
drv_ptr: dd path_drv ; pointer to path on driver
frame_text_1: db 'General info',0
frame_text_2: db 'Extended info',0
align 16
@IMPORT:
library box_lib , 'box_lib.obj', \
proc_lib , 'proc_lib.obj'
import proc_lib, \
OpenDialog_Init , 'OpenDialog_init',\
OpenDialog_Start , 'OpenDialog_start'
import box_lib,\
frame_draw , 'frame_draw'
frame_struct:
dd 0;FR_STYLE â êîäå ëèáû íå èñïîëüçóåòñÿ
.FR_WIDTH dw 0x8a;FR_WIDTH
dw 0x0f;FR_LEFT start x
.FR_HEIGHT dw 0x75;FR_HEIGHT
dw 0x28;FR_TOP start y
.FR_OUTER_COLOR dd 0xff;FR_OUTER_COLOR âíåøíèé îêðàñ ëèíèè ïðè ôëàãå x000z
.FR_INNER_COLOR dd 0xff00;FR_INNER_COLOR âíóòðåíèé îêðàñ ëèíèè ïðè ôëàãå x000z
dd 00001b;FR_FLAGS
;FR_CAPTION equ 00001b ïîêàçûâàòü çàãîëîâîê èëè íåò
;FR_FILLED equ 10000b çàêðàøèâàåò âíóòðåíèþ îáëàñòü öâåòîì ôîíà òåêñòà
.FR_TEXT dd 0;FR_TEXT òóò è òàê ïîíÿòíî
dd 0;FR_TEXT_POSITION 0 - ñâåðõó òåêñò 1 - ñíèçó òåêñò
dd 1;FR_FONT
dd 0x0c;FR_FONT_HEIGHT ñìåùåíèå êîîðäèíàòû y âûâîäèìîãî òåêñòà
.FR_FORE_COLOR dd 0xff;FR_FORE_COLOR öâåò òåêñòà
.FR_BACK_COLOR dd 0xffffff;FR_BACK_COLOR ôîí ñèìâîëîâ òåêñòà
;;flag mode input data
flag_micro_info db 1
drv_data:
.Tctl dd -1
.Tdie dd -1
.Tccd1 dd -1
.Tccd2 dd -1
.Tccd3 dd -1
.Tccd4 dd -1
.Tccd5 dd -1
.Tccd6 dd -1
.Tccd7 dd -1
.Tccd8 dd -1
.Tmax dd -1
.Tcrit dd -1
.Tcrit_hyst dd -1
.sizeof = $ - drv_data ;
align 4
drv_struct:
.handl dd 0
dd 0
dd 0
dd 0
dd drv_data
dd drv_data.sizeof;52 ; 13*4
align 4
run_notify:
dd 7
dd 0
.message: dd Error_text
dd 0
dd 0
db '/sys/@notify',0
align 4
graph_start_1: db '0 0000 0 ' ; 9 byte
.new_data: db '0000.0000 ' ; 10-19 byte 10 byte
.new_data_2: db '0000.0000 ' ; 20-29 byte 10 byte
align 4
graph_start: db '0 0000 0 ' ; 9 byte
.new_data: db '0000.0000 ' ; 10-19 byte 10 byte
.new_data_2: db '0000.0000 ' ; 20-29 byte 10 byte
;äûííûå äëÿ äèàëîãà îòêðûòèÿ ôàéëîâ
align 4
OpenDialog_data:
.type dd 1 ;0 - îòêðûòü, 1 - ñîõðàíèòü, 2 - âûáðàòü äèðåêòîðèþ
.procinfo dd procinfo ;+4 ýòî äëÿ ïîëó÷åíèÿ äàííûõ ïîòîêà
.com_area_name dd communication_area_name ;+8
.com_area dd 0 ;+12 êàê ÿ ïîíÿë, ñþäà áóäåò çàïèñàí óêàçàòåëü íà ðàñøàðåíóþ ïàìÿòü
.opendir_path dd 0 ;+16 ïóòü ê ïàïêå, êîòîðàÿ áóäåò ïðè îòêðûòèè êîìïîíåíòà
.dir_default_path dd default_dir ;+20 ïóòü ê ïàïêå, åñëè opendir_path=0
.start_path dd opendialog_path ;+24 ïóòü ê opendialog
.draw_window dd draw ;+28 ôóíêöèÿ ïåðåðèñîâêè îêíà, âûçâàâøåãî opendialog
.status dd 0 ;+32 0, 2 - âûõîä èëè îøèáêà 1 - þçåð íàæàë OK
.openfile_path dd openfile_path ;+36 óêàçàòåëü íà áóôåð äëÿ ïóòü ê îòêðûâàåìîìó ôàéëó
.filename_area dd filename_area ;+40 óêàçàòåëü íà áóôåð äëÿ íàçâàíèÿ ôàéëà
.filter_area dd 0;Filter óêàçàòåëü íà ìàññèâ ôèëüòîðîâ ïîèñêà
.x:
.x_size dw 420 ;+48 ; Window X size
.x_start dw 10 ;+50 ; Window X position
.y:
.y_size dw 320 ;+52 ; Window y size
.y_start dw 10 ;+54 ; Window Y position
;ôîðìàò ôèëüòðîâ
;Filter:
;dd Filter.end - Filter.1
;.1:
;db 'ASM',0
;db 'INC',0
;db 'TXT',0
;.end:
;db 0
default_dir db '/sys',0 ;äèðåêòîðèÿ ïî óìîë÷àíèþ
communication_area_name:
db 'FFFFFFFF_open_dialog',0
opendialog_path:
db '/sys/File managers/opendial',0
filename_area:
db 'temp1.grf',0
rb 256
align 4
PATH:
rb 512 ; buffer for command line. string for save log.
sc system_colors
I_END:
rd 256
STACKTOP:
rb 512 ; 512 byte for stack
thread_timer.stack:
rb 512 ; 512 byte for stack
thread_auto_save.stack:
;rb 1024
procinfo process_information
openfile_path:
rb 4096
MEM: