Subversion Repositories Kolibri OS

Rev

Rev 9120 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1.   use32
  2.   org    0
  3.  
  4.   db     'MENUET01'
  5.   dd     1
  6.   dd     START
  7.   dd     I_END       ; à §¬¥à ¯à®£à ¬¬ë
  8.   dd     MEM         ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
  9.   dd     STACKTOP
  10.   dd     0
  11.   dd     0
  12. include '..\..\macros.inc'
  13. include '..\..\KOSfuncs.inc'
  14.  
  15. START:
  16. ;;óñòàíîâêà ìàñêà ñîáûòèé íà ïîëó÷åíèå ïåðåïèñîâêè è íàæàòèÿ íà êíîïêó
  17.        mcall SF_SET_EVENTS_MASK,0x05
  18. ;load driver
  19.        mcall SF_SYS_MISC, SSF_LOAD_DRIVER_PE, path_drv, 0
  20.        mov dword[drv_struct.handl],eax
  21.        test eax,eax ;ïðîâåðêà çàãðóçêè
  22.        jnz  still
  23.        jmp error_drv
  24. still:           ;void main()
  25.        call draw
  26. ;;îæèäàíèå ñîáûòèÿ â òå÷åíèè 2000ìñ
  27.        mcall SF_WAIT_EVENT_TIMEOUT,200 ;2 second
  28.        dec eax                   ; redraw request ?
  29.        je   still
  30.        cmp eax,2             ;button
  31.        jz button
  32.        jmp still
  33.  
  34. button:
  35.        mcall SF_GET_BUTTON
  36.  
  37.        cmp eax,1
  38.        jz still
  39.        dec ah
  40.        je exit
  41. ;; id button micro_info = 8
  42.        cmp ah,7 ;// ah-1=7
  43.        jnz still
  44.        xor byte[flag_micro_info],1
  45.        jmp still
  46. draw:
  47.        mcall SF_REDRAW, SSF_BEGIN_DRAW
  48.        mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sc,sizeof.system_colors
  49.  
  50.        mov eax,SF_CREATE_WINDOW
  51.        mov ebx,0x00ff013f
  52.        mov ecx,0x001500cc
  53.        mov edx,0x14000000
  54.        add edx,[sc.work]
  55.        mov edi,title
  56.        mcall
  57.  
  58.        mcall SF_SYS_MISC, SSF_CONTROL_DRIVER, drv_struct
  59.  
  60.        cmp byte[flag_micro_info],1
  61.        mov eax,SF_CHANGE_WINDOW
  62.        mov ebx,-1
  63.        mov ecx,ebx;-1
  64.        jz draw.micro
  65.  
  66.        mov esi,0x000000cc
  67.        mov edx,0x0000013f
  68.        mcall
  69. ;;ñîçäàíèå êíîïêè ïåðåêëþ÷åíèÿ ðåæèìà
  70.        mov eax,SF_DEFINE_BUTTON
  71.        mov ebx,0x01250010
  72.        mov ecx,0x001d0015
  73.        mov edx,0x00000008
  74.        mov esi,[sc.work_button]
  75.        mcall
  76. ;;âûâîä çíàêà íà êíîïêó
  77. ;;òàê êàê ôóíêöèÿ writeText íå äîëæíà èçìåíÿòü ðåãèñòðû
  78. ;;ïðèñâîåíèÿ â ðåãèñòðû eax è ecx ïðîèñõîäÿò òîëüêî 1 ðàç
  79. ;; Äàëåå, òàê êàê òåêñò âûâîäèòñÿ ïî÷òè âñåãäà ñ îäèíàêîâûì
  80. ;; ñìåùåíèåì âíèç(ðàâíûì 15)  äûííûå(ñòðîêè) èìåþò îäèíàêîâûé
  81. ;; ðàçìåð , òî èñïîëüçóåòñÿ èíñòðóêöèÿ add
  82.        mov eax,SF_DRAW_TEXT
  83.        mov ebx,0x01290020
  84.        mov ecx,0x81000000
  85.        add ecx,[sc.work_text]
  86.        mov edx,_up
  87.        mcall
  88.  
  89.        ;âûâîä "Tctl:"
  90.        mov ebx,0x000a0020
  91.        mov ecx,0x90000000
  92.        add ecx,[sc.work_text]
  93.        mov edx,_Tctl
  94.        mcall
  95.  
  96.        ;âûâîä "Tmax:"
  97.        add ebx,0x15
  98.        add edx,7
  99.        mcall
  100.  
  101.        ;âûâîä "Tcrit:"
  102.        add ebx,0x2a
  103.        add edx,7
  104.        mcall
  105.  
  106.        ;âûâîä "Tccd1:"
  107.        add ebx,0x19
  108.        add edx,7
  109.        mcall
  110.  
  111.        ;âûâîä "Tccd2:"
  112.        add ebx,0x15
  113.        add edx,7
  114.        mcall
  115.  
  116.        ;âûâîä "Tccd3:"
  117.        add ebx,0x15
  118.        add edx,7
  119.        mcall
  120.  
  121.        ;âûâîä "Tccd4:"
  122.        add ebx,0x15
  123.        add edx,7
  124.        mcall
  125.  
  126.        ;âûâîä "Tccd5:"
  127.        mov ebx,0x00a50078
  128.        add edx,7
  129.        mcall
  130.  
  131.        ;âûâîä "Tccd6:"
  132.        add ebx,0x15
  133.        add edx,7
  134.        mcall
  135.  
  136.        ;âûâîä "Tccd7:"
  137.        add ebx,0x15
  138.        add edx,7
  139.        mcall
  140.  
  141.        ;âûâîä "Tccd8:"
  142.        add ebx,0x15
  143.        add edx,7
  144.        mcall
  145.  
  146.        ;âûâîä "Tdie:"
  147.        mov ebx,0x00a5005f
  148.        add edx,7
  149.        mcall
  150.  
  151.        ;âûâîä "Tcrit hyst:"
  152.        mov ebx,0x000a004a
  153.        add edx,7
  154.        mcall
  155. ;;;;;;input data driver;;;;;;;;;
  156.        mov eax,0x004a0020
  157.        mov ebx,drv_data.Tctl  ;âûâîä äàííûõ îò äðàéâåðà
  158.        call write_data
  159.  
  160.        add eax,0x15
  161.        mov ebx,drv_data.Tmax
  162.        call write_data
  163.  
  164.        add eax,0x2a
  165.        mov ebx,drv_data.Tcrit
  166.        call write_data
  167.  
  168.        add eax,0x19
  169.        mov ebx,drv_data.Tccd1
  170.        call write_data
  171.  
  172.        add eax,0x15
  173.        add ebx,4
  174.        call write_data
  175.  
  176.        add eax,0x15
  177.        add ebx,4
  178.        call write_data
  179.  
  180.        add eax,0x15
  181.        add ebx,4
  182.        call write_data
  183.  
  184.        mov eax,0x00E50078
  185.        add ebx,4
  186.        call write_data
  187.  
  188.        add eax,0x15
  189.        add ebx,4
  190.        call write_data
  191.  
  192.        add eax,0x15
  193.        add ebx,4
  194.        call write_data
  195.  
  196.        add eax,0x15
  197.        add ebx,4
  198.        call write_data
  199.  
  200.        mov eax,0x00E5005f
  201.        mov ebx,drv_data.Tdie
  202.        call write_data
  203.  
  204.        mov eax,0x007a004a
  205.        mov ebx,drv_data.Tcrit_hyst
  206.        call write_data
  207.        jmp @f
  208. .micro:
  209.        mov esi,0x00000035
  210.        mov edx,0x000000c0
  211.        mcall
  212.  
  213.        mov eax,SF_DEFINE_BUTTON
  214.        mov ebx,0x00a70010
  215.        mov ecx,0x001d0015
  216.        mov edx,eax;0x00000008
  217.        mov esi,[sc.work_button]
  218.        mcall
  219.  
  220.        mov eax,SF_DRAW_TEXT;4
  221.        mov ebx,0x000a0020
  222.        mov ecx,0x90000000
  223.        add ecx,[sc.work_text]
  224.        mov edx,_Tctl
  225.        mcall
  226.  
  227.        add ebx,0x00a00000
  228.        mov ecx,0x81000000
  229.        add ecx,[sc.work_text]
  230.        mov edx,_down
  231.        mcall
  232.  
  233.        mov eax,0x004a0020
  234.        mov ebx,drv_data.Tctl
  235.        call write_data
  236. @@:
  237.        mcall SF_REDRAW, SSF_END_DRAW
  238.        ret
  239. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  240. ;; procedure write_data(eax, ebx);
  241. ;; eax=x*65536+y
  242. ;; ebx=pointer on value
  243. ;; ecx register don`t save
  244. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  245. write_data:
  246.        push eax
  247.        push ebx
  248.        ;mov edx,[ebx]  ;edx=value
  249.        mov esi,ebx
  250.        cmp dword[ebx],-1   ; flag ziro data
  251.        mov ecx,0x90000000
  252.        mov ebx,eax
  253.        jnz @f
  254.        ;write n/a
  255.        add ecx,[sc.work_text]
  256.        mov eax,SF_DRAW_TEXT
  257.        mov edx,_NA
  258.        mcall
  259.        pop ebx
  260.        pop eax
  261.        ret
  262. @@:
  263.        ;write_value
  264. ; value / 1000 =value_in_1
  265. ;input value_in_1,koord_start
  266. ; if value >=100 then dot_kord=4 ; =0x20
  267. ;   if value >10 then  dot_kord=3; =0x18
  268. ;     dot_kord=2
  269. ;input ".", koord_start+dot_koord*size_w(char)
  270. ;value-value_in_1 = value_in_2
  271. ;input value_in_2, koord_start+dot_kord+1*size_w(char=8)
  272.        push eax
  273.        mov eax,[esi]
  274.        xor edx,edx
  275.        mov ebx,1000
  276.        div ebx
  277.        cmp eax,100
  278.        jae .dot_4
  279.        cmp eax,10
  280.        jae .dot_3       ; ----|
  281.        mov edi,0x0c;0x10;     |
  282.        jmp .write       ;     |
  283. .dot_4:                 ;     |
  284.        mov edi,0x1c;0x20;     |
  285.        jmp .write       ;     |
  286. .dot_3:                 ;   <-|
  287.        mov edi,0x14;0x18
  288. .write:
  289.        mov ecx,edx
  290.        pop edx
  291.        push ecx
  292.  
  293.        mov ecx,eax
  294.        mov ebx,0x80030000
  295.        mov eax,SF_DRAW_NUMBER
  296.        mov esi,0x10000000
  297.        add esi,[sc.work_text]
  298.        mcall
  299.        shl edi,16
  300.        mov eax,SF_DRAW_TEXT
  301.        add edx,edi
  302.        mov ebx,edx
  303.  
  304.        mov ecx,0x90000000
  305.        add ecx,[sc.work_text]
  306.        mov edx,_dot
  307.        mcall
  308.        mov eax,SF_DRAW_NUMBER
  309.        mov edx,ebx
  310.        mov esi,0x10000000
  311.        add esi,[sc.work_text]
  312.        mov ebx,0x00030000
  313.  
  314.        add edx,0x80000
  315.        pop ecx
  316.        mcall
  317.        mov eax,SF_DRAW_TEXT
  318.        mov ebx,edx
  319.        mov ecx,0x80000000
  320.        add ecx,[sc.work_text]
  321.        add ebx,0x180000
  322.        mov edx,_t
  323.        mcall
  324.  
  325.        mov ecx,0x90000000
  326.        add ecx,[sc.work_text]
  327.        add ebx,0x60000
  328.        mov edx,_C
  329.        mcall
  330.        pop ebx
  331.        pop eax
  332.        ret
  333.  
  334. error_drv:
  335.        mcall SF_FILE,run_notify
  336. exit:
  337.        mcall SF_TERMINATE_PROCESS
  338. ;Data_program;
  339. title       db 'AMDtemp',0
  340. path_drv    db '/kolibrios/drivers/sensors/k10temp.sys',0
  341. Error_text  db '"Error load driver\nk10temp.sys was not found or is faulty " -tdE ',0
  342. _NA         db 'N/A',0
  343. _dot        db '.',0
  344. _t          db 0x1d,0x00
  345. _C          db 'C',0x00
  346. _down       db 0x1f,0x00
  347. _up         db 0x1e,0x00
  348.  
  349.  
  350. _Tctl       db 'Tctl: ',0
  351. _Tmax       db 'Tmax: ',0
  352. _Tcrit      db 'Tcrit:',0
  353. _Tccd1      db 'Tccd1:',0
  354. _Tccd2      db 'Tccd2:',0
  355. _Tccd3      db 'Tccd3:',0
  356. _Tccd4      db 'Tccd4:',0
  357. _Tccd5      db 'Tccd5:',0
  358. _Tccd6      db 'Tccd6:',0
  359. _Tccd7      db 'Tccd7:',0
  360. _Tccd8      db 'Tccd8:',0
  361. _Tdie       db 'Tdie: ',0
  362. _Tcrit_hyst db 'Tcrit hyst:',0
  363.  
  364. ;;flag mode input data
  365. flag_micro_info db 1
  366. drv_data:
  367. .Tctl            dd -1
  368. .Tdie            dd -1
  369. .Tccd1           dd -1
  370. .Tccd2           dd -1
  371. .Tccd3           dd -1
  372. .Tccd4           dd -1
  373. .Tccd5           dd -1
  374. .Tccd6           dd -1
  375. .Tccd7           dd -1
  376. .Tccd8           dd -1
  377.  
  378. .Tmax            dd -1
  379. .Tcrit           dd -1
  380. .Tcrit_hyst      dd -1
  381. .sizeof = $ - drv_data ;
  382.  
  383. drv_struct:
  384. .handl           dd 0
  385.                  dd 0
  386.                  dd 0
  387.                  dd 0
  388.                  dd drv_data
  389.                  dd drv_data.sizeof;52 ; 13*4
  390.  
  391. run_notify:
  392.                  dd 7
  393.                  dd 0
  394.                  dd Error_text
  395.                  dd 0
  396.                  dd 0
  397.                  db '/sys/@notify',0
  398.  
  399. sc      system_colors
  400. I_END:
  401.    rd 256
  402. STACKTOP:
  403. MEM: