Rev 197 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 197 | Rev 485 | ||
---|---|---|---|
Line 4... | Line 4... | ||
4 | ; |
4 | ; |
5 | ; Compile with FASM for Menuet |
5 | ; Compile with FASM for Menuet |
6 | ; |
6 | ; |
7 | ; |
7 | ; |
Line 8... | Line 8... | ||
8 | 8 | ||
Line 9... | Line 9... | ||
9 | include 'macros.inc' |
9 | include '..\..\..\macros.inc' |
10 | 10 | ||
11 | memsize = 1000h |
11 | memsize = 1000h |
Line 16... | Line 16... | ||
16 | version equ ' 1.1 ' |
16 | version equ ' 1.1 ' |
Line 17... | Line 17... | ||
17 | 17 | ||
Line 18... | Line 18... | ||
18 | use32 ; ¢ª«îç¨âì 32-¡¨âë© à¥¦¨¬ áᥬ¡«¥à |
18 | use32 ; ¢ª«îç¨âì 32-¡¨âë© à¥¦¨¬ áᥬ¡«¥à |
19 | 19 | ||
20 | db 'MENUET01' ; 8 byte id |
20 | db 'MENUET01' ; 8 byte id |
21 | dd 0x01 ; header version |
21 | dd 0x01 ; title 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 |
Line 41... | Line 41... | ||
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 | int 0x40 |
46 | mcall |
Line 47... | Line 47... | ||
47 | 47 | ||
48 | mov eax, 12 |
48 | mov eax, 12 |
49 | mov ebx, 1 ; start redraw |
49 | mov ebx, 1 ; start redraw |
Line 50... | Line 50... | ||
50 | int 0x40 |
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 |
Line 57... | Line 57... | ||
57 | mov edi, header |
57 | mov edi, title |
58 | int 0x40 |
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] |
Line 63... | Line 63... | ||
63 | mov edx, msg_nb |
63 | mov edx, msg_nb |
64 | mov esi, 14 |
64 | mov esi, 14 |
65 | int 0x40 |
65 | mcall |
66 | 66 | ||
67 | mov ebx, 105 shl 16 + 30 |
67 | mov ebx, 105 shl 16 + 30 |
Line 68... | Line 68... | ||
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 | int 0x40 |
71 | mcall |
Line 72... | Line 72... | ||
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 | int 0x40 |
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 | int 0x40 |
81 | mcall |
82 | mov ebx, 17 shl 16 + 62 |
82 | mov ebx, 17 shl 16 + 62 |
Line 83... | Line 83... | ||
83 | mov edx, msg_hdd |
83 | mov edx, msg_hdd |
84 | mov esi, 10 |
84 | mov esi, 10 |
85 | int 0x40 |
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 | int 0x40 |
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 |
Line 93... | Line 93... | ||
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] |
Line 99... | Line 99... | ||
99 | int 0x40 |
99 | mcall |
100 | 100 | ||
101 | mov ecx, [val_sgd] |
101 | mov ecx, [val_sgd] |
Line 117... | Line 117... | ||
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 | int 0x40 |
122 | mcall |
Line 123... | Line 123... | ||
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 |
Line 130... | Line 130... | ||
130 | int 0x40 |
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 |
Line 136... | Line 136... | ||
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 | @@: int 0x40 |
139 | @@: mcall |
140 | inc edx |
140 | inc edx |
Line 141... | Line 141... | ||
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 | @@: int 0x40 |
148 | @@: mcall |
Line 149... | Line 149... | ||
149 | inc edx |
149 | inc edx |
150 | add ebx, 27 shl 16 |
150 | add ebx, 27 shl 16 |
151 | dec edi |
151 | dec edi |
Line 152... | Line 152... | ||
152 | jnz @b |
152 | jnz @b |
153 | 153 | ||
154 | end_dr: mov eax, 12 |
154 | end_dr: mov eax, 12 |
Line 155... | Line 155... | ||
155 | mov ebx, 2 ; end redraw |
155 | mov ebx, 2 ; end redraw |
156 | int 0x40 |
156 | mcall |
Line 157... | Line 157... | ||
157 | 157 | ||
158 | ; Wait for event ... |
158 | ; Wait for event ... |
159 | mov eax, 10 |
159 | mov eax, 10 |
160 | int 0x40 |
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 | int 0x40 |
166 | mcall |
167 | cmp ah, 1 |
167 | cmp ah, 1 |
Line 198... | Line 198... | ||
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 | int 0x40 |
203 | mcall |
204 | jmp drawwindow |
204 | jmp drawwindow |
205 | ;-------------------------------------------------------------------------- |
205 | ;-------------------------------------------------------------------------- |
206 | bus_num: db 2 ; ®¬¥à è¨ë |
206 | bus_num: db 2 ; ®¬¥à è¨ë |
Line 352... | Line 352... | ||
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 | int 0x40 |
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] |
Line 396... | Line 396... | ||
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 | int 0x40 |
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 |
Line 424... | Line 424... | ||
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 | int 0x40 |
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 | int 0x40 |
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 | int 0x40 |
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: |
Line 450... | Line 450... | ||
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 | int 0x40 |
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 | int 0x40 |
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 | int 0x40 |
466 | mcall |
467 | ret |
467 | ret |
468 | @@: and dl, 0xef |
468 | @@: and dl, 0xef |
469 | mov eax, 62 |
469 | mov eax, 62 |
470 | int 0x40 |
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 |
Line 489... | Line 489... | ||
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 | int 0x40 |
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 | int 0x40 |
505 | mcall |
506 | ret |
506 | ret |
Line 507... | Line 507... | ||
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 | int 0x40 |
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 |
Line 547... | Line 547... | ||
547 | ;****************************************************************************** |
547 | ;****************************************************************************** |
Line 548... | Line 548... | ||
548 | 548 | ||
Line 549... | Line 549... | ||
549 | 549 | ||
Line 550... | Line 550... | ||
550 | ;-------------------------------------------------------------------------- |
550 | ;-------------------------------------------------------------------------- |
551 | 551 | ||
552 | header db appname,version,0 |
552 | title db appname,version,0 |
553 | 553 |