Rev 109 | Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
31 | halyavin | 1 | ; <--- description ---> |
2 | ; compiler: FASM 1.54 |
||
3 | ; name: MenuetOS RUN |
||
4 | ; version: 0.02 |
||
5 | ; last update: 28/09/2004 |
||
6 | ; written by: Ivan Poddubny |
||
7 | ; e-mail: ivan-yar@bk.ru |
||
8 | |||
9 | |||
10 | ; <--- include all MeOS stuff ---> |
||
11 | include "lang.inc" |
||
12 | include "macros.inc" |
||
13 | ;;;lang fix en |
||
14 | |||
15 | |||
16 | ; <--- start of MenuetOS application ---> |
||
17 | MEOS_APP_START |
||
18 | |||
19 | ;include "DEBUG.INC" |
||
20 | |||
21 | ; <--- start of code ---> |
||
22 | CODE |
||
23 | call draw_window ; at first create and draw the window |
||
24 | |||
25 | wait_event: ; main cycle |
||
26 | mcall 10 |
||
27 | |||
28 | cmp eax, 1 ; if event == 1 |
||
29 | je redraw ; jump to redraw handler |
||
30 | cmp eax, 2 ; else if event == 2 |
||
31 | je key ; jump to key handler |
||
32 | cmp eax, 3 ; else if event == 3 |
||
33 | je button ; jump to button handler |
||
34 | |||
35 | jmp wait_event ; else return to the start of main cycle |
||
36 | |||
37 | |||
38 | redraw: ; redraw event handler |
||
39 | call draw_window |
||
40 | jmp wait_event |
||
41 | |||
42 | |||
43 | key: ; key event handler |
||
44 | mcall 2 |
||
45 | |||
46 | cmp ah, 13 |
||
47 | je _run |
||
48 | cmp ah, 8 |
||
49 | je .backspace |
||
50 | |||
51 | mov bl, ah |
||
52 | mov eax, [position] |
||
53 | mov [filename + eax], bl |
||
54 | inc [position] |
||
55 | call draw_string |
||
56 | |||
57 | jmp wait_event |
||
58 | |||
59 | .backspace: |
||
60 | xor eax, eax |
||
61 | cmp [position], eax |
||
62 | je wait_event |
||
63 | dec [position] |
||
64 | call draw_string |
||
65 | jmp wait_event |
||
66 | |||
67 | |||
68 | button: ; button event handler |
||
69 | mcall 17 |
||
70 | |||
71 | cmp ah, 10 |
||
72 | je _run |
||
73 | |||
74 | dec ah |
||
75 | jne wait_event ; return if button id != 1 |
||
76 | |||
77 | _exit: |
||
78 | or eax, -1 ; exit application |
||
79 | int 0x40 |
||
80 | |||
81 | |||
82 | _run: |
||
83 | mcall 58, fileinfo |
||
84 | ; dps "58th function returned " |
||
85 | ; dpd eax |
||
86 | ; newline |
||
87 | jmp _exit |
||
88 | |||
89 | |||
90 | draw_window: |
||
91 | mcall 12, 1 |
||
92 | |||
93 | mcall 14 |
||
94 | and eax, 0xFFFF |
||
95 | sub eax, 100 |
||
96 | shl eax, 16 |
||
97 | add eax, 80 |
||
98 | mov ecx, eax |
||
99 | |||
100 | mov ebx, 148*65536+400 ; (window_cx)*65536+(window_sx) |
||
101 | mov edx, 0x03DDDDDD ; work area color & window type 3 |
||
102 | mcall 0 |
||
103 | |||
104 | mov ebx, 8*65536+8 ; coordinates |
||
105 | mov ecx, 0x10ffffff ; color & font N1 |
||
106 | mov edx, header ; address of text |
||
107 | mov esi, header.size ; length of text |
||
108 | mcall 4 |
||
109 | |||
110 | mpack ebx, 10, 26 |
||
111 | mov ecx, 0 |
||
112 | mov edx, message |
||
113 | mov esi, message.size |
||
114 | mcall |
||
115 | |||
116 | mpack ebx, 385-(runbtn.size*6), runbtn.size*6+4 |
||
117 | mpack ecx, 56, 14 |
||
118 | mov edx, 10 |
||
119 | mov esi, 0xa0a0a0 |
||
120 | mcall 8 |
||
121 | |||
122 | ; mpack ebx, 385-runbtn.size*6-findbtn.size*6-8, findbtn.size*6+4 |
||
123 | ; inc edx |
||
124 | ; mcall 8 |
||
125 | |||
126 | ; mpack ebx, 388-runbtn.size*6-findbtn.size*6-7, 59 |
||
127 | ; mov ecx, 0 |
||
128 | ; mov edx, findbtn |
||
129 | ; mov esi, findbtn.size |
||
130 | ; mcall 4 |
||
131 | |||
132 | mpack ebx, 388-runbtn.size*6, 59 |
||
133 | mov ecx, 0 |
||
134 | mov edx, runbtn |
||
135 | mov esi, runbtn.size |
||
136 | mcall 4 |
||
137 | |||
138 | call draw_string |
||
139 | |||
140 | mcall 12, 2 |
||
141 | ret |
||
142 | |||
143 | |||
144 | draw_string: |
||
145 | mpack ebx, 10, 380 |
||
146 | mpack ecx, 38, 14 |
||
147 | mov edx, 0xA0A0A0 |
||
148 | mcall 13 |
||
149 | |||
150 | mpack ebx, 14, 41 |
||
151 | mov ecx, 0 |
||
152 | mov edx, filename |
||
153 | mov esi, [position] |
||
154 | mcall 4 |
||
155 | ret |
||
156 | |||
157 | |||
158 | |||
159 | ; <--- initialised data ---> |
||
160 | DATA |
||
161 | |||
162 | position dd filename.size |
||
163 | |||
164 | lsz header,\ |
||
165 | ru, "Запуск программы",\ |
||
166 | en, "Start program" |
||
167 | |||
168 | lsz message,\ |
||
169 | ru, "Введите путь к файлу:",\ |
||
170 | en, "Enter path to file:" |
||
171 | |||
172 | ; lsz findbtn,\ |
||
173 | ; ru, "Найти...",\ |
||
174 | ; en, "Find..." |
||
175 | |||
176 | lsz runbtn,\ |
||
177 | ru, "Запустить",\ |
||
178 | en, "Run" |
||
179 | |||
180 | |||
181 | fileinfo: |
||
182 | .mode dd 16 |
||
183 | dd 0 |
||
184 | .param dd 0 |
||
185 | dd 0 |
||
186 | .workarea dd workarea |
||
187 | |||
188 | sz filename, "/rd/1/" |
||
189 | rb 122 |
||
190 | |||
191 | |||
192 | ; <--- uninitialised data ---> |
||
193 | UDATA |
||
194 | workarea rb 4096 |
||
195 | |||
196 | |||
197 | MEOS_APP_END |
||
198 | ; <--- end of MenuetOS application --->--->--->--->--->--->--->---> |