Rev 502 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
31 | halyavin | 1 | ; |
451 | heavyiron | 2 | ; Системная программа для установки повышенных (>60 Hz) частот обновления |
3 | ; экрана за счет снижения разрешения |
||
502 | heavyiron | 4 | ; (для переходов: 1024х768*60-->800х600*98 |
5 | ; 800х600*60-->640х480*94) |
||
31 | halyavin | 6 | ; |
7 | ; Компилировать FASM'ом |
||
8 | ; |
||
451 | heavyiron | 9 | ; !!!!!_Предупреждение_!!!!!: |
10 | ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
||
11 | ;! На текущий момент программа носит ЭКСПЕРИМЕНТАЛЬНЫЙ (!) характер, поэтому всегда ! |
||
12 | ;! остается вероятность порчи оборудования (т.е. монитора). Особенно это касается всех! |
||
13 | ;! тех, чей монитор не имеет защиты от перегрузок по частоте. ! |
||
14 | ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
||
15 | ; |
||
31 | halyavin | 16 | ;--------------------------------------------------------------------- |
17 | |||
18 | use32 ; включить 32-битный режим ассемблера |
||
19 | org 0x0 ; адресация с нуля |
||
20 | |||
21 | db 'MENUET01' ; 8-байтный идентификатор MenuetOS |
||
22 | dd 0x01 ; версия заголовка (всегда 1) |
||
23 | dd START ; адрес первой команды |
||
24 | dd I_END ; размер программы |
||
25 | dd 0x1000 ; количество памяти |
||
26 | dd 0x1000 ; адрес вершины стэка |
||
27 | dd 0x0 ; адрес буфера для параметров (не используется) |
||
28 | dd 0x0 ; зарезервировано |
||
29 | |||
485 | heavyiron | 30 | include '..\..\..\macros.inc' ; макросы облегчают жизнь ассемблерщиков! |
31 | halyavin | 31 | |
32 | ;--------------------------------------------------------------------- |
||
33 | ;--- НАЧАЛО ПРОГРАММЫ ---------------------------------------------- |
||
34 | ;--------------------------------------------------------------------- |
||
35 | |||
36 | START: |
||
37 | ; mcall 5,10 |
||
143 | diamond | 38 | mov ecx, 1 |
39 | mov edx, drvinfo |
||
40 | push @f |
||
41 | jmp call_driver |
||
42 | @@: |
||
31 | halyavin | 43 | ; jmp run_launcher |
44 | |||
143 | diamond | 45 | mov ecx, 2 |
46 | push @f |
||
47 | call_driver: |
||
48 | mcall 21,13 |
||
49 | ret |
||
50 | @@: |
||
51 | ; cmp eax,-1 |
||
52 | inc eax |
||
31 | halyavin | 53 | je run_launcher |
54 | ; cmp ecx,280 |
||
55 | ; je change_vrr |
||
56 | ; cmp ecx,277 |
||
57 | ; je change_vrr |
||
58 | ; cmp ecx,6 |
||
59 | ; je change_vrr |
||
60 | ; cmp ecx,7 |
||
61 | ; je change_vrr |
||
62 | ; jmp run_launcher |
||
63 | change_vrr: |
||
64 | ; mov ax,cx |
||
65 | ; dec cx |
||
66 | ; shl cx,1 |
||
67 | ; xor edx,edx |
||
68 | ; mov dx,[vidmode+ecx] |
||
69 | ; mov ebx,ecx |
||
70 | ; shl ebx,2 |
||
71 | ; add ebx,ecx ; ebx=ebx*5 |
||
72 | ; shr ax,8 |
||
73 | ; dec ax |
||
74 | ; shl ax,1 |
||
75 | ; add ebx,eax |
||
76 | ; ror edx,16 |
||
77 | ; mov dx,[_m1+ebx] |
||
78 | ; rol edx,16 |
||
79 | ;mov eax,ecx |
||
143 | diamond | 80 | mov eax, 10 |
81 | cmp cx,277+3 |
||
82 | je yes_277 |
||
83 | cmp cx,274+3 |
||
84 | jne yes_280 |
||
31 | halyavin | 85 | yes_274: |
86 | add al,10 |
||
87 | yes_277: |
||
88 | add al,10 |
||
89 | yes_280: |
||
143 | diamond | 90 | mov edx, [_m1+eax-2] |
91 | lea dx, [ecx-3] |
||
92 | push run_launcher |
||
93 | mov ecx, 3 |
||
94 | jmp call_driver |
||
31 | halyavin | 95 | run_launcher: |
143 | diamond | 96 | mcall 70,launcher |
31 | halyavin | 97 | mcall -1 |
143 | diamond | 98 | launcher: |
99 | dd 7 |
||
100 | dd 0 |
||
101 | dd 0 |
||
102 | dd 0 |
||
103 | dd 0 |
||
529 | spraid | 104 | db '/sys/LAUNCHER' |
143 | diamond | 105 | I_END: ; метка конца программы |
106 | db ? ; system loader will zero all memory after program end |
||
107 | ; this byte will be terminating zero for launcher string |
||
248 | serge | 108 | ; \begin{Serge} |
109 | ; A you really believe it? |
||
110 | ; ┴ырцхэ, ъЄю тхЁєхЄ, Єхяыю хьє эр ётхЄх! |
||
111 | ; \end{Serge} |
||
31 | halyavin | 112 | drvinfo: ; 512 bytes driver info area |
113 | ; +0 - Full driver name |
||
114 | ; +32 - Driver version |
||
115 | ; +64 - Word List of support video modes (max 32 positions) |
||
116 | ; +128 - 5 words list of support vertical rate to each present mode |
||
117 | org $+32 |
||
118 | drvver: |
||
119 | org $+32 |
||
120 | vidmode: |
||
121 | org $+64 |
||
122 | _m1: |
||
123 | org drvinfo+200h |