[docs] Replace cyrillic 'с' with latin 'c' in register names
[kolibrios.git] / programs / demos / use_mb / use_mb.asm
blob966156ec45ebc3156e0d6deb229dcf520f41f855
1 ;Ž£à®¬­ ï ¡« £®¤ à­®áâì Maxxxx32, Diamond, Heavyiron
2 ;¨ ¤à㣨¬ ¯à®£à ¬¬¨áâ ¬,   â ª¦¥
3 ;’¥¯«®¢ã €«¥ªá¥î (<Lrz> www.lrz.land.ru)
4 use32
5 org 0
6 db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
7 dd 0,start,i_end,mem,stacktop,0,cur_dir_path
9 include '../../KOSfuncs.inc'
10 include '../../macros.inc'
11 include '../../proc32.inc'
12 include '../../load_lib.mac'
13 include 'lang.inc'
15 @use_library
17 align 4
18 start:
19 mcall SF_SET_EVENTS_MASK,0x25 ;¬ áª  ®¦¨¤ ¥¬ëå ᮡë⨩
21 sys_load_library msgbox_name, library_path, system_path, msgbox_lib_import
24 red_win:
25 mcall SF_REDRAW,SSF_BEGIN_DRAW
27 xor eax,eax
28 mov ebx,50*65536+200
29 mov ecx,30*65536+170
30 mov edx,0xffffd0
31 or edx,0x33000000
32 mov edi,hed
33 mcall
35 mov eax,SF_DEFINE_BUTTON
36 mov ebx,10*65536+30
37 mov ecx,110*65536+20
38 mov edx,7
39 mov esi,0xffd040
40 mcall
42 mov ebx,10*65536+30
43 mov ecx,85*65536+20
44 mov edx,6
45 mcall
47 mov ebx,10*65536+30
48 mov ecx,60*65536+20
49 mov edx,5
50 mcall
52 mov ebx,10*65536+30
53 mov ecx,35*65536+20
54 mov edx,4
55 mcall
57 mov ebx,10*65536+30
58 mov ecx,10*65536+20
59 mov edx,3
60 mcall
62 mov eax,4 ;à¨á®¢ ­¨¥ ⥪áâ 
63 mov ebx,50*65536+115
64 mov ecx,0x4000d0
65 or ecx,0x80000000
66 mov edx,txt5
67 mcall
69 mov ebx,50*65536+90
70 mov edx,txt4
71 mcall
73 mov ebx,50*65536+65
74 mov edx,txt3
75 mcall
77 mov ebx,50*65536+40
78 mov edx,txt2
79 mcall
81 mov ebx,50*65536+15
82 mov edx,txt1
83 mcall
85 push eax ebx ecx edx esi
86 ;line numbers
87 mov eax,SF_DRAW_NUMBER
88 mov esi,0xd00000
89 mov ebx,0x10000 ;format
91 ; --- draw codes ---
92 xor ecx,ecx
93 mov cl,byte[msgbox_1]
94 mov dx,25
95 shl edx,16
96 mov dx,15
97 int 0x40
99 mov cl,byte[msgbox_2]
100 add dx,25
101 int 0x40
103 mov cl,byte[msgbox_3]
104 add dx,25
105 int 0x40
107 mov cl,byte[msgbox_4]
108 add dx,25
109 int 0x40
111 mov cl,byte[msgbox_5]
112 add dx,25
113 int 0x40
115 pop esi edx ecx ebx eax
116 call draw_square
117 mcall SF_REDRAW,SSF_END_DRAW
119 align 4
120 still:
121 mcall SF_WAIT_EVENT
123 cmp al,1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
124 jz red_win
125 cmp al,3
126 jz button
127 jmp still
129 button:
130 mcall SF_GET_BUTTON
132 cmp ah,3
133 jz but_1
134 cmp ah,4
135 jz but_2
136 cmp ah,5
137 jz but_3
138 cmp ah,6
139 jz but_4
140 cmp ah,7
141 jz but_5
143 cmp ah,1
144 jne still
145 .exit:
146 mcall SF_TERMINATE_PROCESS
148 but_1:
149 stdcall [mb_create],msgbox_1,thread
150 jmp still
152 but_2:
153 stdcall [mb_create],msgbox_2,thread
154 stdcall [mb_setfunctions],msgbox_2_funct
155 jmp still
157 but_3:
158 stdcall [mb_create],msgbox_3,thread
159 jmp still
161 but_4:
162 stdcall [mb_create],msgbox_4,thread
163 jmp still
165 but_5:
166 stdcall [mb_create],msgbox_5,thread
167 mcall SF_SLEEP,100 ;stop program
168 stdcall [mb_reinit],msgbox_5_2
169 jmp still
171 if lang eq ru
172 txt1 db '¯à®á⮥',0
173 txt2 db '3 ª­®¯ª¨',0
174 txt3 db '3 áâப¨',0
175 txt4 db '¡®«ì讥',0
176 txt5 db 'mb_reinit',0
177 hed db '�ਬ¥à ¨á¯®«ì§®¢ ­¨ï MsgBox',0
178 else
179 txt1 db 'Simple',0
180 txt2 db '3 buttons',0
181 txt3 db '3 lines',0
182 txt4 db 'Big',0
183 txt5 db 'mb_reinit',0
184 hed db 'MsgBox usage example',0
185 end if
186 ;sc system_colors
189 ;---------------------------------------------------------------------
190 msgbox_1:
191 dw 0
192 db 'MBox',0 ;+2 = +MB_TEXT_OFFSET
193 if lang eq ru
194 db '�ਬ¥à',0
195 db '‚¨¦ã',0 ;button1
196 else
197 db 'Example',0
198 db 'I see!',0 ;button1
199 end if
200 db 0
201 msgbox_2:
202 dw 0
203 db 'MBox 3 buttons',0 ;+2 = +MB_TEXT_OFFSET
204 if lang eq ru
205 db '�ਬ¥à á 3-¬ï ª­®¯ª ¬¨',0
206 db '„ ',0 ;button1
207 db 'Žâ¬¥­ ',0 ;button2
208 db '�®¬®éì',0 ;button3
209 else
210 db '3 buttons example',0
211 db 'Yes',0 ;button1
212 db 'Cancel',0 ;button2
213 db 'Help',0 ;button3
214 end if
215 db 0
216 msgbox_2_funct:
217 dd 0,0,fun_show_help
219 msgbox_3:
220 dw 0
221 db 'MBox 3 lines',0 ;+2 = +MB_TEXT_OFFSET
222 if lang eq ru
223 db '‘âப  1',13,'‘âப  2',13,'‘âப  3',0
224 db '2020 £.',0 ;button1
225 else
226 db 'Line 1',13,'Line 2',13,'Line 3',0
227 db 'Year 2020',0 ;button1
228 end if
229 db 0
230 msgbox_4:
231 dw 0
232 if lang eq ru
233 db '‚¢¥¤¨â¥ ¤¥­ì',0 ;+2 = +MB_TEXT_OFFSET
234 else
235 db 'Select day',0 ;+2 = +MB_TEXT_OFFSET
236 end if
237 db ' @@@@@@@@@@@@ @@@@@@@@',13
238 db ' @............@ @........@',13
239 db '@..............@ @..........@',13
240 db '@.......@@@.....@ @......@.....@',13
241 db '@.......@ @.....@@@@@@......@@......@',13
242 db '@......@ @.................@@.......@',13
243 db ' @....@ @.....@@......@@....@.......@',13
244 db ' @..@ @.........@.........@......@',13
245 db ' @@ @...................@@....@',13
246 db ' @.......@@@.......@ @..@',13
247 db ' @...............@ @@',13
248 db ' @...............@',13
249 db ' @.................@',13
250 db ' @...................@',13
251 db ' @.....................@',13
252 db ' @.......@@......@@......@ @@',13
253 db ' @......@....@..@....@.....@@..@',13
254 db ' @......@....@..@....@.........@',13
255 db ' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@',0
256 if lang eq ru
257 db '�­',0,'‚â',0,'‘à',0,'—â',0,'�â',0,'‘¡',0,'‚®áªà¥á¥­¨¥',0
258 else
259 db 'Sun',0,'Mon',0,'Tue',0,'Wed',0,'Thu',0,'Fri',0,'Sat',0
260 end if
261 db 0
262 msgbox_5:
263 dw 0
264 if lang eq ru
265 db '‘®®¡é¥­¨¥',0 ;+2 = +MB_TEXT_OFFSET
266 db '‚믮«­ïî ¯à®æ¥áá ...',0
267 db 'Žáâ ­®¢¨âì',0
268 db '�à¥à¢ âì',0
269 else
270 db 'Message',0 ;+2 = +MB_TEXT_OFFSET
271 db 'Running process ...',0
272 db 'Stop',0
273 db 'Terminate',0
274 end if
275 db 0
276 msgbox_5_2:
277 dw 0
278 if lang eq ru
279 db '‘®®¡é¥­¨¥',0 ;+2 = +MB_TEXT_OFFSET
280 db '‚ᥠ§ ª®­ç¥­®',0
281 db '‡ ªàëâì ®ª­®',0
282 else
283 db 'Message',0 ;+2 = +MB_TEXT_OFFSET
284 db 'All finished',0
285 db 'Close window',0
286 end if
287 db 0
289 ;--------------------------------------------------
290 align 4
291 msgbox_lib_import:
292 mb_create dd amb_create
293 mb_reinit dd amb_reinit
294 mb_setfunctions dd amb_setfunctions
295 dd 0,0
296 amb_create db 'mb_create',0
297 amb_reinit db 'mb_reinit',0
298 amb_setfunctions db 'mb_setfunctions',0
299 ;--------------------------------------------------
300 system_path db '/sys/lib/'
301 msgbox_name db 'msgbox.obj',0
302 ;--------------------------------------------------
304 draw_square:
305 cmp byte[sh_help],0
306 je @f
307 push eax ebx ecx edx
308 mcall SF_DRAW_RECT, 105*65536+70, 15*65536+50, 0x8080ff
309 mcall SF_DRAW_TEXT, 110*65536+25, 0xffffff, txt_help
311 mov esi,0xffff
312 mov ebx,0x10000 ;format
313 movzx ecx,byte[sh_help]
314 mov edx,(150 shl 16)+40
315 mcall SF_DRAW_NUMBER
317 pop edx ecx ebx eax
320 fun_show_help:
321 inc byte[sh_help]
322 cmp byte[sh_help],10
323 jne @f
324 mov byte[sh_help],0
326 call draw_square
328 sh_help db 0
329 if lang eq ru
330 txt_help db '�®¬®éì...'
331 else
332 txt_help db 'Help...'
333 end if
335 align 16
336 i_end: ;ª®­¥æ ª®¤ 
337 rb 1024
338 thread:
339 rb 1024
340 stacktop:
341 cur_dir_path:
342 rb 4096
343 library_path:
344 rb 4096
345 file_info:
346 rb 40
347 mem: