Subversion Repositories Kolibri OS

Rev

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

  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.  
  8.   use32
  9.   org    0
  10.  
  11.   db     'MENUET01'
  12.   dd     1
  13.   dd     START
  14.   dd     I_END
  15.   dd     MEM
  16.   dd     STACKTOP
  17.   dd     PATH
  18.   dd     0
  19.  
  20. include '..\..\proc32.inc'
  21. include '..\..\macros.inc'
  22. include '..\..\KOSfuncs.inc'
  23. include '..\..\dll.inc'
  24.  
  25. ; include 'parser.inc'    ; this modul does not work
  26. START:
  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
  42. ;;óñòàíîâêà ìàñêà ñîáûòèé íà ïîëó÷åíèå ïåðåïèñîâêè è íàæàòèÿ íà êíîïêó
  43.        mcall SF_SET_EVENTS_MASK,0x05
  44. ;load driver
  45.        mcall SF_SYS_MISC, SSF_LOAD_DRIVER_PE, [drv_ptr], 0
  46.        mov dword[drv_struct.handl],eax
  47.        test eax,eax ;ïðîâåðêà çàãðóçêè
  48.        jz  error_drv
  49. main:
  50.        mcall SF_SYS_MISC, SSF_CONTROL_DRIVER, drv_struct
  51.        cmp   byte[PATH], 0
  52.        jz    still
  53.        ;call add_file
  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
  73.        jnz .no_micro_info
  74.        xor byte[flag_micro_info],1
  75.        jmp still
  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
  82.  
  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.  
  157. align 4
  158. draw:
  159.        mcall SF_REDRAW, SSF_BEGIN_DRAW
  160.        mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
  161.  
  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.  
  172.        mov eax,SF_CREATE_WINDOW
  173.        mov ebx,0x00ff0132
  174.        mov ecx,0x00150114   ; link with  80 line
  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.  
  188.        mov esi,0x00000115     ; link with 58 line
  189.        mov edx,0x00000132
  190.        mcall
  191. ;;ñîçäàíèå êíîïêè ïåðåêëþ÷åíèÿ ðåæèìà
  192.        mov eax,SF_DEFINE_BUTTON
  193.        mov ebx,0x00fc0010
  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
  205.        mov ebx,0x01000020
  206.        mov ecx,0x81000000
  207.        add ecx,[sc.work_text]
  208.        mov edx,_up
  209.        mcall
  210.  
  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.  
  241.        ;âûâîä "Tctl:"
  242.        mov ebx,0x00150035
  243.        mov ecx,0x90000000
  244.        add ecx,[sc.work_text]
  245.        mov edx,_Tctl
  246.        mcall
  247.  
  248.        ;âûâîä "Tmax:"
  249.        add ebx, 0x15
  250.        add edx,7
  251.        mcall
  252.  
  253.        ;âûâîä "Tcrit hyst:"
  254.        ;mov ebx,0x0015005f
  255.        add ebx, 0x15
  256.        add edx,7
  257.        mcall
  258.  
  259.        ;âûâîä "Tcrit:"
  260.        add ebx,0x15;0x2a
  261.        add edx,7
  262.        mcall
  263.  
  264.        ;âûâîä "Tdie:"
  265.        ;mov ebx,0x00150089 ;0x00a5005f
  266.        add ebx, 0x15
  267.        add edx,7
  268.        mcall
  269.  
  270.        ;âûâîä "Tccd1:"
  271.        add ebx,0x2b;0x19
  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:"
  291.        mov ebx,0x009d00b4
  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;;;;;;;;;
  310.        mov eax,0x004a0035  ;0x004a0020
  311.        mov ebx, drv_data.Tctl  ;âûâîä äàííûõ îò äðàéâåðà
  312.        call write_data
  313.  
  314.        add eax,0x15
  315.        mov byte[write_data.defaunt_color], 1
  316.        mov ebx, drv_data.Tmax
  317.        call write_data
  318.  
  319.        add eax,0x2a
  320.        mov byte[write_data.defaunt_color], 1
  321.        mov ebx, drv_data.Tcrit
  322.        call write_data
  323.  
  324.        add eax,0x40;0x19
  325.        mov ebx, drv_data.Tccd1
  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.  
  340.        mov eax,0x00d000b4
  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.  
  356.        mov eax,0x004a0089
  357.        mov ebx, drv_data.Tdie
  358.        mov byte[write_data.defaunt_color], 1
  359.        call write_data
  360.  
  361.        mov eax,0x004a005f
  362.        mov byte[write_data.defaunt_color], 1
  363.        mov ebx, drv_data.Tcrit_hyst
  364.        call write_data
  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.  
  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]
  387.        mcall
  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
  403.        mov ebx, drv_data.Tctl
  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
  411. ;; ebx = pointer on value
  412. ;; edx = 1 - set color, 0 - set defaunt color
  413. ;; ecx register don`t save
  414. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  415. align 4
  416. write_data:
  417.        push eax  ;save koord
  418.        push ebx  ;save *value
  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
  428.        add ebx, 0x00100000
  429.        mov edx,_NA
  430.        mcall
  431.        pop ebx
  432.        pop eax
  433.        ret
  434. @@:
  435.        ;set color
  436.        push eax
  437.        push edx
  438.        push ecx
  439.        mov  dword[.color_text], 0x000000cf  ;blue
  440.        cmp  byte[.defaunt_color], 1
  441.        jnz  @f
  442.        ;mov  dword[.color_text], 0x000000cf  ;blue
  443.        jmp  .end_set_color
  444. @@:
  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.  
  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. @@:
  465.        mov  dword[.color_text],0x0000a500 ; green
  466. .end_set_color:
  467.        pop  ecx
  468.        pop  edx
  469.        pop  eax
  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)
  479.        push eax ;save koord
  480.        mov eax,[esi] ; eax = value
  481.        xor edx,edx
  482.        mov ebx,1000
  483.        div ebx
  484.        cmp eax, 100
  485.        jae .dot_4
  486.        cmp eax, 10
  487.        jae .dot_3       ; ----|
  488.        mov edi, 0x10    ;     |
  489.        jmp .write       ;     |
  490. .dot_4:                 ;     |
  491.        xor edi, edi     ;     |
  492.        jmp .write       ;     |
  493. .dot_3:                 ;   <-|
  494.        mov edi, 8
  495. .write:
  496.        mov ecx,edx
  497.        pop edx       ; edx = koord
  498.        push ecx       ;save mask string
  499.  
  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
  505.        mov eax,SF_DRAW_NUMBER
  506.        mov esi,0x10000000
  507.        add esi,[.color_text]
  508.        mcall
  509.  
  510.        pop  ebx ; ebx = koord
  511.        add  ebx, 0x00180000 ; x + x_size_char*3
  512.        mov eax,SF_DRAW_TEXT
  513.        mov ecx,0x90000000
  514.        add ecx,[.color_text]
  515.        mov edx,_dot
  516.        mcall
  517.  
  518.        mov eax,SF_DRAW_NUMBER
  519.        mov edx,ebx
  520.        mov esi,0x10000000
  521.        add esi,[.color_text]
  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
  530.        add ecx,[.color_text]
  531.        add ebx,0x180000
  532.        mov edx,_t
  533.        mcall
  534.  
  535.        mov ecx,0x90000000
  536.        add ecx,[.color_text]
  537.        add ebx,0x60000
  538.        mov edx,_C
  539.        mcall
  540.        pop ebx
  541.        pop eax
  542.        mov byte[.defaunt_color], 0
  543.        ret
  544. .color_text:    rd 1 ; color input temp
  545. .defaunt_color: rb 1 ; flag set color
  546. ;; end proc
  547.  
  548. error_drv:
  549.        send_notify Error_text
  550. exit:
  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.  
  558.        mcall SF_TERMINATE_PROCESS
  559.  
  560. err_load_lib:
  561.        send_notify Error_text.load_lib
  562.        mcall SF_TERMINATE_PROCESS
  563.  
  564. align 4
  565. index_item:
  566.         dd    1
  567.  
  568. ;eax = int   value / 1000
  569. ;ebx = *str
  570. ; èç çà êîíêðåòèêè äàííîãî ïðèëàæåíèÿ(à èìåííî èçìåðåíèå òåìïåðàòóðû ïðîöà), ñîìíèâàþñü
  571. ; ÷òî ïîòðåáóåòñÿ áîëüøå 3 öèôð íà çíà÷åíèå(õõõ.õõõ) òàê ÷òî áóäåò êîñòûëü
  572. align 4
  573. int_to_str:
  574.         push    ecx edx esi
  575.         mov     ecx, '0000'
  576.         mov     [ebx], ecx
  577.         mov     [ebx + 5], ecx
  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
  586.         and     eax, 0x3ff ; 1023
  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
  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
  678. ;Data_program;
  679. title       db 'AMDtemp',0
  680. path_drv    db '/kolibrios/drivers/sensors/k10temp.sys',0
  681. Error_text  db '"Error load driver\nk10temp.sys was not found or is faulty " -tdE ',0
  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.  
  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
  698. _Tcrit_hyst db 'Thyst:',0;'Tcrit hyst:',0
  699. _Tcrit      db 'Tcrit:',0
  700. _Tdie       db 'Tdie: ',0
  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.  
  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.  
  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
  783. .sizeof = $ - drv_data ;
  784.  
  785. align 4
  786. drv_struct:
  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
  793. align 4
  794. run_notify:
  795.                  dd 7
  796.                  dd 0
  797. .message:        dd Error_text
  798.                  dd 0
  799.                  dd 0
  800.                  db '/sys/@notify',0
  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.  
  806. ;äûííûå äëÿ äèàëîãà îòêðûòèÿ ôàéëîâ
  807. align 4
  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.  
  849. align 4
  850. PATH:
  851.    rb 512 ; buffer for command line. string for save log.
  852. sc      system_colors
  853. I_END:
  854.    rd 256
  855. STACKTOP:
  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
  863. MEM: