Subversion Repositories Kolibri OS

Rev

Rev 9858 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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