Subversion Repositories Kolibri OS

Rev

Rev 9199 | Rev 9760 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
9108 Doczom 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'
9199 Doczom 14
 
9108 Doczom 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
9120 Doczom 48
       mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sc,sizeof.system_colors
9108 Doczom 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]
9120 Doczom 218
       mcall
9108 Doczom 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:
9199 Doczom 335
       mcall SF_FILE,run_notify
9108 Doczom 336
exit:
337
       mcall SF_TERMINATE_PROCESS
338
;Data_program;
9116 Doczom 339
title       db 'AMDtemp',0
9120 Doczom 340
path_drv    db '/kolibrios/drivers/sensors/k10temp.sys',0
9199 Doczom 341
Error_text  db '"Error load driver\nk10temp.sys was not found or is faulty " -tdE ',0
9108 Doczom 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
9120 Doczom 381
.sizeof = $ - drv_data ;
9108 Doczom 382
 
383
drv_struct:
9199 Doczom 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
 
9108 Doczom 399
sc      system_colors
400
I_END:
401
   rd 256
402
STACKTOP:
403
MEM: