Subversion Repositories Kolibri OS

Rev

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