forked from KolibriOS/kolibrios
19cab98b13
git-svn-id: svn://kolibrios.org@9883 a494cfbc-eb01-0410-851d-a64ba20cac60
917 lines
26 KiB
NASM
917 lines
26 KiB
NASM
;; 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: |