Subversion Repositories Kolibri OS

Rev

Rev 485 | Rev 1144 | 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.     mcall   9, procinfo, -1
  32.  
  33.   wait_event:                      ; main cycle
  34.     mov     eax, 10
  35.     mcall
  36.  
  37.     dec   eax                    ;   if event = 1
  38.     jz      redraw               ;   jump to redraw handler
  39.     dec   eax                    ;   else if event = 2
  40.     jz      key                    ;   jump to key handler
  41.  
  42.  
  43.   button:                         ; button event handler
  44.     mov     al, 17               ;   get button identifier
  45.     mcall
  46.  
  47.     cmp     ah, 1
  48.     jne     wait_event        ;   return if button id != 1
  49.  
  50.     or      eax, -1               ;   exit application
  51.     mcall
  52.  
  53.   key:                              ; key event handler
  54.     mov     al, 2                 ;   get key code
  55.     mcall
  56.  
  57.     jmp     wait_event
  58.  
  59.   draw_window:
  60.     mov     eax, 12                ; start drawing
  61.     mov     ebx, 1
  62.     mcall
  63.  
  64.     xor       eax, eax                      ; create and draw the window
  65.     mov     ebx, 100*65536+200 ; (window_cx)*65536+(window_sx)
  66.     mov     ecx, 100*65536+100  ; (window_cy)*65536+(window_sy)
  67.     mov     edx, [sc.work]              ; work area color
  68.     or         edx, 0x33000000        ; & window type 3
  69.     mov     edi, title                    ; window title
  70.     int        0x40
  71.  
  72.     mov     eax, 12                ; finish drawing
  73.     mov     ebx, 2
  74.     mcall
  75.  
  76.   ret
  77.  
  78. ; <--- initialised data --->
  79. DATA
  80.  
  81. if lang eq ru
  82. title db '˜ ¡«®­ ¯à®£à ¬¬ë',0
  83. else if lang eq fr
  84. title db 'La programme poncive',0
  85. else
  86. title db 'Template program',0
  87. end if
  88.  
  89. ; <--- uninitialised data --->
  90. UDATA
  91. sc   system_colors
  92.  
  93. procinfo    rb  1024
  94.  
  95. MEOS_APP_END
  96. ; <--- end of MenuetOS application --->