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