Rev 518 | Rev 5920 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 518 | Rev 551 | ||
---|---|---|---|
1 | ; |
1 | ; |
2 | ; Ghost Monitor - óòèëèòà (ñòðåññ) òåñòèðîâàíèÿ è ìîíèòîðèíãà ñèñòåìû |
2 | ; Ghost Monitor - óòèëèòà (ñòðåññ) òåñòèðîâàíèÿ è ìîíèòîðèíãà ñèñòåìû |
3 | ; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru) |
3 | ; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru) |
4 | ; All Right Reserved |
4 | ; All Right Reserved |
5 | ; |
5 | ; |
6 | ; ÂÎÇÌÎÆÍÀ ÏÎÐ×À ÎÁÎÐÓÄÎÂÀÍÈß! |
6 | ; ÂÎÇÌÎÆÍÀ ÏÎÐ×À ÎÁÎÐÓÄÎÂÀÍÈß! |
7 | ; ÈÑÏÎËÜÇÓÉÒÅ ÍÀ ÑÂÎÉ ÑÒÐÀÕ È ÐÈÑÊ! |
7 | ; ÈÑÏÎËÜÇÓÉÒÅ ÍÀ ÑÂÎÉ ÑÒÐÀÕ È ÐÈÑÊ! |
8 | ; |
8 | ; |
9 | ; Çàìåòêè : |
9 | ; Çàìåòêè : |
10 | ; Äîïèñàòü çàïóñê òåñòîâ (rtst) (íåò ðåàêöèè íà îøèáêó çàïóñêà) |
10 | ; Äîïèñàòü çàïóñê òåñòîâ (rtst) (íåò ðåàêöèè íà îøèáêó çàïóñêà) |
11 | ; Ïåðåäåëàòü îáíîâëåíèå ãðàôèêà (ñäåëàòü îòäåëüíûì ïðîöåññîì) |
11 | ; Ïåðåäåëàòü îáíîâëåíèå ãðàôèêà (ñäåëàòü îòäåëüíûì ïðîöåññîì) |
12 | ; Äîáàâèòü ðåàêöèþ íà ïàðàìåòðû äàò÷èêîâ |
12 | ; Äîáàâèòü ðåàêöèþ íà ïàðàìåòðû äàò÷èêîâ |
13 | ; |
13 | ; |
14 | 14 | ||
15 | ; Âíåøíèå ôàéëû : |
15 | ; Âíåøíèå ôàéëû : |
16 | ; hwm*.inc - ïðîöåäóðû ðàáîòû ñ äàò÷èêàìè ìîíèòîðèíãà |
16 | ; hwm*.inc - ïðîöåäóðû ðàáîòû ñ äàò÷èêàìè ìîíèòîðèíãà |
17 | ; system.inc - âû÷èñëåíèå çàãðóçêè ïðîöåññîðà, çàâåðøåíèå òåñòà, etc... |
17 | ; system.inc - âû÷èñëåíèå çàãðóçêè ïðîöåññîðà, çàâåðøåíèå òåñòà, etc... |
18 | ; tests.inc - òåñòû ;-) |
18 | ; tests.inc - òåñòû ;-) |
19 | ; diag.inc - ïîääåðæêà äèàãðàì |
19 | ; diag.inc - ïîääåðæêà äèàãðàì |
20 | ; tab_*.inc - ïðîöåäóðû îòðèñîâêè ñîîòâåòñòâóþøèõ âêëàäîê |
20 | ; tab_*.inc - ïðîöåäóðû îòðèñîâêè ñîîòâåòñòâóþøèõ âêëàäîê |
21 | 21 | ||
22 | 22 | ||
23 | ; Èäåíòèôèêàòîðû êíîïîê : |
23 | ; Èäåíòèôèêàòîðû êíîïîê : |
24 | ; 01 - Exit |
24 | ; 01 - Exit |
25 | ; 02 - Info tab |
25 | ; 02 - Info tab |
26 | ; 03 - Tests tab |
26 | ; 03 - Tests tab |
27 | ; 04 - Config tab |
27 | ; 04 - Config tab |
28 | ; 05 - About tab |
28 | ; 05 - About tab |
29 | ; 06 - P5 test (tab_test.inc) |
29 | ; 06 - P5 test (tab_test.inc) |
30 | ; 07 - P6 test (tab_test.inc) |
30 | ; 07 - P6 test (tab_test.inc) |
31 | ; 08 - K6 test (tab_test.inc) |
31 | ; 08 - K6 test (tab_test.inc) |
32 | ; 09 - K7 test (tab_test.inc) |
32 | ; 09 - K7 test (tab_test.inc) |
33 | ; 10 - MMX test - not used (tab_test.inc) |
33 | ; 10 - MMX test - not used (tab_test.inc) |
34 | ; 11 - Update time increment (tab_conf.inc) |
34 | ; 11 - Update time increment (tab_conf.inc) |
35 | ; 12 - Update time decriment (tab_conf.inc) |
35 | ; 12 - Update time decriment (tab_conf.inc) |
36 | ; 13..17 - Èçìåíåíèå öâåòà CPU_load, Mem_usage, Temp1, Temp2, Temp3 |
36 | ; 13..17 - Èçìåíåíèå öâåòà CPU_load, Mem_usage, Temp1, Temp2, Temp3 |
37 | 37 | ||
38 | include 'config.inc' |
38 | include 'config.inc' |
39 | include 'macros.inc' |
39 | include 'macros.inc' |
40 | 40 | ||
41 | tcol equ 0x5080d0 |
41 | tcol equ 0x5080d0 |
42 | atcol equ 0x4070c0 |
42 | atcol equ 0x4070c0 |
43 | val_mod equ 0x3090 |
43 | val_mod equ 0x3090 |
44 | 44 | ||
45 | MEOS_APP_START |
45 | MEOS_APP_START |
46 | include "tests.inc" ; <-- Ìíîãî âûðàâíèâàíèé, ëó÷øå çäåñü |
46 | include "tests.inc" ; <-- Ìíîãî âûðàâíèâàíèé, ëó÷øå çäåñü |
47 | CODE |
47 | CODE |
48 | ;--- Init ------------------------------------------------------------ |
48 | ;--- Init ------------------------------------------------------------ |
49 | ; Î÷èùàåì íåèíèöèàëèçèðîâàííûå äàííûå |
49 | ; Î÷èùàåì íåèíèöèàëèçèðîâàííûå äàííûå |
50 | mov ecx, __memory - __udata |
50 | mov ecx, __memory - __udata |
51 | mov edi, __udata |
51 | mov edi, __udata |
52 | xor eax, eax |
52 | xor eax, eax |
53 | rep stosb |
53 | rep stosb |
54 | 54 | ||
55 | xor eax, eax |
55 | xor eax, eax |
56 | cpuid ; Óçíà¸ì ïðîèçâîäèòåëÿ ïðîöà |
56 | cpuid ; Óçíà¸ì ïðîèçâîäèòåëÿ ïðîöà |
57 | mov [Vendor + 0], ebx |
57 | mov [Vendor + 0], ebx |
58 | mov [Vendor + 4], edx |
58 | mov [Vendor + 4], edx |
59 | mov [Vendor + 8], ecx |
59 | mov [Vendor + 8], ecx |
60 | mov eax, 1 |
60 | mov eax, 1 |
61 | cpuid ; Åñòü ëè MMX ? |
61 | cpuid ; Åñòü ëè MMX ? |
62 | mov ecx, eax |
62 | mov ecx, eax |
63 | shr al, 4 |
63 | shr al, 4 |
64 | and ax, 0x0F0F |
64 | and ax, 0x0F0F |
65 | mov [CPU_fam], ah |
65 | mov [CPU_fam], ah |
66 | mov [CPU_mod], al |
66 | mov [CPU_mod], al |
67 | shr edx, 23 |
67 | shr edx, 23 |
68 | and dl, 1 |
68 | and dl, 1 |
69 | mov [CPU_mmx], dl |
69 | mov [CPU_mmx], dl |
70 | shr ecx, 12 |
70 | shr ecx, 12 |
71 | and cl, 11b |
71 | and cl, 11b |
72 | mov [CPU_type], cl |
72 | mov [CPU_type], cl |
73 | 73 | ||
74 | ; ! Öâåòà èç ìàññèâà colors |
74 | ; ! Öâåòà èç ìàññèâà colors |
75 | mov dword[d_cpu_load], 0xFF00 ; èíèöèàëèçèðóåì ãðàôèê çàãðóçêè ÀËÓ |
75 | mov dword[d_cpu_load], 0xFF00 ; èíèöèàëèçèðóåì ãðàôèê çàãðóçêè ÀËÓ |
76 | mov dword[d_mem_usage], 0x8BA169 ; -- mem usega |
76 | mov dword[d_mem_usage], 0x8BA169 ; -- mem usega |
77 | mov dword[d_temp1], 0xFF0000 ; -- ãðàôèê òåìïåðàòóðû ÖÏÓ |
77 | mov dword[d_temp1], 0xFF0000 ; -- ãðàôèê òåìïåðàòóðû ÖÏÓ |
78 | mov dword[d_temp2], 0xFF ; -- ãðàôèê òåìïåðàòóðû ÌÏ |
78 | mov dword[d_temp2], 0xFF ; -- ãðàôèê òåìïåðàòóðû ÌÏ |
79 | mov dword[d_temp3], 0xFF7E23 |
79 | mov dword[d_temp3], 0xFF7E23 |
80 | 80 | ||
81 | call hwm_init ; Èíèöèàëèçèðóåì ÷èï ìîíèòîðèíãà |
81 | call hwm_init ; Èíèöèàëèçèðóåì ÷èï ìîíèòîðèíãà |
82 | 82 | ||
83 | jmp draw_window |
83 | jmp draw_window |
84 | ;--- Wait & translate event ------------------------------------------ |
84 | ;--- Wait & translate event ------------------------------------------ |
85 | wait_for_event: |
85 | wait_for_event: |
86 | mov byte[diag_add_v], 0 ; äîáàâëÿåì äàííûå ê ãðàôèêó òîëüêî ïî òàéìåðó |
86 | mov byte[diag_add_v], 0 ; äîáàâëÿåì äàííûå ê ãðàôèêó òîëüêî ïî òàéìåðó |
87 | mov ebx, [update_time] |
87 | mov ebx, [update_time] |
88 | mov eax, 23 |
88 | mov eax, 23 |
89 | int 0x40 |
89 | int 0x40 |
90 | test eax, eax |
90 | test eax, eax |
91 | jnz @f |
91 | jnz @f |
92 | inc byte [diag_add_v] |
92 | inc byte [diag_add_v] |
93 | inc eax ; ïåðåðèñóåì îêíî (eax := 1) |
93 | inc eax ; ïåðåðèñóåì îêíî (eax := 1) |
94 | @@: dec eax ; redraw request ? |
94 | @@: dec eax ; redraw request ? |
95 | jz draw_window |
95 | jz draw_window |
96 | dec eax ; key in buffer ? |
96 | dec eax ; key in buffer ? |
97 | jz key |
97 | jz key |
98 | dec eax ; button in buffer ? |
98 | dec eax ; button in buffer ? |
99 | jz button |
99 | jz button |
100 | jmp wait_for_event |
100 | jmp wait_for_event |
101 | ;--- Key pressed ----------------------------------------------------- |
101 | ;--- Key pressed ----------------------------------------------------- |
102 | key: |
102 | key: |
103 | mov eax, 2 |
103 | mov eax, 2 |
104 | int 0x40 |
104 | int 0x40 |
105 | cmp ah, 27 ; Esc - çàâåðøåíèå ðàáîòû |
105 | cmp ah, 27 ; Esc - çàâåðøåíèå ðàáîòû |
106 | je exit |
106 | je exit |
107 | jmp wait_for_event |
107 | jmp wait_for_event |
108 | ;--- Button down ----------------------------------------------------- |
108 | ;--- Button down ----------------------------------------------------- |
109 | button: |
109 | button: |
110 | mov eax, 17 ; get id |
110 | mov eax, 17 ; get id |
111 | int 0x40 |
111 | int 0x40 |
112 | cmp ah, 1 ; button id == 1 ? |
112 | cmp ah, 1 ; button id == 1 ? |
113 | jne noexit |
113 | jne noexit |
114 | exit: cmp byte[test_id], 0 |
114 | exit: cmp byte[test_id], 0 |
115 | je @f |
115 | je @f |
116 | call stop_test |
116 | call stop_test |
117 | @@: mov eax, -1 ; close this program |
117 | @@: mov eax, -1 ; close this program |
118 | int 0x40 |
118 | int 0x40 |
119 | noexit: |
119 | noexit: |
120 | ; êíîïêè âêëàäîê (2 .. 5) |
120 | ; êíîïêè âêëàäîê (2 .. 5) |
121 | cmp ah, 5 |
121 | cmp ah, 5 |
122 | jg no_tabs |
122 | jg no_tabs |
123 | mov byte[act_tab], ah |
123 | mov byte[act_tab], ah |
124 | jmp draw_window |
124 | jmp draw_window |
125 | no_tabs: |
125 | no_tabs: |
126 | ; êíîïêè çàïóñêà òåñòâî (6 .. 10) |
126 | ; êíîïêè çàïóñêà òåñòâî (6 .. 10) |
127 | cmp ah, 10 |
127 | cmp ah, 10 |
128 | jg no_test_bt |
128 | jg no_test_bt |
129 | ; åñëè íåò çàïóùåíûõ òåñòîâ - çàïóñêàåì âûáðàííûé |
129 | ; åñëè íåò çàïóùåíûõ òåñòîâ - çàïóñêàåì âûáðàííûé |
130 | cmp byte[test_id], 0 |
130 | cmp byte[test_id], 0 |
131 | je run_test |
131 | je run_test |
132 | ; åñëè êíîïêà àêòèâíîãî òåñòà - îñòàíàâëèâàåì òåñò, èíà÷å íè÷åãî íå äåëàåì |
132 | ; åñëè êíîïêà àêòèâíîãî òåñòà - îñòàíàâëèâàåì òåñò, èíà÷å íè÷åãî íå äåëàåì |
133 | cmp [test_id], ah |
133 | cmp [test_id], ah |
134 | jne wait_for_event |
134 | jne wait_for_event |
135 | call stop_test |
135 | call stop_test |
136 | jmp draw_window |
136 | jmp draw_window |
137 | 137 | ||
138 | tsts: dd p5, p6, k6, k7 |
138 | tsts: dd p5, p6, k6, k7 |
139 | run_test: |
139 | run_test: |
140 | push eax |
140 | push eax |
141 | movzx ecx, ah |
141 | movzx ecx, ah |
142 | mov ecx, [tsts + (ecx * 4) - (6 * 4)] |
142 | mov ecx, [tsts + (ecx * 4) - (6 * 4)] |
143 | rtst: mov eax, 51 |
143 | rtst: mov eax, 51 |
144 | mov edx, stp |
144 | mov edx, stp |
145 | mov ebx, 1 |
145 | mov ebx, 1 |
146 | int 0x40 |
146 | int 0x40 |
147 | cmp eax, 0xFFFFFFF0 ; -16 |
147 | cmp eax, 0xFFFFFFF0 ; -16 |
148 | je wait_for_event ; <-- îøèáêà çàïóñêà òåñòà, ÏÅÐÅÏÈÑÀÒÜ |
148 | je wait_for_event ; <-- îøèáêà çàïóñêà òåñòà, ÏÅÐÅÏÈÑÀÒÜ |
149 | mov [test_pid], eax |
149 | mov [test_pid], eax |
150 | pop eax |
150 | pop eax |
151 | mov byte [test_id], ah |
151 | mov byte [test_id], ah |
152 | jmp draw_window |
152 | jmp draw_window |
153 | ;------------------------- |
153 | ;------------------------- |
154 | ; êíîïêè èçìåíåíèÿ âðåìåíè îáíîâëåíèÿ |
154 | ; êíîïêè èçìåíåíèÿ âðåìåíè îáíîâëåíèÿ |
155 | no_test_bt: |
155 | no_test_bt: |
156 | cmp ah, 11 |
156 | cmp ah, 11 |
157 | jne no_ut_inc |
157 | jne no_ut_inc |
158 | add dword[update_time], 10 |
158 | add dword[update_time], 10 |
159 | jmp draw_window |
159 | jmp draw_window |
160 | no_ut_inc: |
160 | no_ut_inc: |
161 | cmp ah, 12 |
161 | cmp ah, 12 |
162 | jne no_ut_dec |
162 | jne no_ut_dec |
163 | cmp dword[update_time], 10 |
163 | cmp dword[update_time], 10 |
164 | jng wait_for_event |
164 | jng wait_for_event |
165 | sub dword[update_time], 10 |
165 | sub dword[update_time], 10 |
166 | jmp draw_window |
166 | jmp draw_window |
167 | no_ut_dec: |
167 | no_ut_dec: |
168 | ;------------------------- |
168 | ;------------------------- |
169 | ; êíîïêè èçìåíåíèÿ öâåòà ãðàôèêîâ (13..17) |
169 | ; êíîïêè èçìåíåíèÿ öâåòà ãðàôèêîâ (13..17) |
170 | cmp ah, 17 |
170 | cmp ah, 17 |
171 | jg no_change_color |
171 | jg no_change_color |
172 | sub ah, 13 |
172 | sub ah, 13 |
173 | movzx ecx, ah |
173 | movzx ecx, ah |
174 | mov esi, [d_colors + ecx * 4] |
174 | mov esi, [d_colors + ecx * 4] |
175 | mov eax, [esi] |
175 | mov eax, [esi] |
176 | mov ecx, (colors_end - colors) / 4 ; êîëè÷åñòâî öâåòîâ |
176 | mov ecx, (colors_end - colors) / 4 ; êîëè÷åñòâî öâåòîâ |
177 | @@: dec ecx |
177 | @@: dec ecx |
178 | cmp eax, [colors + ecx * 4] |
178 | cmp eax, [colors + ecx * 4] |
179 | jne @b |
179 | jne @b |
180 | mov ebx, [colors + ecx * 4 - 4] |
180 | mov ebx, [colors + ecx * 4 - 4] |
181 | mov [esi], ebx |
181 | mov [esi], ebx |
182 | jmp draw_window |
182 | jmp draw_window |
183 | no_change_color: |
183 | no_change_color: |
184 | jmp wait_for_event |
184 | jmp wait_for_event |
185 | ;--------------------------------------------------------------------- |
185 | ;--------------------------------------------------------------------- |
186 | draw_window: |
186 | draw_window: |
187 | mov eax,12 |
187 | mov eax,12 |
188 | mov ebx,1 |
188 | mov ebx,1 |
189 | int 0x40 |
189 | int 0x40 |
190 | ; Ñîçäà¸ì îêíî |
190 | ; Ñîçäà¸ì îêíî |
191 | xor eax, eax |
191 | xor eax, eax |
192 | mov ebx, 300 * 65536 + 309 |
192 | mov ebx, 300 * 65536 + 309 |
193 | mov ecx, 150 * 65536 + 450 |
193 | mov ecx, 150 * 65536 + 450 |
194 | mov edx, tcol + 0x13000000 ; color of work area RRGGBB,8->color |
194 | mov edx, tcol + 0x14000000 ; color of work area RRGGBB,8->color |
195 | mov edi, title ; color of frames RRGGBB |
195 | mov edi, title ; color of frames RRGGBB |
196 | int 0x40 |
196 | int 0x40 |
197 | ; Ñîçäà¸ì ðàìêó ãðàôèêà |
197 | ; Ñîçäà¸ì ðàìêó ãðàôèêà |
198 | mov eax, 13 |
198 | mov eax, 13 |
199 | mov ebx, 10 * 65536 + 290 |
199 | mov ebx, 10 * 65536 + 290 |
200 | mov ecx, 138 * 65536 + 105 |
200 | mov ecx, 138 * 65536 + 105 |
201 | mov edx, atcol |
201 | mov edx, atcol |
202 | int 0x40 |
202 | int 0x40 |
203 | mov ebx, 12 * 65536 + 286 |
203 | mov ebx, 12 * 65536 + 286 |
204 | mov ecx, 140 * 65536 + 101 |
204 | mov ecx, 140 * 65536 + 101 |
205 | mov edx, tcol |
205 | mov edx, tcol |
206 | int 0x40 |
206 | int 0x40 |
207 | mov eax, 38 |
207 | mov eax, 38 |
208 | mov edx, atcol |
208 | mov edx, atcol |
209 | mov ebx, 12 * 65536 + 286 + 12 |
209 | mov ebx, 12 * 65536 + 286 + 12 |
210 | mov ecx, 140 * 65536 + 140 |
210 | mov ecx, 140 * 65536 + 140 |
211 | @@: add ecx, 10 * 65536 + 10 |
211 | @@: add ecx, 10 * 65536 + 10 |
212 | int 0x40 |
212 | int 0x40 |
213 | cmp cx, 230 ; ïðèâÿçàíî ê êîîðäèíàòàì îêíà |
213 | cmp cx, 230 ; ïðèâÿçàíî ê êîîðäèíàòàì îêíà |
214 | jl @b |
214 | jl @b |
215 | 215 | ||
216 | ; Ïèøèì íàçâàíèÿ ïàðàìåòðîâ (Cpu load, temper, etc...) |
216 | ; Ïèøèì íàçâàíèÿ ïàðàìåòðîâ (Cpu load, temper, etc...) |
217 | mov edx, msgs_mon |
217 | mov edx, msgs_mon |
218 | mov ebx, 17 * 65536 + 30 |
218 | mov ebx, 17 * 65536 + 30 |
219 | call show_text |
219 | call show_text |
220 | 220 | ||
221 | mov edx, msgs_mon2 |
221 | mov edx, msgs_mon2 |
222 | mov ebx, 156 * 65536 + 30 |
222 | mov ebx, 156 * 65536 + 30 |
223 | call show_text |
223 | call show_text |
224 | 224 | ||
225 | ; Ðèñóåì êíîïêè ñìåíû öâåòà |
225 | ; Ðèñóåì êíîïêè ñìåíû öâåòà |
226 | mov eax, 8 |
226 | mov eax, 8 |
227 | mov ebx, 112 * 65536 + 5 |
227 | mov ebx, 112 * 65536 + 5 |
228 | mov ecx, 30 * 65536 + 6 |
228 | mov ecx, 30 * 65536 + 6 |
229 | mov edx, 13 |
229 | mov edx, 13 |
230 | @@: mov esi, [d_colors - 13 * 4 + edx * 4] |
230 | @@: mov esi, [d_colors - 13 * 4 + edx * 4] |
231 | mov esi, [esi] |
231 | mov esi, [esi] |
232 | int 0x40 |
232 | int 0x40 |
233 | add ecx, 10 * 65536 |
233 | add ecx, 10 * 65536 |
234 | inc edx |
234 | inc edx |
235 | cmp edx, 13 + 5 ; 5 êíîïîê |
235 | cmp edx, 13 + 5 ; 5 êíîïîê |
236 | jne @b |
236 | jne @b |
237 | 237 | ||
238 | ; Ïèøèì çàãðóçêó ïðîöåññîðà |
238 | ; Ïèøèì çàãðóçêó ïðîöåññîðà |
239 | call cpu_usage |
239 | call cpu_usage |
240 | ;--- äîáàâëÿåì íà ãðàôèê --- |
240 | ;--- äîáàâëÿåì íà ãðàôèê --- |
241 | mov esi, d_cpu_load |
241 | mov esi, d_cpu_load |
242 | call d_add |
242 | call d_add |
243 | call d_show |
243 | call d_show |
244 | ;--------------------------- |
244 | ;--------------------------- |
245 | movzx ecx, al |
245 | movzx ecx, al |
246 | mov eax, 47 |
246 | mov eax, 47 |
247 | mov edx, 121 * 65536 + 30 |
247 | mov edx, 121 * 65536 + 30 |
248 | xor esi, esi |
248 | xor esi, esi |
249 | call digit_len |
249 | call digit_len |
250 | int 0x40 |
250 | int 0x40 |
251 | 251 | ||
252 | ; Ïèøèì èñïîëüçóåìóþ ïàìÿòü |
252 | ; Ïèøèì èñïîëüçóåìóþ ïàìÿòü |
253 | call mem_usage |
253 | call mem_usage |
254 | ;--- äîáàâëÿåì íà ãðàôèê --- |
254 | ;--- äîáàâëÿåì íà ãðàôèê --- |
255 | mov esi, d_mem_usage |
255 | mov esi, d_mem_usage |
256 | call d_add |
256 | call d_add |
257 | call d_show |
257 | call d_show |
258 | ;--------------------------- |
258 | ;--------------------------- |
259 | movzx ecx, al |
259 | movzx ecx, al |
260 | mov eax, 47 |
260 | mov eax, 47 |
261 | mov edx, 121 * 65536 + 40 |
261 | mov edx, 121 * 65536 + 40 |
262 | xor esi, esi |
262 | xor esi, esi |
263 | call digit_len |
263 | call digit_len |
264 | int 0x40 |
264 | int 0x40 |
265 | 265 | ||
266 | cmp byte[hwm_enable], 0 |
266 | cmp byte[hwm_enable], 0 |
267 | jne show_mon |
267 | jne show_mon |
268 | ; Íåò äàò÷èêîâ - ïèøåì NO |
268 | ; Íåò äàò÷èêîâ - ïèøåì NO |
269 | mov ecx, 8 ;<- êîëè÷åñòâî ïàðàìåòðîâ |
269 | mov ecx, 8 ;<- êîëè÷åñòâî ïàðàìåòðîâ |
270 | mov eax, 4 |
270 | mov eax, 4 |
271 | mov ebx, 121 * 65536 + 50 |
271 | mov ebx, 121 * 65536 + 50 |
272 | mov edx, msg_no |
272 | mov edx, msg_no |
273 | mov esi, 3 |
273 | mov esi, 3 |
274 | @@: int 0x40 |
274 | @@: int 0x40 |
275 | add ebx, 10 |
275 | add ebx, 10 |
276 | loop @b |
276 | loop @b |
277 | 277 | ||
278 | mov ecx, 7 ;<- êîëè÷åñòâî ïàðàìåòðîâ |
278 | mov ecx, 7 ;<- êîëè÷åñòâî ïàðàìåòðîâ |
279 | mov ebx, 260 * 65536 + 30 |
279 | mov ebx, 260 * 65536 + 30 |
280 | @@: int 0x40 |
280 | @@: int 0x40 |
281 | add ebx, 10 |
281 | add ebx, 10 |
282 | loop @b |
282 | loop @b |
283 | 283 | ||
284 | jmp no_monitor |
284 | jmp no_monitor |
285 | show_mon: |
285 | show_mon: |
286 | ;Åñòü äàò÷èêè ïèøèì èíôó |
286 | ;Åñòü äàò÷èêè ïèøèì èíôó |
287 | call hwm_get_params |
287 | call hwm_get_params |
288 | ;--------------------------- |
288 | ;--------------------------- |
289 | ; Òåìïåðàòóðó |
289 | ; Òåìïåðàòóðó |
290 | mov ecx, 3 |
290 | mov ecx, 3 |
291 | mov esi, hwm_temps |
291 | mov esi, hwm_temps |
292 | mov edx, 121 * 65536 + 50 |
292 | mov edx, 121 * 65536 + 50 |
293 | xor eax, eax |
293 | xor eax, eax |
294 | sh_temp:push ecx |
294 | sh_temp:push ecx |
295 | lodsw |
295 | lodsw |
296 | push esi |
296 | push esi |
297 | ; ðåàêöèÿ íà èçìåíåíèÿ |
297 | ; ðåàêöèÿ íà èçìåíåíèÿ |
298 | xor esi, esi |
298 | xor esi, esi |
299 | cmp [old_t1 + ecx * 4 - 4], eax |
299 | cmp [old_t1 + ecx * 4 - 4], eax |
300 | je @f |
300 | je @f |
301 | mov [old_t1 + ecx * 4 - 4], eax |
301 | mov [old_t1 + ecx * 4 - 4], eax |
302 | mov esi, val_mod |
302 | mov esi, val_mod |
303 | @@: movzx ecx, al |
303 | @@: movzx ecx, al |
304 | push eax |
304 | push eax |
305 | mov eax, 47 |
305 | mov eax, 47 |
306 | mov ebx, 0x20000 |
306 | mov ebx, 0x20000 |
307 | int 0x40 |
307 | int 0x40 |
308 | pop eax |
308 | pop eax |
309 | mov cl, ah |
309 | mov cl, ah |
310 | mov eax, 47 |
310 | mov eax, 47 |
311 | mov ebx, 0x10000 |
311 | mov ebx, 0x10000 |
312 | add edx, 15 * 65536 |
312 | add edx, 15 * 65536 |
313 | int 0x40 |
313 | int 0x40 |
314 | sub edx, 15 * 65536 - 10 |
314 | sub edx, 15 * 65536 - 10 |
315 | pop esi |
315 | pop esi |
316 | pop ecx |
316 | pop ecx |
317 | loop sh_temp |
317 | loop sh_temp |
318 | ;;--- äîáàâëÿåì íà ãðàôèê temp1 --- |
318 | ;;--- äîáàâëÿåì íà ãðàôèê temp1 --- |
319 | movzx eax, word[hwm_temps] |
319 | movzx eax, word[hwm_temps] |
320 | mov esi, d_temp1 |
320 | mov esi, d_temp1 |
321 | call d_add |
321 | call d_add |
322 | call d_show |
322 | call d_show |
323 | ;;--- äîáàâëÿåì íà ãðàôèê temp2 --- |
323 | ;;--- äîáàâëÿåì íà ãðàôèê temp2 --- |
324 | movzx eax, word[hwm_temps + 2] |
324 | movzx eax, word[hwm_temps + 2] |
325 | mov esi, d_temp2 |
325 | mov esi, d_temp2 |
326 | call d_add |
326 | call d_add |
327 | call d_show |
327 | call d_show |
328 | ;;--- äîáàâëÿåì íà ãðàôèê temp3 --- |
328 | ;;--- äîáàâëÿåì íà ãðàôèê temp3 --- |
329 | movzx eax, word[hwm_temps + 4] |
329 | movzx eax, word[hwm_temps + 4] |
330 | mov esi, d_temp3 |
330 | mov esi, d_temp3 |
331 | call d_add |
331 | call d_add |
332 | call d_show |
332 | call d_show |
333 | 333 | ||
334 | ;--------------------------- |
334 | ;--------------------------- |
335 | ; Ñêîðîñòè âðàøåíèÿ âåíòèëåé |
335 | ; Ñêîðîñòè âðàøåíèÿ âåíòèëåé |
336 | mov ecx, 5 |
336 | mov ecx, 5 |
337 | mov esi, hwm_rpms |
337 | mov esi, hwm_rpms |
338 | mov edx, 121 * 65536 + 80 |
338 | mov edx, 121 * 65536 + 80 |
339 | sh_fan: push ecx |
339 | sh_fan: push ecx |
340 | lodsd |
340 | lodsd |
341 | push esi |
341 | push esi |
342 | ;ðåàêöèÿ íà èçìåíåíèÿ |
342 | ;ðåàêöèÿ íà èçìåíåíèÿ |
343 | xor esi, esi |
343 | xor esi, esi |
344 | cmp [old_f1 + ecx * 4 - 4], eax |
344 | cmp [old_f1 + ecx * 4 - 4], eax |
345 | je @f |
345 | je @f |
346 | mov [old_f1 + ecx * 4 - 4], eax |
346 | mov [old_f1 + ecx * 4 - 4], eax |
347 | mov esi, val_mod |
347 | mov esi, val_mod |
348 | @@: mov ecx, eax |
348 | @@: mov ecx, eax |
349 | call digit_len |
349 | call digit_len |
350 | mov eax, 47 |
350 | mov eax, 47 |
351 | int 0x40 |
351 | int 0x40 |
352 | add edx, 10 |
352 | add edx, 10 |
353 | pop esi |
353 | pop esi |
354 | pop ecx |
354 | pop ecx |
355 | loop sh_fan |
355 | loop sh_fan |
356 | 356 | ||
357 | ;--------------------------- |
357 | ;--------------------------- |
358 | ; Íàïðóãè |
358 | ; Íàïðóãè |
359 | mov esi, hwm_voltages |
359 | mov esi, hwm_voltages |
360 | mov edi, old_volts |
360 | mov edi, old_volts |
361 | mov ecx, 7 |
361 | mov ecx, 7 |
362 | mov ebx, 260 * 65536 + 30 |
362 | mov ebx, 260 * 65536 + 30 |
363 | mov edx, Data_String |
363 | mov edx, Data_String |
364 | volt_nxt: |
364 | volt_nxt: |
365 | push ecx |
365 | push ecx |
366 | push esi |
366 | push esi |
367 | call ftoa |
367 | call ftoa |
368 | ;ðåàêöèÿ íà èçìåíåíèÿ |
368 | ;ðåàêöèÿ íà èçìåíåíèÿ |
369 | xor ecx, ecx |
369 | xor ecx, ecx |
370 | fld dword [esi] |
370 | fld dword [esi] |
371 | fsub dword [edi] |
371 | fsub dword [edi] |
372 | fabs |
372 | fabs |
373 | 373 | ||
374 | ; fcomp dword [c_eps] ; bug in MeOsEmul |
374 | ; fcomp dword [c_eps] ; bug in MeOsEmul |
375 | ; fstsw ax |
375 | ; fstsw ax |
376 | fcom dword [c_eps] ; 0xBADCODE |
376 | fcom dword [c_eps] ; 0xBADCODE |
377 | fstsw ax |
377 | fstsw ax |
378 | finit |
378 | finit |
379 | 379 | ||
380 | sahf |
380 | sahf |
381 | jc @f |
381 | jc @f |
382 | mov ecx, val_mod |
382 | mov ecx, val_mod |
383 | @@: mov esi, Data_String ; ñ÷èòàåì êîë-âî ñèìâîëîâ |
383 | @@: mov esi, Data_String ; ñ÷èòàåì êîë-âî ñèìâîëîâ |
384 | @@: lodsb |
384 | @@: lodsb |
385 | test al, al |
385 | test al, al |
386 | jnz @b |
386 | jnz @b |
387 | sub esi, Data_String |
387 | sub esi, Data_String |
388 | 388 | ||
389 | mov eax, 4 |
389 | mov eax, 4 |
390 | int 0x40 |
390 | int 0x40 |
391 | add ebx, 10 |
391 | add ebx, 10 |
392 | pop esi |
392 | pop esi |
393 | pop ecx |
393 | pop ecx |
394 | movsd |
394 | movsd |
395 | loop volt_nxt |
395 | loop volt_nxt |
396 | 396 | ||
397 | no_monitor: |
397 | no_monitor: |
398 | ;--------------------------- |
398 | ;--------------------------- |
399 | ; Ñîçäà¸ì êíîïêè âêëàäîê |
399 | ; Ñîçäà¸ì êíîïêè âêëàäîê |
400 | mov edi, 250 * 65536 + 25 |
400 | mov edi, 250 * 65536 + 25 |
401 | mov ecx, 4 |
401 | mov ecx, 4 |
402 | mov eax, 8 |
402 | mov eax, 8 |
403 | mov ebx, 10 * 65536 + 70 |
403 | mov ebx, 10 * 65536 + 70 |
404 | mov edx, 2 |
404 | mov edx, 2 |
405 | n_bt: push ecx |
405 | n_bt: push ecx |
406 | mov ecx, edi |
406 | mov ecx, edi |
407 | mov esi, tcol |
407 | mov esi, tcol |
408 | cmp byte [act_tab], dl |
408 | cmp byte [act_tab], dl |
409 | jne na1 |
409 | jne na1 |
410 | mov esi, atcol |
410 | mov esi, atcol |
411 | na1: int 0x40 |
411 | na1: int 0x40 |
412 | inc edx |
412 | inc edx |
413 | add ebx, 73 * 65536 |
413 | add ebx, 73 * 65536 |
414 | pop ecx |
414 | pop ecx |
415 | loop n_bt |
415 | loop n_bt |
416 | ; Ïèøèì íàçâàíèÿ âêëàäîê |
416 | ; Ïèøèì íàçâàíèÿ âêëàäîê |
417 | mov eax, 4 |
417 | mov eax, 4 |
418 | mov ebx, 35 * 65536 + 260 |
418 | mov ebx, 35 * 65536 + 260 |
419 | mov edx, tab_lab |
419 | mov edx, tab_lab |
420 | mov ecx, 0x10000000 |
420 | mov ecx, 0x10000000 |
421 | mov esi, 39 |
421 | mov esi, 39 |
422 | int 0x40 |
422 | int 0x40 |
423 | ; ñîçäà¸ì ðàìêó âíèçó ýêðàíà |
423 | ; ñîçäà¸ì ðàìêó âíèçó ýêðàíà |
424 | mov eax, 13 |
424 | mov eax, 13 |
425 | mov ebx, 10 * 65536 + 290 |
425 | mov ebx, 10 * 65536 + 290 |
426 | mov ecx, 275 * 65536 + 160 |
426 | mov ecx, 275 * 65536 + 160 |
427 | mov edx, atcol |
427 | mov edx, atcol |
428 | int 0x40 |
428 | int 0x40 |
429 | mov ebx, 12 * 65536 + 286 |
429 | mov ebx, 12 * 65536 + 286 |
430 | mov ecx, 277 * 65536 + 156 |
430 | mov ecx, 277 * 65536 + 156 |
431 | mov edx, tcol |
431 | mov edx, tcol |
432 | int 0x40 |
432 | int 0x40 |
433 | ; ðèñóåì âûáðàííóþ âêëàäêó |
433 | ; ðèñóåì âûáðàííóþ âêëàäêó |
434 | mov al, [act_tab] |
434 | mov al, [act_tab] |
435 | cmp al, 2 |
435 | cmp al, 2 |
436 | je info_tab |
436 | je info_tab |
437 | cmp al, 3 |
437 | cmp al, 3 |
438 | je test_tab |
438 | je test_tab |
439 | cmp al, 4 |
439 | cmp al, 4 |
440 | je config_tab |
440 | je config_tab |
441 | jmp about_tab |
441 | jmp about_tab |
442 | end_drow_tab: |
442 | end_drow_tab: |
443 | mov eax, 12 |
443 | mov eax, 12 |
444 | mov ebx, 2 |
444 | mov ebx, 2 |
445 | int 0x40 |
445 | int 0x40 |
446 | jmp wait_for_event |
446 | jmp wait_for_event |
447 | ;--- Drow Info tab --------------- |
447 | ;--- Drow Info tab --------------- |
448 | info_tab: |
448 | info_tab: |
449 | include "tab_info.inc" |
449 | include "tab_info.inc" |
450 | ;--- Drow test tab --------------- |
450 | ;--- Drow test tab --------------- |
451 | test_tab: |
451 | test_tab: |
452 | include "tab_test.inc" |
452 | include "tab_test.inc" |
453 | ;--- Drow Config tab ------------- |
453 | ;--- Drow Config tab ------------- |
454 | config_tab: |
454 | config_tab: |
455 | include "tab_conf.inc" |
455 | include "tab_conf.inc" |
456 | ;--- Drow About tab -------------- |
456 | ;--- Drow About tab -------------- |
457 | about_tab: |
457 | about_tab: |
458 | include "tab_about.inc" |
458 | include "tab_about.inc" |
459 | ;--------------------------------------------------------------------- |
459 | ;--------------------------------------------------------------------- |
460 | include "system.inc" |
460 | include "system.inc" |
461 | include "hwm.inc" |
461 | include "hwm.inc" |
462 | include "diag.inc" |
462 | include "diag.inc" |
463 | 463 | ||
464 | 464 | ||
465 | DATA |
465 | DATA |
466 | act_tab db 2 ; Íîìåð àêòèâíîé âêëàäêè |
466 | act_tab db 2 ; Íîìåð àêòèâíîé âêëàäêè |
467 | tab_lab db 'Info Tests Configs About' |
467 | tab_lab db 'Info Tests Configs About' |
468 | title db 'Ghost Monitor v0.4 [23/05/07]',0 |
468 | title db 'Ghost Monitor v0.4 [23/05/07]',0 |
469 | 469 | ||
470 | msgs_mon mls \ |
470 | msgs_mon mls \ |
471 | 'CPU Load (%)',\ |
471 | 'CPU Load (%)',\ |
472 | 'Mem Usage(%)',\ |
472 | 'Mem Usage(%)',\ |
473 | 'Temp1',\ |
473 | 'Temp1',\ |
474 | 'Temp2',\ |
474 | 'Temp2',\ |
475 | 'Temp3',\ |
475 | 'Temp3',\ |
476 | 'Fan1',\ |
476 | 'Fan1',\ |
477 | 'Fan2',\ |
477 | 'Fan2',\ |
478 | 'Fan3',\ |
478 | 'Fan3',\ |
479 | 'Fan4',\ |
479 | 'Fan4',\ |
480 | 'Fan5' |
480 | 'Fan5' |
481 | 481 | ||
482 | msgs_mon2 mls \ |
482 | msgs_mon2 mls \ |
483 | 'Vcore',\ |
483 | 'Vcore',\ |
484 | 'AGP',\ |
484 | 'AGP',\ |
485 | '+3.3V',\ |
485 | '+3.3V',\ |
486 | 'AVcc (+5V)',\ |
486 | 'AVcc (+5V)',\ |
487 | '+12V',\ |
487 | '+12V',\ |
488 | '-12V',\ |
488 | '-12V',\ |
489 | '-5V' |
489 | '-5V' |
490 | 490 | ||
491 | msg_yes db 'Yes' |
491 | msg_yes db 'Yes' |
492 | msg_no db 'N/A' |
492 | msg_no db 'N/A' |
493 | 493 | ||
494 | update_time dd 300 ; ïåðèîä îáíîâëåíèÿ â ñîòûõ äîëÿõ ñåêóíäû |
494 | update_time dd 300 ; ïåðèîä îáíîâëåíèÿ â ñîòûõ äîëÿõ ñåêóíäû |
495 | d_colors dd d_cpu_load, d_mem_usage, d_temp1, d_temp2, d_temp3 |
495 | d_colors dd d_cpu_load, d_mem_usage, d_temp1, d_temp2, d_temp3 |
496 | c_eps dd 0.01 |
496 | c_eps dd 0.01 |
497 | 497 | ||
498 | ; Öâåòà ãðàôèêîâ |
498 | ; Öâåòà ãðàôèêîâ |
499 | colors: dd 0xff0000, 0xff00, 0xff, 0xffffff, tcol, 0xFF7E23, 0x8BA169, 0xff0000 ; ïåðâûé è ïîñëåäíèé ðàâíû |
499 | colors: dd 0xff0000, 0xff00, 0xff, 0xffffff, tcol, 0xFF7E23, 0x8BA169, 0xff0000 ; ïåðâûé è ïîñëåäíèé ðàâíû |
500 | colors_end: |
500 | colors_end: |
501 | ;--------------------------------------------------------------------- |
501 | ;--------------------------------------------------------------------- |
502 | UDATA |
502 | UDATA |
503 | 503 | ||
504 | test_pid dd ? ; åñëè test_id == 0 - íå èìååò ñìûñëà |
504 | test_pid dd ? ; åñëè test_id == 0 - íå èìååò ñìûñëà |
505 | test_id db ? ; 0 - òåñò íå çàïóøåí (ñîîòâåòñòâóåò ¹ êíîïêè 6..10) |
505 | test_id db ? ; 0 - òåñò íå çàïóøåí (ñîîòâåòñòâóåò ¹ êíîïêè 6..10) |
506 | diag_add_v db ? ; 0 - íå äîáàâëÿòü äàííûå íà ãðàôèê, !0 - äîáàâëÿòü |
506 | diag_add_v db ? ; 0 - íå äîáàâëÿòü äàííûå íà ãðàôèê, !0 - äîáàâëÿòü |
507 | 507 | ||
508 | Vendor: times 12 db ? |
508 | Vendor: times 12 db ? |
509 | CPU_fam: db ? |
509 | CPU_fam: db ? |
510 | CPU_mod: db ? |
510 | CPU_mod: db ? |
511 | CPU_type: db ? |
511 | CPU_type: db ? |
512 | CPU_mmx: db ? |
512 | CPU_mmx: db ? |
513 | 513 | ||
514 | ; Äëÿ ðåàêöèè íà èçìåíåíèÿ |
514 | ; Äëÿ ðåàêöèè íà èçìåíåíèÿ |
515 | old_t1: dd ? ; ïîñëåäíåå çíà÷åíèå temp1 |
515 | old_t1: dd ? ; ïîñëåäíåå çíà÷åíèå temp1 |
516 | old_t2: dd ? ; ... |
516 | old_t2: dd ? ; ... |
517 | old_t3: dd ? |
517 | old_t3: dd ? |
518 | old_f1: dd ? |
518 | old_f1: dd ? |
519 | old_f2: dd ? |
519 | old_f2: dd ? |
520 | old_f3: dd ? |
520 | old_f3: dd ? |
521 | old_volts: times 7 dd ? |
521 | old_volts: times 7 dd ? |
522 | 522 | ||
523 | ; Ãðôèêè |
523 | ; Ãðôèêè |
524 | diag_beg: |
524 | diag_beg: |
525 | d_cpu_load: dd ? |
525 | d_cpu_load: dd ? |
526 | times 286 db ? |
526 | times 286 db ? |
527 | 527 | ||
528 | d_mem_usage: dd ? |
528 | d_mem_usage: dd ? |
529 | times 286 db ? |
529 | times 286 db ? |
530 | 530 | ||
531 | d_temp1: dd ? |
531 | d_temp1: dd ? |
532 | times 286 db ? |
532 | times 286 db ? |
533 | 533 | ||
534 | d_temp2: dd ? |
534 | d_temp2: dd ? |
535 | times 286 db ? |
535 | times 286 db ? |
536 | 536 | ||
537 | d_temp3: dd ? |
537 | d_temp3: dd ? |
538 | times 286 db ? |
538 | times 286 db ? |
539 | diag_end: |
539 | diag_end: |
540 | 540 | ||
541 | ; --- ñòåê òåñòà, âîèçáåæàíèå ãëþêîâ íå ïåðåíîñèòü â äðóãîå ìåñòî ---- |
541 | ; --- ñòåê òåñòà, âîèçáåæàíèå ãëþêîâ íå ïåðåíîñèòü â äðóãîå ìåñòî ---- |
542 | th_stack: times 1024 db ? |
542 | th_stack: times 1024 db ? |
543 | stp: |
543 | stp: |
544 | ;--------------------------------------------------------------------- |
544 | ;--------------------------------------------------------------------- |
545 | MEOS_APP_END->->-->--> |
545 | MEOS_APP_END->->-->--> |