Subversion Repositories Kolibri OS

Rev

Rev 2592 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. ;
  2. ;   PANEL SETUP
  3. ;
  4. ;------------------------------------------------------------------------------
  5. ; last update:  09/04/2012
  6. ; changed by:   Marat Zakiyanov aka Mario79, aka Mario
  7. ; changes:      Code optimizing and refactoring.
  8. ;
  9. ;------------------------------------------------------------------------------
  10.         use32
  11.         org 0x0
  12.         db 'MENUET01'           ; 8 byte id
  13.         dd 0x01                 ; header version
  14.         dd START                ; start of code
  15.         dd IM_END               ; size of image
  16.         dd I_END        ;0x8000         ; memory for app
  17.         dd stack_top            ; esp
  18.         dd 0x0                  ; boot parameters
  19.         dd 0x0                  ; path
  20. ;------------------------------------------------------------------------------
  21. include '../../../macros.inc'
  22. include 'lang.inc'
  23. ;------------------------------------------------------------------------------
  24. START:
  25. ;------------------------------------------------------------------------------
  26. align 4
  27. red:
  28.         call    draw_window
  29. ;------------------------------------------------------------------------------
  30. align 4
  31. still:
  32.         mcall   10
  33.  
  34.         cmp     eax,1   ; redraw request ?
  35.         je      red
  36.  
  37.         cmp     eax,2   ; key in buffer ?
  38.         je      key
  39.  
  40.         cmp     eax,3   ; button in buffer ?
  41.         je      button
  42.  
  43.         jmp     still
  44. ;------------------------------------------------------------------------------
  45. align 4
  46. key:
  47.         mcall   2
  48.  
  49.         shr     eax,8
  50.         cmp     eax,'0'
  51.         jb      still
  52.  
  53.         cmp     eax,'9'
  54.         jg      still
  55.  
  56.         mov     edi,[ent]
  57.         add     edi,text
  58.         mov     esi,edi
  59.         inc     esi
  60.         mov     ecx,3
  61.         cld
  62.         rep     movsb
  63.  
  64.         mov     [edi],al
  65.  
  66.         jmp     red
  67. ;------------------------------------------------------------------------------
  68. align 4
  69. button:
  70.         mcall   17
  71.  
  72.         cmp     ah,1    ; button id=1 ?
  73.         jne     noclose
  74.  
  75.         mcall   -1      ; close this program
  76. ;--------------------------------------
  77. align 4
  78. noclose:
  79.         cmp     ah,10
  80.         jne     no_apply
  81.  
  82.         mov     esi,text+17
  83.         mov     edi,panel_ini_data_area ;I_END+10
  84.         mov     ecx,12
  85. ;--------------------------------------
  86. align 4
  87. newfe:
  88.         mov     ebx,[esi]
  89.         mov     [edi],ebx
  90.         mov     [edi+4],byte ';'
  91.         add     edi,5
  92.         add     esi,55
  93.         loop    newfe
  94.  
  95.         mov     [edi],byte 'x'
  96.         mcall   70,dat_write
  97.         mov     esi,1
  98. ;--------------------------------------
  99. align 4
  100. newread:
  101.         inc     esi
  102.         mcall   9,proc_info,esi
  103.         cmp     esi,eax
  104.         jg      all_terminated
  105.  
  106.         mov     eax,[ebx+10]
  107.         and     eax,not 0x20202000
  108.         cmp     eax,'@PAN'
  109.         jne     newread
  110.  
  111.         mov     eax,[ebx+14]
  112.         and     eax,not 0x2020
  113.         cmp     ax,'EL'
  114.         jne     newread
  115.  
  116.         mcall   18,2,esi
  117.  
  118.         mcall   5,5
  119.  
  120.         mov     esi,1
  121.         jmp     newread
  122. ;--------------------------------------
  123. align 4
  124. all_terminated:
  125.         mcall   5,25
  126.  
  127.         mcall   70,panel_start
  128. ;--------------------------------------
  129. align 4
  130. no_apply:
  131.         cmp     ah,11
  132.         jb      still
  133.  
  134.         shr     eax,8
  135.         sub     eax,11
  136.         imul    eax,55
  137.         add     eax,17
  138.         mov     [ent],eax
  139.         mov     [text+eax],dword '0000'
  140.         jmp     red
  141. ;------------------------------------------------------------------------------
  142. ;   *********************************************
  143. ;   *******  WINDOW DEFINITIONS AND DRAW ********
  144. ;   *********************************************
  145. ;------------------------------------------------------------------------------
  146. align 4
  147. draw_window:
  148.         mcall   12,1
  149. ; DRAW WINDOW
  150.         xor     eax,eax
  151.         xor     esi,esi
  152.         mcall   ,<100,385>,<100,190>,0x14ffffff,,labelt
  153.  
  154.         mcall   8,<25,335>,<162,12>,10,0x80a0c0 ;0x6677cc
  155.  
  156.         mov     ebx,340*65536+20
  157.         mov     ecx,34*65536+10
  158.         inc     edx     ;11 - button
  159. ;--------------------------------------
  160. align 4
  161. newb:
  162.         mcall
  163.         add     ecx,10*65536
  164.         inc     edx
  165.         cmp     edx,23
  166.         jb      newb
  167.  
  168.         mov     ebx,25*65536+35           ; draw info text with function 4
  169.         mov     ecx,0x224466
  170.         mov     edx,text
  171.         mov     esi,55
  172.         mov     eax,4
  173. ;--------------------------------------
  174. align 4
  175. newline:
  176.         mcall
  177.         add     ebx,10
  178.         add     edx,55
  179.         cmp     [edx],byte 'x'
  180.         jne     newline
  181.  
  182.         mcall   12,2
  183.         ret
  184. ;------------------------------------------------------------------------------
  185. align 4
  186. ; DATA AREA
  187. if lang eq it
  188.         text:
  189.                 db 'largehzza        0000  :  0 for full screen width     <'
  190.                 db 'pulsanti         0000  :  0 no frames  , 1 frames     <'
  191.                 db 'soften_up        0001  :  0 no         , 1 si         <'
  192.                 db 'soften_down      0001  :  0 no         , 1 si         <'
  193.                 db 'minimize_left    0001  :  0 no         , 1 si         <'
  194.                 db 'minimize_right   0001  :  0 no         , 1 si         <'
  195.                 db 'posizione icone  0100  :  posizione in pixel          <'
  196.                 db 'menu_enable      0001  :  0 no         , 1 si         <'
  197.                 db 'setup_enable     0001  :  0 no         , 1 si         <'
  198.                 db 'graph_text       0001  :  0 grafica    , 1 text       <'
  199.                 db 'soften_middle    0001  :  0 no         , 1 si         <'
  200.                 db 'icone            0001  :  0 start      , 1 attivato   <'
  201.                 db '                                                       '
  202.                 db '                        Applica                        '
  203.                 db 'x'
  204.  
  205.         labelt:
  206.                 db 'Setup pannello'
  207.         labellen:
  208. else
  209.         text:
  210.                 db 'width            0000  :  0 for full screen width     <'
  211.                 db 'buttons          0000  :  0 no frames  , 1 frames     <'
  212.                 db 'soften_up        0001  :  0 no         , 1 yes        <'
  213.                 db 'soften_down      0001  :  0 no         , 1 yes        <'
  214.                 db 'minimize_left    0001  :  0 no         , 1 yes        <'
  215.                 db 'minimize_right   0001  :  0 no         , 1 yes        <'
  216.                 db 'icons_position   0100  :  position in pixels          <'
  217.                 db 'menu_enable      0001  :  0 no         , 1 yes        <'
  218.                 db 'setup_enable     0001  :  0 no         , 1 yes        <'
  219.                 db 'graph_text       0001  :  0 graphics   , 1 text       <'
  220.                 db 'soften_middle    0001  :  0 no         , 1 yes        <'
  221.                 db 'icons            0001  :  0 start      , 1 activate   <'
  222.                 db '                                                       '
  223.                 db '                         APPLY                         '
  224.                 db 'x'
  225.  
  226.         labelt:
  227.                 db 'Panel setup'
  228.         labellen:
  229. end if
  230. ;------------------------------------------------------------------------------
  231. align 4
  232. ent     dd  17
  233. ;------------------------------------------------------------------------------
  234. align 4
  235. panel_start:
  236.         dd 7
  237.         dd 0
  238.         dd 0
  239.         dd 0
  240.         dd 0
  241.         db '/RD/1/@PANEL',0
  242. ;------------------------------------------------------------------------------
  243. align 4
  244. dat_write:
  245.         dd 2
  246.         dd 0
  247.         dd 0
  248.         dd 5*12+1
  249.         dd panel_ini_data_area  ;I_END+10
  250.         db 'PANEL.DAT',0
  251. ;------------------------------------------------------------------------------
  252. IM_END:
  253. ;------------------------------------------------------------------------------
  254. align 4
  255. proc_info:
  256.         rb 1024
  257. ;------------------------------------------------------------------------------
  258. align 4
  259.         rb 1024
  260. stack_top:
  261. ;------------------------------------------------------------------------------
  262. align 4
  263. panel_ini_data_area:
  264.         rb 61
  265. ;------------------------------------------------------------------------------
  266. I_END:
  267. ;------------------------------------------------------------------------------
  268.