Rev 485 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
195 | heavyiron | 1 | ; |
2 | ; Kolibri Bus Disconnect |
||
3 | ; Test for bus disconnect |
||
4 | ; |
||
5 | ; Compile with FASM for Menuet |
||
6 | ; |
||
7 | ; |
||
8 | |||
485 | heavyiron | 9 | include '..\..\..\macros.inc' |
195 | heavyiron | 10 | |
11 | memsize = 1000h |
||
12 | org 0 |
||
13 | PARAMS = memsize - 1024 |
||
14 | |||
15 | appname equ 'Kolibri Bus Disconnect' |
||
16 | version equ ' 1.1 ' |
||
17 | |||
18 | use32 ; включить 32-битный режим ассемблера |
||
19 | |||
20 | db 'MENUET01' ; 8 byte id |
||
502 | heavyiron | 21 | dd 0x01 ; header version |
195 | heavyiron | 22 | dd START ; start of code |
23 | dd I_END ; size of image |
||
24 | dd memsize ; memory for app |
||
25 | dd memsize - 1024 ; esp |
||
26 | dd PARAMS , 0x0 ; I_Param , I_Icon |
||
27 | |||
28 | |||
29 | |||
30 | ;--------------------------------------------------------------------- |
||
31 | ;--- НАЧАЛО ПРОГРАММЫ ---------------------------------------------- |
||
32 | ;--------------------------------------------------------------------- |
||
33 | |||
34 | START: |
||
35 | cmp [PARAMS], byte 0 |
||
36 | jne check_parameters |
||
37 | |||
38 | no_params: |
||
39 | call find_north_bridg |
||
40 | |||
41 | drawwindow: |
||
42 | mov eax,48 |
||
43 | mov ebx,3 |
||
44 | mov ecx,sc |
||
45 | mov edx,sizeof.system_colors |
||
485 | heavyiron | 46 | mcall |
195 | heavyiron | 47 | |
48 | mov eax, 12 |
||
49 | mov ebx, 1 ; start redraw |
||
485 | heavyiron | 50 | mcall |
195 | heavyiron | 51 | |
52 | mov eax, 0 ; window |
||
53 | mov ebx, 100 shl 16 + 300 |
||
54 | mov ecx, 100 shl 16 + 90 |
||
55 | mov edx, [sc.work] |
||
56 | or edx, 0x13000000 |
||
485 | heavyiron | 57 | mov edi, title |
58 | mcall |
||
195 | heavyiron | 59 | |
60 | mov eax, 4 |
||
61 | mov ebx, 17 shl 16 + 30 |
||
62 | mov ecx, [sc.work_text] |
||
63 | mov edx, msg_nb |
||
64 | mov esi, 14 |
||
485 | heavyiron | 65 | mcall |
195 | heavyiron | 66 | |
67 | mov ebx, 105 shl 16 + 30 |
||
68 | mov edx, [nb_name] |
||
69 | movzx esi, byte[edx] |
||
70 | inc edx |
||
485 | heavyiron | 71 | mcall |
195 | heavyiron | 72 | |
73 | mov ebx, 17 shl 16 + 40 |
||
74 | mov edx, msg_stat |
||
75 | mov esi, 8 |
||
485 | heavyiron | 76 | mcall |
195 | heavyiron | 77 | |
78 | mov ebx, 102 shl 16 + 50 |
||
79 | mov edx, msg_divs |
||
80 | mov esi, 32 |
||
485 | heavyiron | 81 | mcall |
195 | heavyiron | 82 | mov ebx, 17 shl 16 + 62 |
83 | mov edx, msg_hdd |
||
84 | mov esi, 10 |
||
485 | heavyiron | 85 | mcall |
195 | heavyiron | 86 | mov ebx, 17 shl 16 + 72 |
87 | mov edx, msg_sgd |
||
485 | heavyiron | 88 | mcall |
195 | heavyiron | 89 | |
90 | call get_divs |
||
91 | mov eax, 47 |
||
92 | mov ebx, 0x30000 |
||
93 | mov ecx, [val_hdd] |
||
94 | mov edx, 8 |
||
95 | shl edx, cl |
||
96 | mov ecx, edx |
||
97 | mov edx, 80 shl 16 + 62 |
||
98 | mov esi, [sc.work_text] |
||
485 | heavyiron | 99 | mcall |
195 | heavyiron | 100 | |
101 | mov ecx, [val_sgd] |
||
102 | mov edx, 8 |
||
103 | shl edx, cl |
||
104 | mov ecx, edx |
||
105 | mov edx, 80 shl 16 + 72 |
||
485 | heavyiron | 106 | mcall |
195 | heavyiron | 107 | |
108 | |||
109 | call get_bd_stat |
||
110 | mov ecx, [sc.work_text] |
||
111 | mov esi, 9 |
||
112 | mov ebx, 105 shl 16 + 40 |
||
113 | mov edx, msg_nf |
||
114 | mov al, [bd_stat] |
||
115 | test al, al |
||
116 | jz @f |
||
117 | mov edx, msg_dis |
||
118 | dec al |
||
119 | jz @f |
||
120 | mov edx, msg_en |
||
121 | @@: mov eax, 4 |
||
485 | heavyiron | 122 | mcall |
195 | heavyiron | 123 | |
124 | ; Создаём кнопку |
||
125 | mov ecx, 27 shl 16 + 20 |
||
126 | mov eax, 8 |
||
127 | mov ebx, 220 shl 16 + 70 |
||
128 | mov esi, [sc.work_button] |
||
129 | mov edx, 2 |
||
485 | heavyiron | 130 | mcall |
195 | heavyiron | 131 | |
132 | ; И ещё 14 ;) |
||
133 | mov edi, 7 |
||
134 | mov ecx, 60 shl 16 + 10 |
||
135 | mov eax, 8 |
||
136 | mov ebx, 105 shl 16 + 25 |
||
137 | mov edx, 3 |
||
138 | |||
485 | heavyiron | 139 | @@: mcall |
195 | heavyiron | 140 | inc edx |
141 | add ebx, 27 shl 16 |
||
142 | dec edi |
||
143 | jnz @b |
||
144 | |||
145 | add ecx, 12 shl 16 |
||
146 | mov ebx, 105 shl 16 + 25 |
||
147 | mov edi, 7 |
||
485 | heavyiron | 148 | @@: mcall |
195 | heavyiron | 149 | inc edx |
150 | add ebx, 27 shl 16 |
||
151 | dec edi |
||
152 | jnz @b |
||
153 | |||
154 | end_dr: mov eax, 12 |
||
155 | mov ebx, 2 ; end redraw |
||
485 | heavyiron | 156 | mcall |
195 | heavyiron | 157 | |
158 | ; Wait for event ... |
||
159 | mov eax, 10 |
||
485 | heavyiron | 160 | mcall |
195 | heavyiron | 161 | |
162 | cmp al, 3 |
||
163 | jne not_bt |
||
164 | |||
165 | mov eax, 17 ; get id |
||
485 | heavyiron | 166 | mcall |
195 | heavyiron | 167 | cmp ah, 1 |
168 | jne no_exit |
||
169 | mov eax, -1 ; close this program |
||
485 | heavyiron | 170 | mcall |
195 | heavyiron | 171 | no_exit: |
172 | cmp ah, 2 |
||
173 | jne no_ch_bt |
||
174 | mov dl, [bd_stat] |
||
175 | test dl, dl |
||
176 | jz drawwindow |
||
177 | xor eax, eax |
||
178 | dec dl |
||
179 | jnz @f |
||
180 | inc eax |
||
181 | @@: call set_bd_stat |
||
182 | jmp drawwindow |
||
183 | |||
184 | no_ch_bt: |
||
185 | cmp ah, 9 |
||
186 | jg no_hdd_bt |
||
187 | sub ah, 3 |
||
188 | movzx esi, ah |
||
189 | mov edi, [val_sgd] |
||
190 | call set_divs |
||
191 | jmp drawwindow |
||
192 | no_hdd_bt: |
||
193 | sub ah, 10 |
||
194 | movzx edi, ah |
||
195 | mov esi, [val_hdd] |
||
196 | call set_divs |
||
197 | jmp drawwindow |
||
198 | |||
199 | |||
200 | not_bt: cmp al, 2 |
||
201 | jne drawwindow |
||
202 | mov eax, 2 ; пока клава не поддерживается - читаем и забываем |
||
485 | heavyiron | 203 | mcall |
195 | heavyiron | 204 | jmp drawwindow |
205 | ;-------------------------------------------------------------------------- |
||
206 | bus_num: db 2 ; Номер шины |
||
207 | devfn: db 255 |
||
208 | bd_id: dd 0 ; Идентификатор устройства |
||
209 | bd_stat: db 0 ; 0 - не найден, 1 - выключен, 2 - включен |
||
210 | |||
211 | nb_name dd nb_nf |
||
212 | bd_msk dd msk_i440 |
||
213 | |||
214 | nb_nf db 9, 'Not found' |
||
215 | msk_i440 db 0 |
||
216 | nb_i440 db 4, 'i440' |
||
217 | msk_nforce db 0x6D, 0x80, 0xE7, 0x06, 0 ; номер регистра, маска, номер регистра, маска, ... , 0 |
||
218 | nb_nforce db 6, 'nForce' |
||
219 | msk_nforce2 db 0x6F, 0x10, 0 |
||
220 | nb_nforce2 db 8, 'nForce 2' |
||
221 | msk_sis730 db 0x6B, 0x01, 0 |
||
222 | nb_sis730 db 7, 'SiS 730' |
||
223 | nb_sis733 db 7, 'SiS 733' |
||
224 | msk_sis735 db 0x6A, 0x03, 0 |
||
225 | nb_sis735 db 7, 'SiS 735' |
||
226 | nb_sis740 db 7, 'SiS 740' |
||
227 | nb_sis741 db 7, 'SiS 741' |
||
228 | nb_sis745 db 7, 'SiS 745' |
||
229 | msk_sis746 db 0x6C, 0x01, 0 |
||
230 | nb_sis746 db 7, 'SiS 746' |
||
231 | nb_sis748 db 7, 'SiS 748' |
||
232 | msk_amd751 db 0x62, 0x06, 0 |
||
233 | nb_amd751 db 7, 'AMD 751' |
||
234 | nb_amd751s db 8, 'AMD 751S' |
||
235 | nb_amd761 db 7, 'AMD 761' |
||
236 | msk_amd762 db 0x62, 0x02, 0x6A, 0x02, 0 |
||
237 | nb_amd762 db 7, 'AMD 762' |
||
238 | msk_viakt133 db 0x52, 0x80, 0x70, 0x08, 0 |
||
239 | nb_viakt133 db 30, 'VIA KT133(A)/KM133/KL133/KN133' |
||
240 | nb_viakx133 db 9, 'VIA KX133' |
||
241 | nb_viakle133 db 10, 'VIA KLE133' |
||
242 | msk_viakt266 db 0x92, 0x80, 0x95, 0x02, 0x70, 0x08, 0 |
||
243 | nb_viakt266 db 18, 'VIA KT266(A)/KT333' |
||
244 | nb_viakm266 db 21, 'VIA KM266/KL266/KM333' |
||
197 | Ghost | 245 | nb_viakn266 db 9, 'VIA KN266' |
195 | heavyiron | 246 | msk_viakt400 db 0xD2, 0x80, 0xD5, 0x02, 0x70, 0x08, 0 |
247 | nb_viakt400 db 18, 'VIA KT400(A)/KT600' |
||
248 | nb_viakm400 db 9, 'VIA KM400' |
||
249 | msk_viakt880 db 0x82, 0x80, 0x85, 0x02, 0 |
||
250 | nb_viakt880 db 9, 'VIA KT880' |
||
251 | |||
252 | |||
253 | bd_table: dd 0x70061022 ; AMD 751 ---- |
||
254 | dd nb_amd751 |
||
255 | dd msk_amd751 |
||
256 | |||
257 | dd 0x70041022 ; AMD 751S |
||
258 | dd nb_amd751s |
||
259 | dd msk_amd751 |
||
260 | |||
261 | dd 0x700E1022 ; AMD 761 |
||
262 | dd nb_amd761 |
||
263 | dd msk_amd751 |
||
264 | |||
265 | dd 0x700C1022 ; AMD 762 |
||
266 | dd nb_amd762 |
||
267 | dd msk_amd762 |
||
268 | |||
269 | dd 0x71908086 ; i440 --- |
||
270 | dd nb_i440 |
||
271 | dd msk_i440 |
||
272 | |||
273 | dd 0x01A410DE ; nForce ---- |
||
274 | dd nb_nforce |
||
275 | dd msk_nforce |
||
276 | |||
277 | dd 0x01E010DE ; nForce 2 |
||
278 | dd nb_nforce2 |
||
279 | dd msk_nforce2 |
||
280 | |||
281 | dd 0x07301039 ; SiS 730 ---- |
||
282 | dd nb_sis730 |
||
283 | dd msk_sis730 |
||
284 | |||
285 | dd 0x07331039 ; SiS 733 |
||
197 | Ghost | 286 | dd nb_sis733 |
195 | heavyiron | 287 | dd msk_sis730 |
288 | |||
289 | dd 0x07351039 ; SiS 735 |
||
290 | dd nb_sis735 |
||
291 | dd msk_sis735 |
||
292 | |||
293 | dd 0x07401039 ; SiS 740 |
||
197 | Ghost | 294 | dd nb_sis740 |
195 | heavyiron | 295 | dd msk_sis735 |
296 | |||
297 | dd 0x07411039 ; SiS 741 |
||
197 | Ghost | 298 | dd nb_sis741 |
195 | heavyiron | 299 | dd msk_sis735 |
300 | |||
301 | dd 0x07451039 ; SiS 745 |
||
197 | Ghost | 302 | dd nb_sis745 |
195 | heavyiron | 303 | dd msk_sis735 |
304 | |||
305 | dd 0x07461039 ; SiS 746 |
||
306 | dd nb_sis746 |
||
307 | dd msk_sis746 |
||
308 | |||
309 | dd 0x07481039 ; SiS 748 |
||
197 | Ghost | 310 | dd nb_sis748 |
195 | heavyiron | 311 | dd msk_sis746 |
312 | |||
313 | dd 0x03051106 ; VIA KT133(A)/KM133/KL133/KN133 ---- |
||
314 | dd nb_viakt133 |
||
315 | dd msk_viakt133 |
||
316 | |||
317 | dd 0x03911106 ; VIA KX133 |
||
197 | Ghost | 318 | dd nb_viakx133 |
195 | heavyiron | 319 | dd msk_viakt133 |
320 | |||
321 | dd 0x06911106 ; VIA KLE133 |
||
197 | Ghost | 322 | dd nb_viakle133 |
195 | heavyiron | 323 | dd msk_viakt133 |
324 | |||
325 | dd 0x30991106 ; VIA KT266(A)/KT333 |
||
326 | dd nb_viakt266 |
||
327 | dd msk_viakt266 |
||
328 | |||
329 | dd 0x31161106 ; VIA KM266/KL266/KM333 |
||
197 | Ghost | 330 | dd nb_viakm266 |
195 | heavyiron | 331 | dd msk_viakt266 |
332 | |||
333 | dd 0x31561106 ; VIA KN266 |
||
197 | Ghost | 334 | dd nb_viakn266 |
195 | heavyiron | 335 | dd msk_viakt266 |
336 | |||
337 | dd 0x31891106 ; VIA KT400(A)/KT600 |
||
338 | dd nb_viakt400 |
||
339 | dd msk_viakt400 |
||
340 | |||
341 | dd 0x32051106 ; VIA KM400 |
||
342 | dd nb_viakm400 |
||
343 | dd msk_viakt400 |
||
344 | |||
345 | dd 0x22691106 ; VIA KT880 |
||
346 | dd nb_viakt880 |
||
347 | dd msk_viakt880 |
||
348 | bd_table_end: |
||
349 | |||
350 | |||
351 | find_north_bridg: |
||
352 | mov bl, 6 |
||
353 | xor cl, cl |
||
354 | nbus: mov bh, [bus_num] |
||
355 | ndevfn: mov ch, [devfn] |
||
356 | mov eax, 62 |
||
485 | heavyiron | 357 | mcall |
195 | heavyiron | 358 | cmp eax, 0xffffffff |
359 | je bd_next |
||
360 | ;--------- |
||
361 | mov esi, bd_table_end - bd_table - 12 |
||
362 | @@: cmp eax, [bd_table + esi] |
||
363 | je bd_found |
||
364 | test esi, esi |
||
365 | jz bd_next |
||
366 | sub esi, 12 |
||
367 | jmp @b |
||
368 | ;--------- |
||
369 | bd_next:dec byte[devfn] |
||
370 | jns ndevfn |
||
371 | mov byte[devfn], 0 |
||
372 | dec byte[bus_num] |
||
373 | jns nbus |
||
374 | ret |
||
375 | bd_found: |
||
376 | add esi, bd_table + 4 |
||
377 | mov edi, nb_name |
||
378 | mov ecx, 2 |
||
379 | rep movsd |
||
380 | |||
381 | mov [bd_id], eax |
||
382 | ret |
||
383 | |||
384 | ;---------------------- |
||
385 | ;bd_stat: db 0 ; 0 - не найден, 1 - выключен, 2 - включен |
||
386 | get_bd_stat: |
||
387 | mov byte[bd_stat], 1 |
||
388 | cld |
||
389 | mov esi, [bd_msk] |
||
390 | lodsw |
||
391 | test al, al |
||
392 | jnz @f |
||
393 | mov byte[bd_stat], 0 |
||
394 | ret |
||
395 | @@: push eax |
||
396 | mov bh, [bus_num] |
||
397 | mov bl, 4 |
||
398 | mov ch, [devfn] |
||
399 | mov cl, al |
||
400 | mov eax, 62 |
||
485 | heavyiron | 401 | mcall |
195 | heavyiron | 402 | pop edx |
403 | and al, dh |
||
404 | jnz @f |
||
405 | lodsw |
||
406 | test al, al |
||
407 | jnz @b |
||
408 | ret |
||
409 | @@: mov byte[bd_stat], 2 |
||
410 | ret |
||
411 | ;---------------------- |
||
412 | set_bd_stat: |
||
413 | cmp dword[bd_id], 0x01E010DE ; специально для nForce2 400 |
||
414 | je set_stat_nforce2 |
||
415 | |||
416 | mov edi, eax |
||
417 | cld |
||
418 | mov esi, [bd_msk] |
||
419 | bd_ss_nxt: |
||
420 | lodsw |
||
421 | test al, al |
||
422 | jz bd_ss_end |
||
423 | mov dl, ah ; маска |
||
424 | mov bh, [bus_num] |
||
425 | mov bl, 4 |
||
426 | mov ch, [devfn] |
||
427 | mov cl, al |
||
428 | mov eax, 62 |
||
485 | heavyiron | 429 | mcall |
195 | heavyiron | 430 | mov bl, 8 |
431 | test edi, edi |
||
432 | jz @f |
||
433 | or al, dl |
||
434 | mov dl, al |
||
435 | mov eax, 62 |
||
485 | heavyiron | 436 | mcall |
195 | heavyiron | 437 | jmp bd_ss_nxt |
438 | @@: not dl |
||
439 | and al, dl |
||
440 | mov dl, al |
||
441 | mov eax, 62 |
||
485 | heavyiron | 442 | mcall |
195 | heavyiron | 443 | jmp bd_ss_nxt |
444 | bd_ss_end: |
||
445 | ret |
||
446 | ;------- nForce 2 ----------- |
||
447 | set_stat_nforce2: |
||
448 | ; IN : eax = 0 - disable, !0 - enable |
||
449 | push eax |
||
450 | mov bh, [bus_num] |
||
451 | mov bl, 4 |
||
452 | mov ch, [devfn] |
||
453 | mov cl, 0x6f |
||
454 | mov eax, 62 |
||
485 | heavyiron | 455 | mcall |
195 | heavyiron | 456 | and al, 0x1F |
457 | mov dl, al |
||
458 | mov bl, 8 |
||
459 | mov eax, 62 |
||
485 | heavyiron | 460 | mcall |
195 | heavyiron | 461 | pop eax |
462 | test eax, eax |
||
463 | jz @f |
||
464 | or dl, 0x10 |
||
465 | mov eax, 62 |
||
485 | heavyiron | 466 | mcall |
195 | heavyiron | 467 | ret |
468 | @@: and dl, 0xef |
||
469 | mov eax, 62 |
||
485 | heavyiron | 470 | mcall |
195 | heavyiron | 471 | ret |
472 | ;-------------------------------------------------------------------------- |
||
473 | ; x8 x16 x32 x64 x128 x256 x512 |
||
474 | div_hdd: db 0x23, 0x27, 0x2B, 0x2F, 0x63, 0x67, 0x6B ; Halt Disconnect Divisor |
||
475 | div_sgd: db 0x12, 0x52, 0x92, 0xD2, 0x12, 0x52, 0x92 ; Stop Grand Divisor |
||
476 | ; low word of 0xC001001B MSR |
||
477 | ; HDD\SGD 8 16 32 64 128 256 512 |
||
478 | ; 8 0x1223 0x5223 0x9223 0xD223 | 0x1223 0x5223 0x9223 |
||
479 | ; 16 0x1227 | |
||
480 | ; 32 0x122B | |
||
481 | ; 64 0x122F | 0x522F |
||
482 | ; 128 0x1263 | |
||
197 | Ghost | 483 | ; 256 0x1267 & bit 18 is clear | & bit 18 is set |
195 | heavyiron | 484 | ; 512 0x126B | |
485 | ; ^^^^ |
||
486 | ; ||||_HDD |
||
487 | ; ||_SGD |
||
488 | set_divs: |
||
489 | ; IN : ESI - hdd (0 = x8, 1 = x16 ..) |
||
490 | ; EDI - sgd (0 = x8, 1 = x16 ..) |
||
491 | mov eax, 68 |
||
492 | mov ebx, 3 |
||
493 | mov edx, 0xC001001b |
||
485 | heavyiron | 494 | mcall |
195 | heavyiron | 495 | mov al, [div_hdd + esi] |
496 | mov ah, [div_sgd + edi] |
||
497 | and eax, 0xFFFBFFFF |
||
498 | cmp edi, 3 |
||
499 | jle @f |
||
500 | or eax, 0x40000 |
||
501 | @@: mov edi, eax |
||
502 | mov esi, ebx |
||
503 | mov eax, 68 |
||
504 | mov ebx, 4 |
||
485 | heavyiron | 505 | mcall |
195 | heavyiron | 506 | ret |
507 | |||
508 | get_divs: |
||
509 | ; OUT : val_hdd - hdd (0 = x8, 1 = x16 ..) |
||
510 | ; val_sgd - sgd ... |
||
511 | mov eax, 68 |
||
512 | mov ebx, 3 |
||
513 | mov edx, 0xC001001b |
||
485 | heavyiron | 514 | mcall |
195 | heavyiron | 515 | mov ecx, 7 |
516 | @@: cmp [div_hdd + ecx - 1], al |
||
517 | je @f |
||
518 | loop @b |
||
519 | @@: dec ecx |
||
520 | mov [val_hdd], ecx |
||
521 | mov ecx, 4 |
||
522 | @@: cmp [div_sgd + ecx - 1], ah |
||
523 | je @f |
||
524 | loop @b |
||
525 | @@: dec ecx |
||
526 | test eax, 0x40000 |
||
527 | jz @f |
||
528 | add ecx, 4 |
||
529 | @@: mov [val_sgd], ecx |
||
530 | ret |
||
531 | |||
532 | ;****************************************************************************** |
||
533 | |||
534 | check_parameters: |
||
535 | cmp [PARAMS], dword "BOOT" ; received BOOT parameter -> goto handler |
||
536 | je boot_bd_enable |
||
537 | jmp no_params |
||
538 | |||
539 | ;****************************************************************************** |
||
540 | |||
541 | boot_bd_enable: |
||
542 | |||
543 | call find_north_bridg |
||
544 | call set_bd_stat |
||
545 | mcall -1 |
||
546 | |||
547 | ;****************************************************************************** |
||
548 | |||
549 | |||
550 | ;-------------------------------------------------------------------------- |
||
551 | |||
485 | heavyiron | 552 | title db appname,version,0 |
195 | heavyiron | 553 | |
554 | msg_divs db ' x8 x16 x32 x64 x128 x256 x512' |
||
555 | msg_hdd db 'Hatl Disc.' |
||
556 | msg_sgd db 'Stop Grand' |
||
557 | msg_nb db 'North bridge :';14 |
||
558 | msg_stat db 'Status :' ;8 |
||
559 | msg_en db 'Enabled ' ;9 |
||
560 | msg_dis db 'Disabled ' ;9 |
||
561 | msg_nf db 'Not found' ;9 |
||
562 | |||
563 | I_END: |
||
564 | sc system_colors |
||
565 | val_hdd: dd ? |
||
566 | val_sgd: dd ? |
||
567 |