forked from KolibriOS/kolibrios
Updated example.asm, added to english distribution.
git-svn-id: svn://kolibrios.org@3527 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -1,172 +1,153 @@
|
||||
; <20><><EFBFBD><EFBFBD>⮩ <20>ਬ<EFBFBD><E0A8AC> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD> KolibriOS
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD>稢<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⮩ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; ;
|
||||
; EXAMPLE APPLICATION ;
|
||||
; ;
|
||||
; Compile with FASM ;
|
||||
; ;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
; The header
|
||||
|
||||
use32 ; Tell compiler to use 32 bit instructions
|
||||
|
||||
org 0x0 ; the base address of code, always 0x0
|
||||
|
||||
db 'MENUET01'
|
||||
dd 0x01
|
||||
dd START
|
||||
dd I_END
|
||||
dd 0x100000
|
||||
dd 0x7fff0
|
||||
dd 0, 0
|
||||
|
||||
; The code area
|
||||
|
||||
include 'macros.inc'
|
||||
|
||||
START: ; start of execution
|
||||
call draw_window ; draw the window
|
||||
|
||||
; After the window is drawn, it's practical to have the main loop.
|
||||
; Events are distributed from here.
|
||||
|
||||
event_wait:
|
||||
mov eax, 10 ; function 10 : wait until event
|
||||
mcall ; event type is returned in eax
|
||||
|
||||
cmp eax, 1 ; Event redraw request ?
|
||||
je red ; Expl.: there has been activity on screen and
|
||||
; parts of the applications has to be redrawn.
|
||||
|
||||
cmp eax, 2 ; Event key in buffer ?
|
||||
je key ; Expl.: User has pressed a key while the
|
||||
; app is at the top of the window stack.
|
||||
|
||||
cmp eax, 3 ; Event button in buffer ?
|
||||
je button ; Expl.: User has pressed one of the
|
||||
; applications buttons.
|
||||
|
||||
jmp event_wait
|
||||
|
||||
; The next section reads the event and processes data.
|
||||
|
||||
red: ; Redraw event handler
|
||||
call draw_window ; We call the window_draw function and
|
||||
jmp event_wait ; jump back to event_wait
|
||||
|
||||
key: ; Keypress event handler
|
||||
mov eax, 2 ; The key is returned in ah. The key must be
|
||||
mcall ; read and cleared from the system queue.
|
||||
jmp event_wait ; Just read the key, ignore it and jump to event_wait.
|
||||
|
||||
button: ; Buttonpress event handler
|
||||
mov eax,17 ; The button number defined in window_draw
|
||||
mcall ; is returned to ah.
|
||||
|
||||
cmp ah,1 ; button id=1 ?
|
||||
jne noclose
|
||||
mov eax,-1 ; Function -1 : close this program
|
||||
mcall
|
||||
|
||||
noclose:
|
||||
jmp event_wait ; This is for ignored events, useful at development
|
||||
|
||||
; *********************************************
|
||||
; ****** WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
;
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD> FASM'<27><>
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> example.asm <20><>१ <20>ணࠬ<E0AEA3><E0A0AC> FASM (<28><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
; <20><> ࠡ<>祬 <20>⮫<EFBFBD>)
|
||||
; <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F9 <20> Tinypad'<27>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨
|
||||
; <20>⮡ࠦ<E2AEA1><E0A0A6><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>᪥ <20>⫠<EFBFBD><E2ABA0><EFBFBD> (<28>ணࠬ<E0AEA3><E0A0AC> BOARD)
|
||||
; The static window parts are drawn in this function. The window canvas can
|
||||
; be accessed later from any parts of this code (thread) for displaying
|
||||
; processes or recorded data, for example.
|
||||
;
|
||||
; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC><EFBFBD><E0AEA2><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨 <20><><EFBFBD><EFBFBD>頥<EFBFBD><E9A0A5><EFBFBD> <20> ॣ<><E0A5A3><EFBFBD><EFBFBD> eax.
|
||||
; <20>맮<EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20>㭪樨 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢫<EFBFBD><E2A2AB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "int 0x40".
|
||||
; <20><><EFBFBD> ॣ<><E0A5A3><EFBFBD><EFBFBD><EFBFBD>, <20><EFBFBD> <> 㪠<><E3AAA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><E9A0A5><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>,
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॣ<><E0A5A3><EFBFBD><EFBFBD> 䫠<><E4ABA0><EFBFBD> eflags, <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
;
|
||||
; <20>ਬ<EFBFBD><E0A8AC>:
|
||||
; mov eax, 1 ;<3B>㭪<EFBFBD><E3ADAA><EFBFBD> 1 - <20><><EFBFBD>⠢<EFBFBD><E2A0A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
; ;ᯨ᮪ <20><><EFBFBD><EFBFBD>㭪権 <20><>. <20> DOCPACK - sysfuncr.txt
|
||||
; mov ebx, 10 ; <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> x=10
|
||||
; mov ecx, 20 ; <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> y=10
|
||||
; mov edx, 0xFFFfff ;梥<> <20><>窨
|
||||
; int 0x40 ;<3B>맢<EFBFBD><EBA7A2><EFBFBD> <20>㭪<EFBFBD><E3ADAA><EFBFBD>
|
||||
;
|
||||
; <20><><EFBFBD><EFBFBD> ᠬ<><E1A0AC> <20> <20>ᯮ<EFBFBD>짮<EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
; mcall 1, 10, 20, 0xFFFfff
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
use32 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ०<><E0A5A6> <20><>ᥬ<EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD>
|
||||
org 0x0 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
db 'MENUET01' ; 8-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䨪<EFBFBD><E4A8AA><EFBFBD><EFBFBD> MenuetOS
|
||||
dd 0x01 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>ᥣ<EFBFBD><E1A5A3> 1)
|
||||
dd START ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ࢮ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dd I_END ; ࠧ<><E0A0A7><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
|
||||
dd 0x1000 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dd 0x1000 ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>設<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
dd 0x0 ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC>
|
||||
dd 0x0 ; <20><>१<EFBFBD>ࢨ<E0A2A8><E0AEA2><EFBFBD>
|
||||
|
||||
include 'lang.inc'
|
||||
include 'macros.inc' ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ᥬ<EFBFBD><E1A5AC><EFBFBD><EFBFBD>騪<EFBFBD><E9A8AA>!
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ----------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
START:
|
||||
|
||||
red: ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
call draw_window ; <20><><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ----------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
still:
|
||||
mcall 10 ; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 10 - <20><><EFBFBD><EFBFBD><EFBFBD> ᮡ<><E1AEA1><EFBFBD><EFBFBD>
|
||||
|
||||
cmp eax,1 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2><EFBFBD> <20><><EFBFBD><EFBFBD> ?
|
||||
je red ; <20> <20><> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD> red
|
||||
cmp eax,2 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ?
|
||||
je key ; <20> <20><> - <20><> key
|
||||
cmp eax,3 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ?
|
||||
je button ; <20> <20><> - <20><> button
|
||||
|
||||
jmp still ; <20> <20><>㣮<EFBFBD> ᮡ<>⨥ - <20> <20><>砫<EFBFBD> 横<><E6A8AA>
|
||||
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
|
||||
key: ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mcall 2 ; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 2 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ᨬ<><E1A8AC><EFBFBD><EFBFBD> (<28> ah)
|
||||
|
||||
mov [Music+1], ah ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ᨬ<><E1A8AC><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 55-55: <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ("PlayNote")
|
||||
; esi - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
; mov eax,55
|
||||
; mov ebx,eax
|
||||
; mov esi,Music
|
||||
; int 0x40
|
||||
|
||||
; <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⪮:
|
||||
mcall 55, eax, , , Music
|
||||
|
||||
jmp still ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>砫<EFBFBD> 横<><E6A8AA>
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
button:
|
||||
mcall 17 ; 17 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䨪<EFBFBD><E4A8AA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⮩ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
cmp ah, 1 ; <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> 1,
|
||||
jne still ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
.exit:
|
||||
mcall -1 ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
|
||||
|
||||
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ----------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
; The static parts *must* be placed within the fn 12 , ebx = 1 and ebx = 2.
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall 12, 1 ; <EFBFBD>㭪<EFBFBD><EFBFBD><EFBFBD> 12: ᮮ<><E1AEAE><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> <20><><EFBFBD><EFBFBD>
|
||||
; 1 - <20><>稭<EFBFBD><E7A8AD><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD>
|
||||
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD>: ᭠砫<E1ADA0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ਠ<EFBFBD><E0A8A0> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD>)
|
||||
; <20><>⥬ <20><><EFBFBD><EFBFBD>⪨<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>ᯮ<EFBFBD>짮<EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ᮢ
|
||||
|
||||
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
; mov eax,0 ; <EFBFBD>㭪<EFBFBD><EFBFBD><EFBFBD> 0 : <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
; mov ebx,200*65536+200 ; [x <20><><EFBFBD><EFBFBD><EFBFBD>] *65536 + [x ࠧ<><E0A0A7><EFBFBD>]
|
||||
; mov ecx,200*65536+50 ; [y <20><><EFBFBD><EFBFBD><EFBFBD>] *65536 + [y ࠧ<><E0A0A7><EFBFBD>]
|
||||
; mov edx,0x33aabbcc ; 梥<> ࠡ<>祩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RRGGBB,8->color gl
|
||||
; mov edi,header ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
; int 0x40
|
||||
|
||||
mcall 0, <200,200>, <200,50>, 0x33AABBCC,,title
|
||||
|
||||
|
||||
|
||||
; mov eax,4
|
||||
; mov ebx,3 shl 16 + 8
|
||||
; mov ecx,0
|
||||
; mov edx,message
|
||||
; mov esi,message.size
|
||||
; int 0x40
|
||||
|
||||
mcall 4, <3, 8>, 0, message, message.size
|
||||
|
||||
mcall 12, 2 ; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 12: ᮮ<><E1AEAE><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> <20><><EFBFBD><EFBFBD>
|
||||
; 2, <20><><EFBFBD><EFBFBD><EFBFBD>稫<EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD>
|
||||
|
||||
ret ; <20><>室<EFBFBD><E5AEA4> <20><> <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD>
|
||||
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ----------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
; <20><><EFBFBD> ⠪<><E2A0AA> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⪠<EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>".
|
||||
; <20><><EFBFBD>ன <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⨥<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
Music:
|
||||
db 0x90, 0x30, 0
|
||||
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD>䥩<EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> MACROS.INC (lang fix <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
lsz message,\
|
||||
ru,'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...',\
|
||||
en,'Press any key...',\
|
||||
fr,'Pressez une touche...'
|
||||
|
||||
lsz title,\
|
||||
ru,'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',\
|
||||
en,'EXAMPLE APPLICATION',\
|
||||
fr,"L'exemplaire programme"
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
I_END: ; <20><>⪠ <20><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
|
||||
mov eax, 12 ; function 12: tell os about windowdraw
|
||||
mov ebx, 1 ; 1, start of draw
|
||||
mcall
|
||||
|
||||
mov eax, 0 ; function 0 : define and draw window
|
||||
mov ebx, 100 * 65536 + 300 ; [x start] *65536 + [x size]
|
||||
mov ecx, 100 * 65536 + 120 ; [y start] *65536 + [y size]
|
||||
mov edx, 0x14ffffff ; color of work area RRGGBB
|
||||
; 0x02000000 = window type 4 (fixed size, skinned window)
|
||||
mov esi, 0x808899ff ; color of grab bar RRGGBB
|
||||
; 0x80000000 = color glide
|
||||
mov edi, title
|
||||
mcall
|
||||
|
||||
mov ebx, 25 * 65536 + 35 ; draw info text with function 4
|
||||
mov ecx, 0x224466
|
||||
mov edx, text
|
||||
mov esi, 40
|
||||
mov eax, 4
|
||||
|
||||
.newline: ; text from the DATA AREA
|
||||
mcall
|
||||
add ebx, 10
|
||||
add edx, 40
|
||||
cmp byte[edx], 0
|
||||
jne .newline
|
||||
|
||||
mov eax, 12 ; function 12:tell os about windowdraw
|
||||
mov ebx, 2 ; 2, end of draw
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
; *********************************************
|
||||
; ************* DATA AREA *****************
|
||||
; *********************************************
|
||||
;
|
||||
; Data can be freely mixed with code to any parts of the image.
|
||||
; Only the header information is required at the beginning of the image.
|
||||
|
||||
text db "It look's like you have just compiled "
|
||||
db "your first program for KolibriOS. "
|
||||
db " "
|
||||
db "Congratulations! ", 0
|
||||
|
||||
title db "Example application", 0
|
||||
|
||||
I_END:
|
||||
|
||||
; The area after I_END is free for use as the application memory,
|
||||
; just avoid the stack.
|
||||
;
|
||||
; Application memory structure, according to the used header, 1 Mb.
|
||||
;
|
||||
; 0x00000 - Start of compiled image
|
||||
; I_END - End of compiled image
|
||||
;
|
||||
; + Free for use in the application
|
||||
;
|
||||
; 0x7ff00 - Start of stack area
|
||||
; 0x7fff0 - End of stack area - defined in the header
|
||||
;
|
||||
; + Free for use in the application
|
||||
;
|
||||
; 0xFFFFF - End of freely useable memory - defined in the header
|
||||
;
|
||||
; All of the the areas can be modified within the application with a
|
||||
; direct reference.
|
||||
; For example, mov [0x80000],byte 1 moves a byte above the stack area.
|
Reference in New Issue
Block a user