Subversion Repositories Kolibri OS

Rev

Rev 5950 | Rev 7134 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5950 Rev 6353
Line 1... Line 1...
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
;
Line 14... Line 14...
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	- поддержка диаграм
Line 20... Line 20...
20
;	tab_*.inc	- ïðîöåäóðû îòðèñîâêè ñîîòâåòñòâóþøèõ âêëàäîê
20
;	tab_*.inc	- процедуры отрисовки соответствуюших вкладок
21
 
21
 
22
 
22
 
23
; Èäåíòèôèêàòîðû êíîïîê :
23
; Identifier buttons :
24
;	01 - Exit
24
;	01 - Exit
25
;	02 - Info tab
25
;	02 - Info tab
Line 31... Line 31...
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 - Color Changing buttons CPU_load, Mem_usage, Temp1, Temp2, Temp3
Line 37... Line 37...
37
 
37
 
38
include 'lang.inc'
38
include 'lang.inc'
39
include 'config.inc'
39
include 'config.inc'
Line 40... Line 40...
40
include 'macros.inc'
40
include 'macros.inc'
41
 
41
 
42
tcol	equ	0x5080d0
42
tcol	equ	0x5080d0
Line 43... Line 43...
43
atcol	equ	0x4070c0
43
atcol	equ	0x4070c0
44
val_mod equ	0x3090
44
val_mod equ	0x3090
45
 
45
 
46
MEOS_APP_START
46
MEOS_APP_START
47
include "tests.inc"	; <-- Ìíîãî âûðàâíèâàíèé, ëó÷øå çäåñü
47
include "tests.inc"	; <-- Много выравниваний, лучше здесь
48
CODE
48
CODE
49
;--- Init ------------------------------------------------------------
49
;--- Init ------------------------------------------------------------
50
	; Î÷èùàåì íåèíèöèàëèçèðîâàííûå äàííûå
50
	; Очищаем неинициализированные данные
51
	mov	ecx, __memory - __udata
51
	mov	ecx, __memory - __udata
Line 52... Line 52...
52
	mov	edi, __udata
52
	mov	edi, __udata
53
	xor	eax, eax
53
	xor	eax, eax
54
	rep	stosb
54
	rep	stosb
55
 
55
 
56
	xor	eax, eax
56
	xor	eax, eax
57
	cpuid					; Óçíà¸ì ïðîèçâîäèòåëÿ ïðîöà
57
	cpuid					; Узнаём производителя проца
58
	mov	[Vendor + 0], ebx
58
	mov	[Vendor + 0], ebx
59
	mov	[Vendor + 4], edx
59
	mov	[Vendor + 4], edx
60
	mov	[Vendor + 8], ecx
60
	mov	[Vendor + 8], ecx
61
	mov	eax, 1
61
	mov	eax, 1
62
	cpuid					; Åñòü ëè MMX ?
62
	cpuid					; Есть ли MMX ?
63
	mov	ecx, eax
63
	mov	ecx, eax
Line 70... Line 70...
70
	mov	[CPU_mmx], dl
70
	mov	[CPU_mmx], dl
71
	shr	ecx, 12
71
	shr	ecx, 12
72
	and	cl, 11b
72
	and	cl, 11b
73
	mov	[CPU_type], cl
73
	mov	[CPU_type], cl
Line 74... Line 74...
74
 
74
 
75
	; ! Öâåòà èç ìàññèâà colors
75
	; ! Цвета из массива colors
76
	mov	dword[d_cpu_load], 0xFF00	; èíèöèàëèçèðóåì ãðàôèê çàãðóçêè ÀËÓ
76
	mov	dword[d_cpu_load], 0xFF00	; инициализируем график загрузки АЛУ
77
	mov	dword[d_mem_usage], 0x8BA169	; -- mem usega
77
	mov	dword[d_mem_usage], 0x8BA169	; -- mem usega
78
	mov	dword[d_temp1], 0xFF0000	; -- ãðàôèê òåìïåðàòóðû ÖÏÓ
78
	mov	dword[d_temp1], 0xFF0000	; -- график температуры ЦПУ
79
	mov	dword[d_temp2], 0xFF		; -- ãðàôèê òåìïåðàòóðû ÌÏ
79
	mov	dword[d_temp2], 0xFF		; -- график температуры МП
Line 80... Line 80...
80
	mov	dword[d_temp3], 0xFF7E23
80
	mov	dword[d_temp3], 0xFF7E23
Line 81... Line 81...
81
 
81
 
82
	call	hwm_init			; Èíèöèàëèçèðóåì ÷èï ìîíèòîðèíãà
82
	call	hwm_init			; Initialize monitoring chip
83
 
83
 
84
	jmp	draw_window
84
	jmp	draw_window
85
;--- Wait & translate event ------------------------------------------
85
;--- Wait & translate event ------------------------------------------
86
wait_for_event:
86
wait_for_event:
87
	mov	byte[diag_add_v], 0	; äîáàâëÿåì äàííûå ê ãðàôèêó òîëüêî ïî òàéìåðó
87
	mov	byte[diag_add_v], 0	; добавляем данные к графику только по таймеру
88
	mov	ebx, [update_time]
88
	mov	ebx, [update_time]
89
	mov	eax, 23
89
	mov	eax, 23
90
	int	0x40
90
	int	0x40
91
	test	eax, eax
91
	test	eax, eax
92
	jnz	@f
92
	jnz	@f
93
	inc	byte [diag_add_v]
93
	inc	byte [diag_add_v]
94
	inc	eax			; ïåðåðèñóåì îêíî (eax := 1)
94
	jmp	redraw
95
@@:	dec	eax			; redraw request ?
95
@@:	dec	eax			; redraw request ?
96
	jz	draw_window
96
	jz	draw_window
Line 101... Line 101...
101
	jmp	wait_for_event
101
	jmp	wait_for_event
102
;--- Key pressed -----------------------------------------------------
102
;--- Key pressed -----------------------------------------------------
103
key:
103
key:
104
	mov	eax, 2
104
	mov	eax, 2
105
	int	0x40
105
	int	0x40
106
	cmp	ah, 27			; Esc - çàâåðøåíèå ðàáîòû
106
	cmp	ah, 27			; Esc - shutdown
107
	je	exit
107
	je	exit
108
	jmp	wait_for_event
108
	jmp	wait_for_event
109
;--- Button down -----------------------------------------------------
109
;--- Button down -----------------------------------------------------
110
button:
110
button:
111
	mov	eax, 17 		; get id
111
	mov	eax, 17 		; get id
Line 116... Line 116...
116
	je	@f
116
	je	@f
117
	call	stop_test
117
	call	stop_test
118
@@:	mov	eax, -1 	; close this program
118
@@:	mov	eax, -1 	; close this program
119
	int	0x40
119
	int	0x40
120
noexit:
120
noexit:
121
	; êíîïêè âêëàäîê (2 .. 5)
121
	; button tabs (2 .. 5)
122
	cmp	ah, 5
122
	cmp	ah, 5
123
	jg	no_tabs
123
	jg	no_tabs
124
	mov	byte[act_tab], ah
124
	mov	byte[act_tab], ah
125
	jmp	draw_window
125
	jmp	redraw_tabs
126
no_tabs:
126
no_tabs:
127
	; êíîïêè çàïóñêà òåñòâî (6 .. 10)
127
	; кнопки запуска тество (6 .. 10)
128
	cmp	ah, 10
128
	cmp	ah, 10
129
	jg	no_test_bt
129
	jg	no_test_bt
130
	; åñëè íåò çàïóùåíûõ òåñòîâ - çàïóñêàåì âûáðàííûé
130
	; если нет запущеных тестов - запускаем выбранный
131
	cmp	byte[test_id], 0
131
	cmp	byte[test_id], 0
132
	je	run_test
132
	je	run_test
133
	; åñëè êíîïêà àêòèâíîãî òåñòà - îñòàíàâëèâàåì òåñò, èíà÷å íè÷åãî íå äåëàåì
133
	; если кнопка активного теста - останавливаем тест, иначе ничего не делаем
134
	cmp	[test_id], ah
134
	cmp	[test_id], ah
135
	jne	wait_for_event
135
	jne	wait_for_event
136
	call	stop_test
136
	call	stop_test
137
	jmp	draw_window
137
	jmp	redraw_tabs
Line 138... Line 138...
138
 
138
 
139
tsts:	dd	p5, p6, k6, k7
139
tsts:	dd	p5, p6, k6_, k7_
140
run_test:
140
run_test:
141
	push	eax
141
	push	eax
142
	movzx	ecx, ah
142
	movzx	ecx, ah
143
	mov	ecx, [tsts + (ecx * 4) - (6 * 4)]
143
	mov	ecx, [tsts + (ecx * 4) - (6 * 4)]
144
rtst:	mov	eax, 51
144
rtst:	mov	eax, 51
145
	mov	edx, stp
145
	mov	edx, stp
146
	mov	ebx, 1
146
	mov	ebx, 1
147
	int	0x40
147
	int	0x40
148
	cmp	eax, 0xFFFFFFF0 ; -16
148
	cmp	eax, 0xFFFFFFF0 ; -16
149
	je	wait_for_event	; <-- îøèáêà çàïóñêà òåñòà, ÏÅÐÅÏÈÑÀÒÜ
149
	je	wait_for_event	; <-- ошибка запуска теста, ПЕРЕПИСАТЬ
150
	mov	[test_pid], eax
150
	mov	[test_pid], eax
151
	pop	eax
151
	pop	eax
152
	mov	byte [test_id], ah
152
	mov	byte [test_id], ah
153
	jmp	draw_window
153
	jmp	redraw_tabs
154
	;-------------------------
154
	;-------------------------
155
	; êíîïêè èçìåíåíèÿ âðåìåíè îáíîâëåíèÿ
155
	; кнопки изменения времени обновления
156
no_test_bt:
156
no_test_bt:
157
	cmp	ah, 11
157
	cmp	ah, 11
158
	jne	no_ut_inc
158
	jne	no_ut_inc
159
	add	dword[update_time], 10
159
	add	dword[update_time], 10
160
	jmp	draw_window
160
	jmp	redraw_tabs
161
no_ut_inc:
161
no_ut_inc:
162
	cmp	ah, 12
162
	cmp	ah, 12
163
	jne	no_ut_dec
163
	jne	no_ut_dec
164
	cmp	dword[update_time], 10
164
	cmp	dword[update_time], 10
165
	jng	wait_for_event
165
	jng	wait_for_event
166
	sub	dword[update_time], 10
166
	sub	dword[update_time], 10
167
	jmp	draw_window
167
	jmp	redraw_tabs
168
no_ut_dec:
168
no_ut_dec:
169
	;-------------------------
169
	;-------------------------
170
	; êíîïêè èçìåíåíèÿ öâåòà ãðàôèêîâ (13..17)
170
	; color change button schedules (13..17)
171
	cmp	ah, 17
171
	cmp	ah, 17
172
	jg	no_change_color
172
	jg	no_change_color
173
	sub	ah, 13
173
	sub	ah, 13
174
	movzx	ecx, ah
174
	movzx	ecx, ah
175
	mov	esi, [d_colors + ecx * 4]
175
	mov	esi, [d_colors + ecx * 4]
176
	mov	eax, [esi]
176
	mov	eax, [esi]
177
	mov	ecx, (colors_end - colors) / 4	; êîëè÷åñòâî öâåòîâ
177
	mov	ecx, (colors_end - colors) / 4	; number of colors
178
@@:	dec	ecx
178
@@:	dec	ecx
179
	cmp	eax, [colors + ecx * 4]
179
	cmp	eax, [colors + ecx * 4]
180
	jne	@b
180
	jne	@b
181
	mov	ebx, [colors + ecx * 4 - 4]
181
	mov	ebx, [colors + ecx * 4 - 4]
182
	mov	[esi], ebx
182
	mov	[esi], ebx
183
	jmp	draw_window
183
	jmp	redraw_tabs
184
no_change_color:
184
no_change_color:
185
	jmp	wait_for_event
185
	jmp	wait_for_event
186
;---------------------------------------------------------------------
186
;---------------------------------------------------------------------
187
draw_window:
187
draw_window:
188
	mov	eax,12
188
	mov	eax,12
189
	mov	ebx,1
189
	mov	ebx,1
190
	int	0x40
190
	int	0x40
191
	; Ñîçäà¸ì îêíî
191
	; Создаём окно
192
	xor	eax, eax
192
	xor	eax, eax
193
	mov	ebx, 300 * 65536 + 309
193
	mov	ebx, 300 * 65536 + 309
194
	mov	ecx, 150 * 65536 + 450
194
	mov	ecx, 150 * 65536 + 450
195
	mov	edx, tcol + 0x14000000	; color of work area RRGGBB,8->color
195
	mov	edx, tcol + 0x14000000	; color of work area RRGGBB,8->color
196
	mov	edi, title		; color of frames    RRGGBB
196
	mov	edi, title		; color of frames    RRGGBB
197
	int	0x40
197
	int	0x40
198
	; Ñîçäà¸ì ðàìêó ãðàôèêà
198
	; Create a graphic frame (not for graph)
199
	mov	eax, 13
199
	mov	eax, 13
200
	mov	ebx, 10 * 65536 + 290
200
	mov	ebx, 10 * 65536 + 290
201
	mov	ecx, 138 * 65536 + 105
201
	mov	ecx, 138 * 65536 + 105
202
	mov	edx, atcol
202
	mov	edx, atcol
203
	int	0x40
-
 
204
	mov	ebx, 12 * 65536 + 286
-
 
205
	mov	ecx, 140 * 65536 + 101
-
 
206
	mov	edx, tcol
-
 
207
	int	0x40
-
 
208
	mov	eax, 38
-
 
209
	mov	edx, atcol
-
 
210
	mov	ebx, 12 * 65536 + 286 + 12
-
 
211
	mov	ecx, 140 * 65536 + 140
-
 
212
@@:	add	ecx, 10 * 65536 + 10
-
 
213
	int	0x40
-
 
214
	cmp	cx, 230 		; ïðèâÿçàíî ê êîîðäèíàòàì îêíà
-
 
Line 215... Line 203...
215
	jl	@b
203
	int	0x40
216
 
204
 
217
	; Ïèøèì íàçâàíèÿ ïàðàìåòðîâ (Cpu load, temper, etc...)
205
	; write parameter names (Cpu load, temper, etc ...)
218
	mov	edx, msgs_mon
206
	mov	edx, msgs_mon         ; text for indicators
Line 219... Line 207...
219
	mov	ebx, 17 * 65536 + 30
207
	mov	ebx, 17 * 65536 + 30
220
	call	show_text
208
	call    show_text
221
 
209
 
Line 222... Line 210...
222
	mov	edx, msgs_mon2
210
	mov	edx, msgs_mon2
-
 
211
	mov	ebx, 166 * 65536 + 30
-
 
212
	call	show_text
-
 
213
 
-
 
214
	jmp draw_tabs ; draw tabs for the first time
-
 
215
 
-
 
216
redraw_tabs: ; delete previously created tabs
-
 
217
 
-
 
218
	mov	ecx, 4
-
 
219
	mov	eax, 8
-
 
220
	mov	edx, 0x80000000 + 2
-
 
221
del_tabs:
-
 
222
	int	0x40
-
 
223
	inc	edx
-
 
224
	loop	del_tabs
-
 
225
 
-
 
226
	; Delete color change buttons
-
 
227
	mov	eax, 8
-
 
228
	mov	edx, 0x80000000 + 13
-
 
229
@@: 
-
 
230
	int	0x40
-
 
231
	inc	edx
-
 
232
	cmp	edx, 0x80000000 + 13 + 5 	; 5 (buttons)
-
 
233
	jne	@b
223
	mov	ebx, 156 * 65536 + 30
234
 
224
	call	show_text
235
draw_tabs:
225
 
236
 
226
	; Ðèñóåì êíîïêè ñìåíû öâåòà
237
	; Drawing color change buttons
-
 
238
	mov	eax, 8
-
 
239
	mov	ebx, 112 * 65536 + 5
227
	mov	eax, 8
240
	mov	ecx, 30 * 65536 + 6
228
	mov	ebx, 112 * 65536 + 5
241
	mov	edx, 13
229
	mov	ecx, 30 * 65536 + 6
242
 
230
	mov	edx, 13
243
@@: 
231
@@:	mov	esi, [d_colors - 13 * 4 + edx * 4]
244
	mov	esi, [d_colors - 13 * 4 + edx * 4]
232
	mov	esi, [esi]
245
	mov	esi, [esi]
233
	int	0x40
246
	int	0x40
Line -... Line 247...
-
 
247
	add	ecx, 10 * 65536
-
 
248
	inc	edx
-
 
249
	cmp	edx, 13 + 5             ; 5 (buttons)
-
 
250
	jne	@b
-
 
251
 
-
 
252
	; info, test, config, about buttons
-
 
253
	; Create 4 buttons
-
 
254
	mov	edi, 250 * 65536 + 25
-
 
255
	mov	ecx, 4
-
 
256
	mov	eax, 8
-
 
257
	mov	ebx, 10 * 65536 + 70
-
 
258
	mov	edx, 2
-
 
259
n_bt:   
-
 
260
	push    ecx
-
 
261
	mov	ecx, edi
-
 
262
	mov	esi, tcol
-
 
263
	cmp	byte [act_tab], dl
-
 
264
	jne	na1
-
 
265
	mov	esi, atcol
-
 
266
na1:    
-
 
267
	int	0x40
-
 
268
	inc	edx
-
 
269
	add	ebx, 73 * 65536
-
 
270
	pop	ecx
-
 
271
	loop    n_bt
-
 
272
 
-
 
273
	; write name tabs
-
 
274
	mov	eax, 4
-
 
275
	mov	ebx, (18 shl 16) + 256
-
 
276
	mov	edx, tab_lab
-
 
277
	mov	ecx, 0x10000000
-
 
278
	mov	esi, 4
-
 
279
	int	0x40
-
 
280
	add	ebx, (72 shl 16)
-
 
281
	mov	edx, tab_lab.2
-
 
282
	mov	esi, 5
-
 
283
	int	0x40
-
 
284
	add	ebx, (72 shl 16)
-
 
285
	mov	edx, tab_lab.3
-
 
286
	mov	esi, 7
-
 
287
	int	0x40
234
	add	ecx, 10 * 65536
288
	add	ebx, (72 shl 16)
-
 
289
	mov	edx, tab_lab.4
-
 
290
	mov	esi, 5
-
 
291
	int	0x40
-
 
292
 
-
 
293
	; create a frame at the bottom of the screen
-
 
294
	mov	eax, 13
-
 
295
	mov	ebx, 10 * 65536 + 290
-
 
296
	mov	ecx, 275 * 65536 + 160
-
 
297
	mov	edx, atcol
-
 
298
	int	0x40
-
 
299
	mov	ebx, 12 * 65536 + 286
-
 
300
	mov	ecx, 277 * 65536 + 156
-
 
301
	mov	edx, tcol
-
 
302
	int	0x40
-
 
303
 
-
 
304
	; draw the selected tab
-
 
305
	mov	al, [act_tab]
-
 
306
	cmp	al, 2
-
 
307
	je 	info_tab
-
 
308
	cmp	al, 3
-
 
309
	je 	test_tab
-
 
310
	cmp	al, 4
-
 
311
	je 	config_tab
-
 
312
	jmp	about_tab
-
 
313
	
-
 
314
;--- Drow Info tab ---------------
-
 
315
info_tab:
-
 
316
        include "tab_info.inc"
-
 
317
;--- Drow test tab ---------------
-
 
318
test_tab:
-
 
319
        include "tab_test.inc"
-
 
320
;--- Drow Config tab -------------
-
 
321
config_tab:
-
 
322
        include "tab_conf.inc"
-
 
323
;--- Drow About tab --------------
-
 
324
about_tab:
-
 
325
        include "tab_about.inc"
-
 
326
 
-
 
327
redraw:
-
 
328
 
-
 
329
	; frame for graph
-
 
330
 
-
 
331
	mov	eax, 13
-
 
332
	mov	ebx, 12 * 65536 + 286
-
 
333
	mov	ecx, 140 * 65536 + 101
-
 
334
	mov	edx, tcol
-
 
335
	int	0x40
-
 
336
	mov	eax, 38
-
 
337
	mov	edx, atcol
-
 
338
	mov	ebx, 12 * 65536 + 286 + 12
-
 
339
	mov	ecx, 140 * 65536 + 140
-
 
340
@@:	add	ecx, 10 * 65536 + 10
235
	inc	edx
341
	int	0x40
236
	cmp	edx, 13 + 5		; 5 êíîïîê
342
	cmp	cx, 230 		; привязано к координатам окна
237
	jne	@b
343
	jl	@b
238
 
344
 
239
	; Ïèøèì çàãðóçêó ïðîöåññîðà
345
	; write CPU usage
240
	call	cpu_usage
346
	call    cpu_usage
241
	;--- äîáàâëÿåì íà ãðàôèê ---
347
	;--- добавляем на график ---
242
	mov	esi, d_cpu_load
348
	mov esi, d_cpu_load
243
	call	d_add
349
	call    d_add
244
	call	d_show
350
	call    d_show
245
	;---------------------------
351
	;---------------------------
-
 
352
	movzx	ecx, al
246
	movzx	ecx, al
353
	mov	eax, 47
Line 247... Line 354...
247
	mov	eax, 47
354
	mov	edx, 121 * 65536 + 30
248
	mov	edx, 121 * 65536 + 30
355
	xor	esi, esi
249
	xor	esi, esi
356
	call	digit_len
250
	call	digit_len
357
	clear_prev_no edx
251
	int	0x40
358
	int	0x40
252
 
359
 
253
	; Ïèøèì èñïîëüçóåìóþ ïàìÿòü
360
	; write used memory
254
	call	mem_usage
361
	call	mem_usage
255
	;--- äîáàâëÿåì íà ãðàôèê ---
362
	;--- добавляем на график ---
256
	mov	esi, d_mem_usage
363
	mov	esi, d_mem_usage
257
	call	d_add
364
	call	d_add
258
	call	d_show
365
	call	d_show
-
 
366
	;---------------------------
259
	;---------------------------
367
	movzx	ecx, al
Line 260... Line 368...
260
	movzx	ecx, al
368
	mov	eax, 47
261
	mov	eax, 47
369
	mov	edx, 121 * 65536 + 40
262
	mov	edx, 121 * 65536 + 40
370
	xor	esi, esi
263
	xor	esi, esi
371
	call	digit_len
264
	call	digit_len
372
	clear_prev_no edx
265
	int	0x40
373
	int	0x40
266
 
374
 
267
	cmp	byte[hwm_enable], 0
375
	cmp	byte[hwm_enable], 0
268
	jne	show_mon
376
	jne	show_mon
269
	; Íåò äàò÷èêîâ - ïèøåì NO
377
	; Нет датчиков - пишем NO
270
	mov	ecx, 8	;<- êîëè÷åñòâî ïàðàìåòðîâ
378
	mov	ecx, 8	;<- number of parameters
Line 271... Line 379...
271
	mov	eax, 4
379
	mov	eax, 4
272
	mov	ebx, 121 * 65536 + 50
380
	mov	ebx, 121 * 65536 + 50
273
	mov	edx, msg_no
381
	mov	edx, msg_no
274
	mov	esi, 3
382
	mov	esi, 3
275
@@:	int	0x40
383
@@:	int	0x40
Line 276... Line 384...
276
	add	ebx, 10
384
	add	ebx, 10
277
	loop	@b
385
	loop	@b
278
 
386
 
279
	mov	ecx, 7	;<- êîëè÷åñòâî ïàðàìåòðîâ
387
	mov	ecx, 7	;<- number of parameters
280
	mov	ebx, 260 * 65536 + 30
388
	mov	ebx, 260 * 65536 + 30
281
@@:	int	0x40
389
@@:	int	0x40
282
	add	ebx, 10
390
	add	ebx, 10
283
	loop	@b
391
	loop	@b
284
 
392
 
285
	jmp	no_monitor
393
	jmp	no_monitor
286
show_mon:
394
show_mon:
287
	;Åñòü äàò÷èêè ïèøèì èíôó
395
	;Есть датчики пишим инфу
288
	call	hwm_get_params
396
	call	hwm_get_params
289
	;---------------------------
397
	;---------------------------
290
	; Òåìïåðàòóðó
398
	; Температуру
291
	mov	ecx, 3
399
	mov	ecx, 3
292
	mov	esi, hwm_temps
400
	mov	esi, hwm_temps
293
	mov	edx, 121 * 65536 + 50
401
	mov	edx, 121 * 65536 + 50
294
	xor	eax, eax
402
	xor	eax, eax
295
sh_temp:push	ecx
403
sh_temp:push	ecx
296
	lodsw
404
	lodsw
297
	push	esi
405
	push	esi
298
	; ðåàêöèÿ íà èçìåíåíèÿ
406
	; реакция на изменения
-
 
407
	xor	esi, esi
299
	xor	esi, esi
408
	cmp	[old_t1 + ecx * 4 - 4], eax
300
	cmp	[old_t1 + ecx * 4 - 4], eax
409
	je	@f
301
	je	@f
410
	mov	[old_t1 + ecx * 4 - 4], eax
302
	mov	[old_t1 + ecx * 4 - 4], eax
411
	mov	esi, val_mod
303
	mov	esi, val_mod
412
@@:	movzx	ecx, al
Line 314... Line 423...
314
	int	0x40
423
	int	0x40
315
	sub	edx, 15 * 65536 - 10
424
	sub	edx, 15 * 65536 - 10
316
	pop	esi
425
	pop	esi
317
	pop	ecx
426
	pop	ecx
318
	loop	sh_temp
427
	loop	sh_temp
319
	;;--- äîáàâëÿåì íà ãðàôèê temp1 ---
428
	;;--- Add to the chart temp1 ---
320
	movzx	eax, word[hwm_temps]
429
	movzx	eax, word[hwm_temps]
321
	mov	esi, d_temp1
430
	mov	esi, d_temp1
322
	call	d_add
431
	call	d_add
323
	call	d_show
432
	call	d_show
324
	;;--- äîáàâëÿåì íà ãðàôèê temp2 ---
433
	;;--- Add to the chart temp2 ---
325
	movzx	eax, word[hwm_temps + 2]
434
	movzx	eax, word[hwm_temps + 2]
326
	mov	esi, d_temp2
435
	mov	esi, d_temp2
327
	call	d_add
436
	call	d_add
328
	call	d_show
437
	call	d_show
329
	;;--- äîáàâëÿåì íà ãðàôèê temp3 ---
438
	;;--- Add to the chart temp3 ---
330
	movzx	eax, word[hwm_temps + 4]
439
	movzx	eax, word[hwm_temps + 4]
331
	mov	esi, d_temp3
440
	mov	esi, d_temp3
332
	call	d_add
441
	call	d_add
333
	call	d_show
442
	call	d_show
Line 334... Line 443...
334
 
443
 
335
	;---------------------------
444
	;---------------------------
336
	; Ñêîðîñòè âðàøåíèÿ âåíòèëåé
445
	; Скорости врашения вентилей
337
	mov	ecx, 5
446
	mov	ecx, 5
338
	mov	esi, hwm_rpms
447
	mov	esi, hwm_rpms
339
	mov	edx, 121 * 65536 + 80
448
	mov	edx, 121 * 65536 + 80
340
sh_fan: push	ecx
449
sh_fan: push	ecx
341
	lodsd
450
	lodsd
342
	push	esi
451
	push	esi
343
	;ðåàêöèÿ íà èçìåíåíèÿ
452
	;реакция на изменения
344
	xor	esi, esi
453
	xor	esi, esi
345
	cmp	[old_f1 + ecx * 4 - 4], eax
454
	cmp	[old_f1 + ecx * 4 - 4], eax
346
	je	@f
455
	je	@f
347
	mov	[old_f1 + ecx * 4 - 4], eax
456
	mov	[old_f1 + ecx * 4 - 4], eax
348
	mov	esi, val_mod
457
	mov	esi, val_mod
349
@@:	mov	ecx, eax
458
@@:	mov	ecx, eax
350
	call	digit_len
459
	call	digit_len
-
 
460
	mov	eax, 47
351
	mov	eax, 47
461
	clear_prev_no edx
352
	int	0x40
462
	int	0x40
353
	add	edx, 10
463
	add	edx, 10
354
	pop	esi
464
	pop	esi
355
	pop	ecx
465
	pop	ecx
Line 356... Line 466...
356
	loop	sh_fan
466
	loop	sh_fan
357
 
467
 
358
	;---------------------------
468
	;---------------------------
359
	; Íàïðóãè
469
	; Напруги
360
	mov	esi, hwm_voltages
470
	mov	esi, hwm_voltages
361
	mov	edi, old_volts
471
	mov	edi, old_volts
362
	mov	ecx, 7
472
	mov	ecx, 7
363
	mov	ebx, 260 * 65536 + 30
473
	mov	ebx, 260 * 65536 + 30
364
	mov	edx, Data_String
474
	mov	edx, Data_String
365
volt_nxt:
475
volt_nxt:
366
	push	ecx
476
	push	ecx
367
	push	esi
477
	push	esi
368
	call	ftoa
478
	call	ftoa
369
	;ðåàêöèÿ íà èçìåíåíèÿ
479
	;реакция на изменения
370
	xor	ecx, ecx
480
	xor	ecx, ecx
371
	fld	dword [esi]
481
	fld	dword [esi]
Line 379... Line 489...
379
	finit
489
	finit
Line 380... Line 490...
380
 
490
 
381
	sahf
491
	sahf
382
	jc	@f
492
	jc	@f
383
	mov	ecx, val_mod
493
	mov	ecx, val_mod
384
@@:	mov	esi, Data_String	; ñ÷èòàåì êîë-âî ñèìâîëîâ
494
@@:	mov	esi, Data_String	; считаем кол-во символов
385
@@:	lodsb
495
@@:	lodsb
386
	test	al, al
496
	test	al, al
387
	jnz	@b
497
	jnz	@b
Line 395... Line 505...
395
	movsd
505
	movsd
396
	loop	volt_nxt
506
	loop	volt_nxt
Line 397... Line 507...
397
 
507
 
398
no_monitor:
508
no_monitor:
399
	;---------------------------
-
 
400
	; Ñîçäà¸ì êíîïêè âêëàäîê
-
 
401
	mov	edi, 250 * 65536 + 25
-
 
402
	mov	ecx, 4
-
 
403
	mov	eax, 8
-
 
404
	mov	ebx, 10 * 65536 + 70
-
 
405
	mov	edx, 2
-
 
406
n_bt:	push	ecx
-
 
407
	mov	ecx, edi
-
 
408
	mov	esi, tcol
-
 
409
	cmp	byte [act_tab], dl
-
 
410
	jne	na1
-
 
411
	mov	esi, atcol
-
 
412
na1:	int	0x40
-
 
413
	inc	edx
-
 
414
	add	ebx, 73 * 65536
-
 
415
	pop	ecx
-
 
416
	loop	n_bt
-
 
417
	; Ïèøèì íàçâàíèÿ âêëàäîê
-
 
418
	mov	eax, 4
-
 
419
	mov	ebx, (18 shl 16) + 256
-
 
420
	mov	edx, tab_lab
-
 
421
	mov	ecx, 0x10000000
-
 
422
	mov	esi, 4
-
 
423
	int	0x40
-
 
424
	add ebx, (72 shl 16)
-
 
425
	mov edx, tab_lab.2
-
 
426
	mov	esi, 5
-
 
427
	int	0x40
-
 
428
	add ebx, (72 shl 16)
-
 
429
	mov edx, tab_lab.3
-
 
430
	mov	esi, 7
-
 
431
	int	0x40
-
 
432
	add ebx, (72 shl 16)
-
 
433
	mov edx, tab_lab.4
-
 
434
	mov	esi, 5
-
 
435
	int	0x40
-
 
436
	; ñîçäà¸ì ðàìêó âíèçó ýêðàíà
-
 
437
	mov	eax, 13
-
 
438
	mov	ebx, 10 * 65536 + 290
-
 
439
	mov	ecx, 275 * 65536 + 160
-
 
440
	mov	edx, atcol
-
 
441
	int	0x40
-
 
442
	mov	ebx, 12 * 65536 + 286
-
 
443
	mov	ecx, 277 * 65536 + 156
-
 
444
	mov	edx, tcol
-
 
445
	int	0x40
-
 
446
	; ðèñóåì âûáðàííóþ âêëàäêó
509
	;---------------------------
447
	mov	al, [act_tab]
510
	mov	al, [act_tab]   ; check if info tab is active
448
	cmp	al, 2
511
	cmp	al, 2
449
	je	info_tab
-
 
450
	cmp	al, 3
512
	jne	end_drow_tab
451
	je	test_tab
513
	jmp	free_mem    ; in tab_info.inc
452
	cmp	al, 4
-
 
453
	je	config_tab
-
 
454
	jmp	about_tab
514
 
455
end_drow_tab:
515
end_drow_tab:
456
	mov	eax, 12
516
	mov	eax, 12
457
	mov	ebx, 2
517
	mov	ebx, 2
458
	int	0x40
518
	int	0x40
459
	jmp	wait_for_event
-
 
460
;--- Drow Info tab ---------------
-
 
461
info_tab:
-
 
462
	include "tab_info.inc"
-
 
463
;--- Drow test tab ---------------
-
 
464
test_tab:
-
 
465
	include "tab_test.inc"
-
 
466
;--- Drow Config tab -------------
-
 
467
config_tab:
-
 
468
	include "tab_conf.inc"
-
 
469
;--- Drow About tab --------------
-
 
470
about_tab:
-
 
471
	include "tab_about.inc"
519
	jmp	wait_for_event
472
;---------------------------------------------------------------------
520
;---------------------------------------------------------------------
473
	include "system.inc"
521
	include "system.inc"
474
	include "hwm.inc"
522
	include "hwm.inc"
Line 475... Line 523...
475
	include "diag.inc"
523
	include "diag.inc"
476
 
524
 
477
 
525
 
478
DATA
526
DATA
479
act_tab 	db	2			; Íîìåð àêòèâíîé âêëàäêè
527
act_tab 	db	2			; active tab number
480
tab_lab:
528
tab_lab:
481
.1: db 'Info'
529
.1: db 'Info'
Line 506... Line 554...
506
	'-5V'
554
	'-5V'
Line 507... Line 555...
507
 
555
 
508
msg_yes 	db	'Yes'
556
msg_yes 	db	'Yes'
Line 509... Line 557...
509
msg_no		db	'N/A'
557
msg_no		db	'N/A'
510
 
558
 
511
update_time	dd	300			; ïåðèîä îáíîâëåíèÿ â ñîòûõ äîëÿõ ñåêóíäû
559
update_time	dd	300			; период обновления в сотых долях секунды
Line 512... Line 560...
512
d_colors	dd	d_cpu_load, d_mem_usage, d_temp1, d_temp2, d_temp3
560
d_colors	dd	d_cpu_load, d_mem_usage, d_temp1, d_temp2, d_temp3
513
c_eps		dd	0.01
561
c_eps		dd	0.01
514
 
562
 
515
; Öâåòà ãðàôèêîâ
563
; Цвета графиков
516
colors: 	dd	0xff0000, 0xff00, 0xff, 0xffffff, tcol, 0xFF7E23, 0x8BA169, 0xff0000	; ïåðâûé è ïîñëåäíèé ðàâíû
564
colors: 	dd	0xff0000, 0xff00, 0xff, 0xffffff, tcol, 0xFF7E23, 0x8BA169, 0xff0000	; первый и последний равны
Line 517... Line 565...
517
colors_end:
565
colors_end:
518
;---------------------------------------------------------------------
566
;---------------------------------------------------------------------
519
UDATA
567
UDATA
Line 520... Line 568...
520
 
568
 
521
test_pid	dd	?			; åñëè test_id == 0 - íå èìååò ñìûñëà
569
test_pid	dd	?			; если test_id == 0 - не имеет смысла
522
test_id 	db	?			; 0 - òåñò íå çàïóøåí (ñîîòâåòñòâóåò ¹ êíîïêè 6..10)
570
test_id 	db	?			; 0 - тест не запушен (соответствует № кнопки 6..10)
523
diag_add_v	db	?			; 0 - íå äîáàâëÿòü äàííûå íà ãðàôèê, !0 - äîáàâëÿòü
571
diag_add_v	db	?			; 0 - не добавлять данные на график, !0 - добавлять
524
 
572
 
Line 525... Line 573...
525
Vendor: 	times	12 db ?
573
Vendor: 	times	12 db ?
526
CPU_fam:	db	?
574
CPU_fam:	db	?
527
CPU_mod:	db	?
575
CPU_mod:	db	?
528
CPU_type:	db	?
576
CPU_type:	db	?
529
CPU_mmx:	db	?
577
CPU_mmx:	db	?
530
 
578
 
531
; Äëÿ ðåàêöèè íà èçìåíåíèÿ
579
; Для реакции на изменения
532
old_t1: 	dd	?	; ïîñëåäíåå çíà÷åíèå temp1
580
old_t1: 	dd	?	; последнее значение temp1
Line 533... Line 581...
533
old_t2: 	dd	?	; ...
581
old_t2: 	dd	?	; ...
534
old_t3: 	dd	?
582
old_t3: 	dd	?
535
old_f1: 	dd	?
583
old_f1: 	dd	?
536
old_f2: 	dd	?
584
old_f2: 	dd	?
Line 537... Line 585...
537
old_f3: 	dd	?
585
old_f3: 	dd	?
Line 553... Line 601...
553
 
601
 
554
d_temp3:	dd	?
602
d_temp3:	dd	?
555
		times 286 db ?
603
		times 286 db ?
Line 556... Line 604...
556
diag_end:
604
diag_end:
557
 
605
 
558
; --- ñòåê òåñòà, âîèçáåæàíèå ãëþêîâ íå ïåðåíîñèòü â äðóãîå ìåñòî ----
606
; --- стек теста, воизбежание глюков не переносить в другое место ----
559
th_stack:	times	1024 db ?
607
th_stack:	times	1024 db ?
560
stp:
608
stp: