1,12 → 1,12 |
; <--- description ---> |
; compiler: FASM 1.50 |
; name: Basic window example for MenuetOS |
; version: 1.01 |
; last update: 25/08/2004 |
; compiler: FASM 1.67 |
; name: Basic window example for KolibriOS |
; version: 1.02 |
; last update: 1/03/2007 |
; written by: Ivan Poddubny |
; e-mail: ivan-yar@bk.ru |
;modified by: Heavyiron |
|
|
; <--- include all MeOS stuff ---> |
include "lang.inc" |
include "macros.inc" |
18,36 → 18,28 |
|
; <--- start of code ---> |
CODE |
call draw_window ; at first create and draw the window |
|
wait_event: ; main cycle |
mov eax, 10 |
mov eax,48 ; get system colors |
mov ebx,3 |
mov ecx,sc |
mov edx,sizeof.system_colors |
int 0x40 |
|
cmp eax, 1 ; if event == 1 |
je redraw ; jump to redraw handler |
cmp eax, 2 ; else if event == 2 |
je key ; jump to key handler |
cmp eax, 3 ; else if event == 3 |
je button ; jump to button handler |
|
jmp wait_event ; else return to the start of main cycle |
|
|
redraw: ; redraw event handler |
call draw_window |
jmp wait_event |
call draw_window ; at first create and draw the window |
|
|
key: ; key event handler |
mov eax, 2 ; get key code |
wait_event: ; main cycle |
mov eax, 10 |
int 0x40 |
|
jmp wait_event |
dec eax ; if event = 1 |
jz redraw ; jump to redraw handler |
dec eax ; else if event = 2 |
jz key ; jump to key handler |
|
|
button: ; button event handler |
mov eax, 17 ; get button identifier |
mov al, 17 ; get button identifier |
int 0x40 |
|
cmp ah, 1 |
56,27 → 48,25 |
or eax, -1 ; exit application |
int 0x40 |
|
key: ; key event handler |
mov al, 2 ; get key code |
int 0x40 |
|
jmp wait_event |
|
draw_window: |
mov eax, 12 ; start drawing |
mov ebx, 1 |
int 0x40 |
|
mov eax, 0 ; create and draw the window |
mov ebx, 100*65536+300 ; (window_cx)*65536+(window_sx) |
mov ecx, 100*65536+200 ; (window_cy)*65536+(window_sy) |
mov edx, 0x03ffffff ; work area color & window type 3 |
; mov esi, 0 ; grab color (not used) |
; mov edi, 0 ; frame color (not used) |
xor eax, eax ; create and draw the window |
mov ebx, 100*65536+200 ; (window_cx)*65536+(window_sx) |
mov ecx, 100*65536+100 ; (window_cy)*65536+(window_sy) |
mov edx, [sc.work] ; work area color |
or edx, 0x33000000 ; & window type 3 |
mov edi, header ; window header |
int 0x40 |
|
mov eax, 4 ; window header |
mov ebx, 8*65536+8 ; coordinates |
mov ecx, 0x10ffffff ; color & font N1 |
mov edx, header ; address of text |
mov esi, header.size ; length of text |
int 0x40 |
|
mov eax, 12 ; finish drawing |
mov ebx, 2 |
int 0x40 |
83,20 → 73,20 |
|
ret |
|
|
|
; <--- initialised data ---> |
DATA |
lsz header,\ |
ru, " ¡«® ¯à®£à ¬¬ë",\ |
en, "Template program",\ |
fr, "La programme poncive" |
|
if lang eq ru |
header db ' ¡«® ¯à®£à ¬¬ë',0 |
else if lang eq fr |
header db 'La programme poncive',0 |
else |
header db 'Template program',0 |
end if |
|
|
; <--- uninitialised data ---> |
UDATA |
sc system_colors |
|
|
MEOS_APP_END |
; <--- end of MenuetOS application ---> |