New developer version 0.6.8; added select () function; added demonstrating example...
[ZeXOS.git] / apps / mserver / start.s
blobbd9cc0523a0e3e576afdd07a35e216d0e991c747
1 ; ZeX/OS
2 ; Copyright (C) 2007 Tomas 'ZeXx86' Jedrzejek (zexx86@gmail.com)
3 ; Copyright (C) 2008 Tomas 'ZeXx86' Jedrzejek (zexx86@gmail.com)
5 ; This program is free software: you can redistribute it and/or modify
6 ; it under the terms of the GNU General Public License as published by
7 ; the Free Software Foundation, either version 3 of the License, or
8 ; (at your option) any later version.
10 ; This program is distributed in the hope that it will be useful,
11 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 ; GNU General Public License for more details.
15 ; You should have received a copy of the GNU General Public License
16 ; along with this program. If not, see <http://www.gnu.org/licenses/>.
19 ; This is the kernel's entry point. We could either call main here,
20 ; or we can use this to setup the stack or other nice stuff, like
21 ; perhaps setting up the GDT and segments. Please note that interrupts
22 ; are disabled at this point: More on interrupts later!
24 [SECTION .text]
25 [BITS 32]
27 extern main
28 global entry
30 entry:
31 ; first we get arguments
32 mov eax, 26
33 mov ecx, 0
34 int 0x80
36 push eax ; argv
38 ; lets get count of arguments
39 mov eax, 26
40 mov ecx, 1
41 int 0x80
43 mov ebx, eax
44 push ebx ; argc
46 call main ; call our program
48 pop ebx
49 pop eax
51 ; proc exit
52 mov eax, 1
53 int 0x80
55 ret