12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- / prt0.s (emx+fpk) -- Made from crt0.s,
- / Copyright (c) 1990-1999-2000 by Eberhard Mattes.
- / Changed for Free Pascal in 1997 Daniel Mantione.
- / This code is _not_ under the Library GNU Public
- / License, because the original is not. See copying.emx
- / for details. You should have received it with this
- / product, write the author if you haven't.
- .globl __text
- .globl ___SYSCALL
- .globl __data
- .globl __heap_base
- .globl __heap_brk
- .globl __heap_end
- .globl __init
- .text
- __text:
- push $__data
- call __dos_init
- jmp __init
- ___SYSCALL:
- call __dos_syscall
- ret
- .space 6, 0x90
- __init: cld
- call __entry1
- call _main
- movb $0x4c,%ah
- call ___SYSCALL
- 2: jmp 2b
- .data
- / The data segment starts with a table containing the start and end
- / addresses of the text, data and bss segments
- __data:
- .long __text
- .long __etext
- .long __data
- .long __edata
- .long __edata
- .long __end
- __heap_base:
- .long 0
- __heap_end:
- .long 0
- __heap_brk:
- .long 0
- .long 0
- .long __os2dll
- .long 0
- .long 0
- .long 0x02000000
- .long 0
- .long 0
- .byte 0
- .space 63, 0
- / Don't touch this. It's EMX vodoo. In short, this causes the __os2dll symbol
- / point to table of DLL data that the linker includes in the executable.
- .stabs "__os2dll", 21, 0, 0, 0xffffffff
- .stabs "___CTOR_LIST__", 21, 0, 0, 0xffffffff
- .stabs "___DTOR_LIST__", 21, 0, 0, 0xffffffff
- .stabs "___crtinit1__", 21, 0, 0, 0xffffffff
- .stabs "___crtexit1__", 21, 0, 0, 0xffffffff
|