Subversion Repositories Kolibri OS

Rev

Rev 4330 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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
  8.  
  9. include '../../KOSfuncs.inc'
  10. include '../../macros.inc'
  11. include '../../proc32.inc'
  12. include '../../load_lib.mac'
  13. include 'lang.inc'
  14.  
  15. @use_library
  16.  
  17. align 4
  18. start:
  19.   mcall SF_SET_EVENTS_MASK,0x25 ;¬ áª  ®¦¨¤ ¥¬ëå ᮡë⨩
  20.  
  21.   sys_load_library  msgbox_name, library_path, system_path, msgbox_lib_import
  22.  
  23.  
  24. red_win:
  25.   mcall SF_REDRAW,SSF_BEGIN_DRAW
  26.  
  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
  34.  
  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
  41.  
  42.   mov ebx,10*65536+30
  43.   mov ecx,85*65536+20
  44.   mov edx,6
  45.   mcall
  46.  
  47.   mov ebx,10*65536+30
  48.   mov ecx,60*65536+20
  49.   mov edx,5
  50.   mcall
  51.  
  52.   mov ebx,10*65536+30
  53.   mov ecx,35*65536+20
  54.   mov edx,4
  55.   mcall
  56.  
  57.   mov ebx,10*65536+30
  58.   mov ecx,10*65536+20
  59.   mov edx,3
  60.   mcall
  61.  
  62.   mov eax,4 ;à¨á®¢ ­¨¥ ⥪áâ 
  63.   mov ebx,50*65536+115
  64.   mov ecx,0x4000d0
  65.   or  ecx,0x80000000
  66.   mov edx,txt5
  67.   mcall
  68.  
  69.   mov ebx,50*65536+90
  70.   mov edx,txt4
  71.   mcall
  72.  
  73.   mov ebx,50*65536+65
  74.   mov edx,txt3
  75.   mcall
  76.  
  77.   mov ebx,50*65536+40
  78.   mov edx,txt2
  79.   mcall
  80.  
  81.   mov ebx,50*65536+15
  82.   mov edx,txt1
  83.   mcall
  84.  
  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
  90.  
  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
  98.  
  99.   mov cl,byte[msgbox_2]
  100.   add dx,25
  101.   int 0x40
  102.  
  103.   mov cl,byte[msgbox_3]
  104.   add dx,25
  105.   int 0x40
  106.  
  107.   mov cl,byte[msgbox_4]
  108.   add dx,25
  109.   int 0x40
  110.  
  111.   mov cl,byte[msgbox_5]
  112.   add dx,25
  113.   int 0x40
  114.  
  115.   pop esi edx ecx ebx eax
  116.   call draw_square
  117.   mcall SF_REDRAW,SSF_END_DRAW
  118.  
  119. align 4
  120. still:
  121.   mcall SF_WAIT_EVENT
  122.  
  123.   cmp al,1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
  124.   jz red_win
  125.   cmp al,3
  126.   jz button
  127.   jmp still
  128.  
  129. button:
  130.   mcall SF_GET_BUTTON
  131.  
  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
  142.  
  143.   cmp ah,1
  144.   jne still
  145. .exit:
  146.   mcall SF_TERMINATE_PROCESS
  147.  
  148. but_1:
  149.   stdcall [mb_create],msgbox_1,thread
  150.   jmp still
  151.  
  152. but_2:
  153.   stdcall [mb_create],msgbox_2,thread
  154.   stdcall [mb_setfunctions],msgbox_2_funct
  155.   jmp still
  156.  
  157. but_3:
  158.   stdcall [mb_create],msgbox_3,thread
  159.   jmp still
  160.  
  161. but_4:
  162.   stdcall [mb_create],msgbox_4,thread
  163.   jmp still
  164.  
  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
  170.  
  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
  187.  
  188.  
  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
  218.  
  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
  288.  
  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. ;--------------------------------------------------
  303.  
  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
  310.  
  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
  316.  
  317.     pop edx ecx ebx eax
  318.   @@:
  319.   ret
  320. fun_show_help:
  321.   inc byte[sh_help]
  322.   cmp byte[sh_help],10
  323.   jne @f
  324.     mov byte[sh_help],0
  325.   @@:
  326.   call draw_square
  327.   ret
  328. sh_help db 0
  329. if lang eq ru
  330. txt_help db '®¬®éì...'
  331. else
  332. txt_help db 'Help...'
  333. end if
  334.  
  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:
  348.