Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
31 | halyavin | 1 | ; |
2 | ; Пример программы для MenuetOS |
||
3 | ; озвучивает код нажатой клавиши ;) |
||
4 | ; |
||
5 | ; Компилировать FASM'ом |
||
6 | ; |
||
7 | ; См. также: |
||
8 | ; template.asm - пример простейшей программы (новый!) |
||
9 | ; rb.asm - контекстное меню рабочего стола |
||
10 | ; example2.asm - пример меню и дополнительных окон |
||
11 | ; example3.asm - пример меню, реализованного по-другому |
||
12 | ;--------------------------------------------------------------------- |
||
13 | |||
14 | use32 ; включить 32-битный режим ассемблера |
||
15 | org 0x0 ; адресация с нуля |
||
16 | |||
17 | db 'MENUET01' ; 8-байтный идентификатор MenuetOS |
||
18 | dd 0x01 ; версия заголовка (всегда 1) |
||
19 | dd START ; адрес первой команды |
||
20 | dd I_END ; размер программы |
||
21 | dd 0x1000 ; количество памяти |
||
22 | dd 0x1000 ; адрес вершины стэка |
||
23 | dd 0x0 ; адрес буфера для параметров (не используется) |
||
24 | dd 0x0 ; зарезервировано |
||
25 | |||
26 | include 'lang.inc' |
||
27 | include 'macros.inc' ; макросы облегчают жизнь ассемблерщиков! |
||
28 | |||
29 | ;--------------------------------------------------------------------- |
||
30 | ;--- НАЧАЛО ПРОГРАММЫ ---------------------------------------------- |
||
31 | ;--------------------------------------------------------------------- |
||
32 | |||
33 | START: |
||
34 | ; mcall 5,10 |
||
35 | mcall 21,13,1,drvinfo |
||
36 | ; jmp run_launcher |
||
37 | |||
38 | mcall 21,13,2 |
||
39 | cmp eax,-1 |
||
40 | je run_launcher |
||
41 | ; cmp ecx,280 |
||
42 | ; je change_vrr |
||
43 | ; cmp ecx,277 |
||
44 | ; je change_vrr |
||
45 | ; cmp ecx,6 |
||
46 | ; je change_vrr |
||
47 | ; cmp ecx,7 |
||
48 | ; je change_vrr |
||
49 | ; jmp run_launcher |
||
50 | change_vrr: |
||
51 | ; mov ax,cx |
||
52 | ; dec cx |
||
53 | ; shl cx,1 |
||
54 | ; xor edx,edx |
||
55 | ; mov dx,[vidmode+ecx] |
||
56 | ; mov ebx,ecx |
||
57 | ; shl ebx,2 |
||
58 | ; add ebx,ecx ; ebx=ebx*5 |
||
59 | ; shr ax,8 |
||
60 | ; dec ax |
||
61 | ; shl ax,1 |
||
62 | ; add ebx,eax |
||
63 | ; ror edx,16 |
||
64 | ; mov dx,[_m1+ebx] |
||
65 | ; rol edx,16 |
||
66 | ;mov eax,ecx |
||
67 | xor eax,eax |
||
68 | sub ecx,3 |
||
69 | mov dx,cx |
||
70 | cmp cx,274 |
||
71 | je yes_274 |
||
72 | cmp cx,277 |
||
73 | je yes_277 |
||
74 | jmp yes_280 |
||
75 | yes_274: |
||
76 | add al,10 |
||
77 | yes_277: |
||
78 | add al,10 |
||
79 | yes_280: |
||
80 | add al,10 |
||
81 | ror edx,16 |
||
82 | mov dx,[_m1+eax] |
||
83 | rol edx,16 |
||
84 | ; mov dx,bx |
||
85 | ; shl edx,16 |
||
86 | ; mov dx,cx |
||
87 | mcall 21,13,3 |
||
88 | ; mcall 5,300 |
||
89 | run_launcher: |
||
90 | mcall 19,launcher,0 |
||
91 | ; mcall 33,text,drvinfo,512,0 |
||
92 | mcall -1 |
||
93 | launcher db 'LAUNCHER ' |
||
94 | ;text db 'TEXT ' |
||
95 | drvinfo: ; 512 bytes driver info area |
||
96 | ; +0 - Full driver name |
||
97 | ; +32 - Driver version |
||
98 | ; +64 - Word List of support video modes (max 32 positions) |
||
99 | ; +128 - 5 words list of support vertical rate to each present mode |
||
100 | org $+32 |
||
101 | drvver: |
||
102 | org $+32 |
||
103 | vidmode: |
||
104 | org $+64 |
||
105 | _m1: |
||
106 | org drvinfo+200h |
||
107 | |||
108 | I_END: ; метка конца программы |