Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. CATCH_NULL_CALL = 0
  2.  
  3. format MS COFF
  4. section '.text' code readable executable
  5. public start
  6. ;EXTRN _edata
  7. EXTRN ___menuet__app_param_area
  8. EXTRN ___menuet__app_path_area
  9. EXTRN ___crt1_startup
  10. start:
  11. public ___menuet__app_header
  12. public ___menuet__memsize
  13. section '.A' code readable executable
  14. ___menuet__app_header:
  15.  db 'MENUET01'
  16.  dd 0x01
  17. if CATCH_NULL_CALL
  18.  dd do_start
  19. else
  20.  dd ___crt1_startup
  21. end if
  22. ; dd _edata
  23.  dd 0
  24. ___menuet__memsize:
  25.  dd 0x400000
  26.  dd app_stack
  27.  dd ___menuet__app_param_area
  28.  dd ___menuet__app_path_area
  29.  
  30. if CATCH_NULL_CALL
  31. do_start:
  32.         mov     byte [0], 0xE9
  33.         mov     dword [1], _libc_null_call-5
  34.  call ___crt1_startup
  35. ; Handle exit if __crt1_startup returns (shouldn't happen)
  36.  mov eax,-1
  37.  int 0x40
  38. end if
  39.  
  40. if CATCH_NULL_CALL
  41. EXTRN ___libc_null_call
  42.  
  43. _libc_null_call:
  44.     push eax
  45.     push ebx
  46.     push ecx
  47.     push edx
  48.     push esi
  49.     push edi
  50.     push ebp
  51.     call ___libc_null_call
  52.     mov eax,-1
  53.     int 0x40
  54. end if
  55.  
  56. section '.bss' readable writeable
  57. rd 0x20000
  58. app_stack:
  59.