Subversion Repositories Kolibri OS

Rev

Rev 383 | Rev 1143 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ; <--- description --->
  2. ; compiler:     FASM 1.67
  3. ; name:         Basic window example for KolibriOS
  4. ; version:      1.02
  5. ; last update:  1/03/2007
  6. ; written by:   Ivan Poddubny
  7. ; e-mail:       ivan-yar@bk.ru
  8. ;modified by: Heavyiron
  9.  
  10. ; <--- include all MeOS stuff --->
  11. include "lang.inc"
  12. include "..\..\..\..\macros.inc"
  13.  
  14.  
  15. ; <--- start of MenuetOS application --->
  16. MEOS_APP_START
  17.  
  18.  
  19. ; <--- start of code --->
  20. CODE
  21.  
  22.    mov  eax,48                      ; get system colors
  23.    mov  ebx,3
  24.    mov  ecx,sc
  25.    mov  edx,sizeof.system_colors
  26.    mcall
  27.  
  28.   redraw:                                ; redraw event handler
  29.    call    draw_window            ; at first create and draw the window
  30.  
  31.   wait_event:                      ; main cycle
  32.     mov     eax, 10
  33.     mcall
  34.  
  35.     dec   eax                    ;   if event = 1
  36.     jz      redraw               ;   jump to redraw handler
  37.     dec   eax                    ;   else if event = 2
  38.     jz      key                    ;   jump to key handler
  39.  
  40.  
  41.   button:                         ; button event handler
  42.     mov     al, 17               ;   get button identifier
  43.     mcall
  44.  
  45.     cmp     ah, 1
  46.     jne     wait_event        ;   return if button id != 1
  47.  
  48.     or      eax, -1               ;   exit application
  49.     mcall
  50.  
  51.   key:                              ; key event handler
  52.     mov     al, 2                 ;   get key code
  53.     mcall
  54.  
  55.     jmp     wait_event
  56.  
  57.   draw_window:
  58.     mov     eax, 12                ; start drawing
  59.     mov     ebx, 1
  60.     mcall
  61.  
  62.     xor       eax, eax                      ; create and draw the window
  63.     mov     ebx, 100*65536+200 ; (window_cx)*65536+(window_sx)
  64.     mov     ecx, 100*65536+100  ; (window_cy)*65536+(window_sy)
  65.     mov     edx, [sc.work]              ; work area color
  66.     or         edx, 0x33000000        ; & window type 3
  67.     mov     edi, title                    ; window title
  68.     int        0x40
  69.  
  70.     mov     eax, 12                ; finish drawing
  71.     mov     ebx, 2
  72.     mcall
  73.  
  74.   ret
  75.  
  76. ; <--- initialised data --->
  77. DATA
  78.  
  79. if lang eq ru
  80. title db 'Шаблон программы',0
  81. else if lang eq fr
  82. title db 'La programme poncive',0
  83. else
  84. title db 'Template program',0
  85. end if
  86.  
  87. ; <--- uninitialised data --->
  88. UDATA
  89. sc   system_colors
  90.  
  91. MEOS_APP_END
  92. ; <--- end of MenuetOS application --->