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