Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;
  2. ; END
  3. ;
  4.  
  5. include "lang.inc"
  6. include "macros.inc"
  7.  
  8. meos_app_start
  9. code
  10.  
  11.     mov   eax,40
  12.     mov   ebx,0111b
  13.     int   0x40
  14.  
  15.     call  draw_window
  16.  
  17. still:
  18.  
  19.     mov  eax,10                 ; wait here for event
  20. ;    mov  ebx,100
  21.     int  0x40
  22.  
  23.     cmp  eax,1
  24.     jz   red
  25.     cmp  eax,2
  26.     jz   key
  27.     cmp  eax,3
  28.     jz   button
  29.  
  30.     jmp  still
  31.  
  32.   red:
  33.     call draw_window
  34.     jmp  still
  35.  
  36.   key:
  37.      mcall 2
  38.      cmp  ah,13
  39.      jz   restart
  40.      cmp  ah,27
  41.      jz   close_1
  42.      cmp  ah,180
  43.      jz   restart_kernel
  44.      cmp  ah,181
  45.      jz   power_off
  46.      jmp  red
  47.  
  48.   button:
  49.     mov  eax,17
  50.     int  0x40
  51.  
  52.     cmp  ah,1
  53.     jne  no_1
  54.  power_off:
  55.     mcall 18,9,2
  56.     jmp  close_1
  57.  
  58. no_1:
  59.     cmp  ah,3
  60.     jne  no_2
  61.  restart:
  62.     mcall 18,9,3
  63.     jmp  close_1
  64.  
  65. no_2:
  66.     cmp  ah,2
  67.     jne  no_4
  68.  
  69.   restart_kernel:
  70.     mcall 18,9,4
  71.  
  72. no_4:
  73.     cmp  ah,4
  74.     jne  still
  75.  
  76.   close_1:
  77.     or   eax,-1    ; close this program
  78.     int  0x40
  79.  
  80.  
  81. draw_window:
  82.  
  83.     pusha
  84.  
  85.     mov  eax,48
  86.     mov  ebx,3
  87.     mov  ecx,sc
  88.     mov  edx,sizeof.system_colors
  89.     int  0x40
  90.  
  91.     mov  eax,12                    ; tell os about redraw start
  92.     mov  ebx,1
  93.     int  0x40
  94.  
  95.     mov  eax,14                    ; get screen max x & max y
  96.     int  0x40
  97.  
  98.     xor  ecx,ecx
  99.     mov  cx,ax
  100.  
  101.     shr  eax,17
  102.     sub  eax,110
  103.     shl  eax,16
  104.     mov  ebx,eax
  105.     add  ebx,220
  106.  
  107.     shr  ecx,1
  108.     sub  ecx,50
  109.     shl  ecx,16
  110.     add  ecx,100
  111.  
  112.     mov  eax,0                     ; define and draw window
  113.     mov  edx,[sc.work_button]
  114.     mov  esi,edx ;[sc.work_button]
  115.     xor edi,edi
  116.     int  0x40
  117.  
  118.    xor edx,edx
  119.    mcall 13,14 shl 16+90,25 shl 16+27
  120.    mcall 13,117 shl 16+90,
  121.    mcall 13,14 shl 16+90,59 shl 16+27
  122.    mcall 13,117 shl 16+90,
  123.  
  124.    mcall 8,15 shl 16+87,26 shl 16+24,1,0xdd7700
  125.    inc dl
  126.    mcall 8,118 shl 16+87,,,0xbbbb   ;cccc
  127.    inc dl
  128.    mcall 8,15 shl 16+87,60 shl 16+24,,0xbb00
  129.    inc dl
  130.    mcall 8,118 shl 16+87,,,0xbbbbbb ;cccccc
  131.  
  132.     mov  eax,4                     ; 0x00000004 = write text
  133.     mov  ebx,75*65536+10
  134.     mov  ecx,[sc.work_button_text] ; 8b window nro - RR GG BB color
  135.     or   ecx,0x10000000
  136.     mov  edx,label1                ; pointer to text beginning
  137.     mov  esi,label1_len            ; text length
  138.     int  0x40
  139.  
  140.     mov  ecx,0x10ffffff
  141.     mov  ebx,25*65536+30
  142.     mov  edx,label2                ; pointer to text beginning
  143.     mov  esi,label2_len            ; text length
  144.     int  0x40
  145.  
  146.     mov  ebx,20*65536+64
  147.     mov  edx,label3                ; pointer to text beginning
  148.     mov  esi,label3_len            ; text length
  149.     int  0x40
  150.  
  151.     mov  ecx,0xffffff
  152.     mov  ebx,45*65536+41
  153.     mov  edx,label4                ; pointer to text beginning
  154.     mov  esi,label4_len            ; text length
  155.     int  0x40
  156.  
  157.     mov  ebx,40*65536+75
  158.     mov  edx,label5                ; pointer to text beginning
  159.     mov  esi,label5_len            ; text length
  160.     int  0x40
  161.  
  162.     mov  eax,12                    ; tell os about redraw end
  163.     mov  ebx,2
  164.     int  0x40
  165.  
  166.     popa
  167.  
  168.     ret
  169.  
  170.  
  171.  
  172. data
  173.  
  174. if lang eq ru
  175.  
  176.   label1:
  177.       db   'ВАШ ВЫБОР:'
  178.   label1_len = $ - label1
  179.  
  180.   label2:
  181.       db   'ВЫКЛЮЧИТЬ         ЯДРО'
  182.   label2_len = $ - label2
  183.  
  184.   label3:
  185.       db   'ПЕРЕЗАПУСК       ОТМЕНА'
  186.   label3_len = $ - label3
  187.  
  188.   label4:
  189.       db   '(End)            (Home)'
  190.   label4_len = $ - label4
  191.  
  192.   label5:
  193.       db   '(Enter)           (Esc)'
  194.   label5_len = $ - label5
  195.  
  196. else
  197.  
  198.   label1:
  199.       db   ' SELECT:'
  200.   label1_len = $ - label1
  201.  
  202.   label2:
  203.       db   'POWER OFF        KERNEL'
  204.   label2_len = $ - label2
  205.  
  206.   label3:
  207.       db   '  RESTART         CANCEL'
  208.   label3_len = $ - label3
  209.  
  210.   label4:
  211.       db   '(End)            (Home)'
  212.   label4_len = $ - label4
  213.  
  214.   label5:
  215.       db   '(Enter)           (Esc)'
  216.   label5_len = $ - label5  
  217.  
  218. end if
  219.  
  220.  
  221. udata
  222.   sc  system_colors
  223.  
  224. meos_app_end
  225.