Subversion Repositories Kolibri OS

Rev

Rev 4328 | Go to most recent revision | 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 0x0
  6.   db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
  7.   dd 0x1
  8.   dd start
  9.   dd i_end ; à §¬¥à ¯à¨«®¦¥­¨ï
  10.   dd mem
  11.   dd stacktop
  12.   dd 0x0 ;library_path
  13.   dd cur_dir_path
  14.  
  15. include '../../macros.inc'
  16. include '../../develop/libraries/box_lib/load_lib.mac'
  17. include 'lang.inc'
  18.  
  19. @use_library
  20.  
  21. align 4
  22. start:
  23.  
  24.   mov eax,40
  25.   mov ebx,0x25 ;¬ áª  ®¦¨¤ ¥¬ëå ᮡë⨩
  26.   mcall
  27.  
  28.   sys_load_library  msgbox_name, cur_dir_path, library_path, system_path, \
  29.     err_message_found_lib, head_f_l, msgbox_lib_import, err_message_import, head_f_i
  30.  
  31.  
  32. red_win:
  33.   mcall 12,1
  34.  
  35.   xor eax,eax
  36.   mov ebx,50*65536+200
  37.   mov ecx,30*65536+170
  38.   mov edx,0xffffd0
  39.   or  edx,0x33000000
  40.   mov edi,hed
  41.   mcall
  42.  
  43.   mov eax,8 ;ª­®¯ª 
  44.   mov ebx,10*65536+30
  45.   mov ecx,110*65536+20
  46.   mov edx,7
  47.   mov esi,0xffd040
  48.   mcall
  49.  
  50.   mov ebx,10*65536+30
  51.   mov ecx,85*65536+20
  52.   mov edx,6
  53.   mcall
  54.  
  55.   mov ebx,10*65536+30
  56.   mov ecx,60*65536+20
  57.   mov edx,5
  58.   mcall
  59.  
  60.   mov ebx,10*65536+30
  61.   mov ecx,35*65536+20
  62.   mov edx,4
  63.   mcall
  64.  
  65.   mov ebx,10*65536+30
  66.   mov ecx,10*65536+20
  67.   mov edx,3
  68.   mcall
  69.  
  70.   mov eax,4 ;à¨á®¢ ­¨¥ ⥪áâ 
  71.   mov ebx,50*65536+115
  72.   mov ecx,0x4000d0
  73.   or  ecx,0x80000000
  74.   mov edx,txt140
  75.   mcall
  76.  
  77.   mov ebx,50*65536+90
  78.   mov edx,txt139
  79.   mcall
  80.  
  81.   mov ebx,50*65536+65
  82.   mov edx,txt138
  83.   mcall
  84.  
  85.   mov ebx,50*65536+40
  86.   mov edx,txt137
  87.   mcall
  88.  
  89.   mov ebx,50*65536+15
  90.   mov edx,txt136
  91.   mcall
  92.  
  93.   push eax ebx ecx edx esi
  94.   ;line numbers
  95.   mov eax,47
  96.   mov esi,0xd00000
  97.   mov ebx,0x10000 ;format
  98.  
  99.   ; --- draw codes ---
  100.   xor ecx,ecx
  101.   mov cl,byte[msgbox_1]
  102.   mov dx,25
  103.   shl edx,16
  104.   mov dx,15
  105.   int 0x40
  106.  
  107.   mov cl,byte[msgbox_2]
  108.   add dx,25
  109.   int 0x40
  110.  
  111.   mov cl,byte[msgbox_3]
  112.   add dx,25
  113.   int 0x40
  114.  
  115.   mov cl,byte[msgbox_4]
  116.   add dx,25
  117.   int 0x40
  118.  
  119.   mov cl,byte[msgbox_5]
  120.   add dx,25
  121.   int 0x40
  122.  
  123.   pop esi edx ecx ebx eax
  124.   call draw_square
  125.   mcall 12,2
  126.  
  127. still:
  128.   mov eax,10
  129.   mcall
  130.  
  131.   cmp al,1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
  132.   jz red_win
  133.   cmp al,3
  134.   jz button
  135.   jmp still
  136.  
  137. button:
  138.   mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
  139.  
  140.   cmp ah,3
  141.   jz  but_1
  142.   cmp ah,4
  143.   jz  but_2
  144.   cmp ah,5
  145.   jz  but_3
  146.   cmp ah,6
  147.   jz  but_4
  148.   cmp ah,7
  149.   jz  but_5
  150.  
  151.   cmp ah,1
  152.   jne still
  153. .exit:
  154.   mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
  155.  
  156. but_1:
  157.   push thread
  158.   push msgbox_1
  159.   call [mb_create]
  160.   jmp still
  161.  
  162. but_2:
  163.   push thread
  164.   push msgbox_2
  165.   call [mb_create]
  166.     ;mov eax,5
  167.     ;mov ebx,50
  168.     ;int 0x40
  169.   push msgbox_2_funct
  170.   call [mb_setfunctions]
  171.   jmp still
  172.  
  173. but_3:
  174.   push thread
  175.   push msgbox_3
  176.   call [mb_create]
  177.   jmp still
  178.  
  179. but_4:
  180.   push thread
  181.   push msgbox_4
  182.   call [mb_create]
  183.   jmp still
  184.  
  185. but_5:
  186.   push thread
  187.   push msgbox_5
  188.   call [mb_create]
  189.  
  190.   mcall 5,100 ;stop program
  191.  
  192.   push msgbox_5_2
  193.   call [mb_reinit]
  194.  
  195.   jmp still
  196.  
  197. if lang eq ru
  198.   txt136 db '¯à®á⮥',0
  199.   txt137 db '3 ª­®¯ª¨',0
  200.   txt138 db '3 áâப¨',0
  201.   txt139 db '¡®«ì讥',0
  202.   txt140 db 'mb_reinit',0
  203.   hed db 'à¨¬¥à ¨á¯®«ì§®¢ ­¨ï MsgBox',0
  204. else
  205.   txt136 db 'Simple',0
  206.   txt137 db '3 buttons',0
  207.   txt138 db '3 lines',0
  208.   txt139 db 'Big',0
  209.   txt140 db 'mb_reinit',0
  210.   hed db 'MsgBox usage example',0
  211. end if  
  212. ;sc system_colors
  213.  
  214.  
  215. ;---------------------------------------------------------------------
  216. msgbox_1:
  217.   dw 0
  218.   db 'MBox',0 ;+2 = +MB_TEXT_OFFSET
  219. if lang eq ru
  220.   db 'à¨¬¥à',0
  221.   db '‚¨¦ã',0 ;button1
  222. else
  223.   db 'Example',0
  224.   db 'I see!',0 ;button1
  225. end if
  226.   db 0
  227. msgbox_2:
  228.   dw 0
  229.   db 'MBox 3 buttons',0 ;+2 = +MB_TEXT_OFFSET
  230. if lang eq ru
  231.   db 'à¨¬¥à á 3-¬ï ª­®¯ª ¬¨',0
  232.   db '„ ',0 ;button1
  233.   db 'Žâ¬¥­ ',0 ;button2
  234.   db '®¬®éì',0 ;button3
  235. else
  236.   db '3 buttons example',0
  237.   db 'Yes',0 ;button1
  238.   db 'Cancel',0 ;button2
  239.   db 'Help',0 ;button3
  240. end if
  241.   db 0
  242. msgbox_2_funct:
  243.   dd 0
  244.   dd 0
  245.   dd fun_show_help
  246.  
  247. msgbox_3:
  248.   dw 0
  249.   db 'MBox 3 lines',0 ;+2 = +MB_TEXT_OFFSET
  250. if lang eq ru
  251.   db '‘âப  1',13,'‘âப  2',13,'‘âப  3',0
  252.   db '2009 £.',0 ;button1
  253. else
  254.   db 'Line 1',13,'Line 2',13,'Line 3',0
  255.   db 'Year 2009',0 ;button1
  256. end if  
  257.   db 0
  258. msgbox_4:
  259.   dw 0
  260. if lang eq ru
  261.   db '‚¢¥¤¨â¥ ¤¥­ì',0 ;+2 = +MB_TEXT_OFFSET
  262. else
  263.   db 'Select day',0 ;+2 = +MB_TEXT_OFFSET
  264. end if
  265.   db '  @@@@@@@@@@@@            @@@@@@@@',13
  266.   db ' @............@          @........@',13
  267.   db '@..............@        @..........@',13
  268.   db '@.......@@@.....@      @......@.....@',13
  269.   db '@.......@  @.....@@@@@@......@@......@',13
  270.   db '@......@   @.................@@.......@',13
  271.   db ' @....@   @.....@@......@@....@.......@',13
  272.   db '  @..@    @.........@.........@......@',13
  273.   db '   @@     @...................@@....@',13
  274.   db '           @.......@@@.......@  @..@',13
  275.   db '            @...............@    @@',13
  276.   db '            @...............@',13
  277.   db '           @.................@',13
  278.   db '          @...................@',13
  279.   db '         @.....................@',13
  280.   db '        @.......@@......@@......@  @@',13
  281.   db '       @......@....@..@....@.....@@..@',13
  282.   db '       @......@....@..@....@.........@',13
  283.   db '        @@@@@@@@@@@@@@@@@@@@@@@@@@@@@',0
  284. if lang eq ru
  285.   db '­',0
  286.   db '‚â',0
  287.   db '‘à',0
  288.   db '—â',0
  289.   db 'â',0
  290.   db '‘¡',0
  291.   db '‚®áªà¥á¥­¨¥',0
  292. else
  293.   db 'Sun',0
  294.   db 'Mon',0
  295.   db 'Tue',0
  296.   db 'Wed',0
  297.   db 'Thu',0
  298.   db 'Fri',0
  299.   db 'Sat',0
  300. end if
  301.   db 0
  302. msgbox_5:
  303.   dw 0
  304. if lang eq ru
  305.   db '‘®®¡é¥­¨¥',0 ;+2 = +MB_TEXT_OFFSET
  306.   db '‚믮«­ïî ¯à®æ¥áá ...',0
  307.   db 'Žáâ ­®¢¨âì',0
  308.   db 'à¥à¢ âì',0
  309. else
  310.   db 'Message',0 ;+2 = +MB_TEXT_OFFSET
  311.   db 'Running process ...',0
  312.   db 'Stop',0
  313.   db 'Abort',0
  314. end if
  315.   db 0
  316. msgbox_5_2:
  317.   dw 0
  318. if lang eq ru
  319.   db '‘®®¡é¥­¨¥',0 ;+2 = +MB_TEXT_OFFSET
  320.   db '‚ᥠ§ ª®­ç¥­®',0
  321.   db '‡ ªàëâì ®ª­®',0
  322. else
  323.   db 'Message',0 ;+2 = +MB_TEXT_OFFSET
  324.   db 'All finished',0
  325.   db 'Close window',0
  326. end if
  327.   db 0
  328.  
  329. ;--------------------------------------------------
  330. align 4
  331. msgbox_lib_import:
  332.   mb_create dd amb_create
  333.   mb_reinit dd amb_reinit
  334.   mb_setfunctions dd amb_setfunctions
  335.   dd 0,0
  336.   amb_create db 'mb_create',0
  337.   amb_reinit db 'mb_reinit',0
  338.   amb_setfunctions db 'mb_setfunctions',0
  339. ;--------------------------------------------------
  340. system_path db '/sys/lib/'
  341. msgbox_name db 'msgbox.obj',0
  342. err_message_found_lib db 'Sorry I cannot load library msgbox.obj',0
  343. head_f_i:
  344. head_f_l db 'System error',0
  345. err_message_import db 'Error on load import library msgbox.obj',0
  346. ;--------------------------------------------------
  347.  
  348. draw_square:
  349.   cmp byte[sh_help],0
  350.   je @f
  351.     push eax ebx ecx edx
  352.     mov eax,13 ;à¨á®¢ ­¨¥ ¯àאַ㣮«ì­¨ª 
  353.     mov ebx,105*65536+70
  354.     mov ecx,15*65536+50
  355.     mov edx,0x8080ff
  356.     int 0x40
  357.  
  358.     mov eax,4 ;à¨á®¢ ­¨¥ ⥪áâ 
  359.     mov ebx,110*65536+25
  360.     mov ecx,0xffffff
  361.     mov edx,txt_help
  362.     mov esi,9
  363.     mcall
  364.  
  365.     mov eax,47
  366.     mov esi,0xffff
  367.     mov ebx,0x10000 ;format
  368.     xor ecx,ecx
  369.     mov cl,byte[sh_help]
  370.     mov dx,150
  371.     shl edx,16
  372.     mov dx,40
  373.     int 0x40
  374.  
  375.     pop edx ecx ebx eax
  376.   @@:
  377.   ret
  378. fun_show_help:
  379.   inc byte[sh_help]
  380.   cmp byte[sh_help],10
  381.   jne @f
  382.     mov byte[sh_help],0
  383.   @@:
  384.   call draw_square
  385.   ret
  386. sh_help db 0
  387. if lang eq ru
  388. txt_help db '®¬®éì...'
  389. else
  390. txt_help db 'Help...'
  391. end if
  392.  
  393. i_end: ;ª®­¥æ ª®¤ 
  394.     rb 1024
  395.   thread:
  396.     rb 1024
  397. stacktop:
  398.   cur_dir_path:
  399.     rb 4096
  400.   library_path:
  401.     rb 4096
  402.   file_info:
  403.     rb 40
  404. mem:
  405.