Subversion Repositories Kolibri OS

Rev

Rev 383 | Rev 1144 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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