Subversion Repositories Kolibri OS

Rev

Rev 1805 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1805 Rev 5115
Line 1... Line 1...
1
#include "kosSyst.h"
1
#include "kosSyst.h"
Line 2... Line 2...
2
 
2
 
Line -... Line 3...
-
 
3
#define atexitBufferSize	32
-
 
4
 
-
 
5
// Autobuild uses FASM method for exe->kos,
-
 
6
// MENUET01 header should be present in EXE.
-
 
7
#ifdef AUTOBUILD
-
 
8
char kosExePath[1024];
-
 
9
char exeStack[16384];
-
 
10
// must be alphabetically first in the image
-
 
11
#pragma data_seg(".1seg")
-
 
12
extern "C" struct
-
 
13
{
-
 
14
	char header[8];
-
 
15
	int headerver;
-
 
16
	void* entry;
-
 
17
	void* i_end;
-
 
18
	void* memsize;
-
 
19
	void* stack;
-
 
20
	void* params;
-
 
21
	void* icon;
-
 
22
} header = {
-
 
23
	{'M', 'E', 'N', 'U', 'E', 'T', '0', '1'},
-
 
24
	1,
-
 
25
	&crtStartUp,
-
 
26
	0,	// filled by doexe2.asm
-
 
27
	0,	// filled by doexe2.asm
-
 
28
	exeStack + sizeof(exeStack),
-
 
29
	NULL,
-
 
30
	kosExePath
-
 
31
};
-
 
32
#pragma data_seg()
-
 
33
#else
Line 3... Line 34...
3
#define atexitBufferSize	32
34
char *kosExePath = NULL;
Line 4... Line -...
4
 
-
 
5
 
-
 
6
char pureCallMessage[] = "PURE function call!";
35
#endif
7
 
36
 
8
char *kosExePath = NULL;
37
char pureCallMessage[] = "PURE function call!";
9
 
38
 
10
//
39
//
Line 807... Line 836...
807
//
836
//
808
#pragma comment(linker, "/merge:.CRT=.rdata")
837
#pragma comment(linker, "/merge:.CRT=.rdata")
809
//
838
//
810
void crtStartUp()
839
void crtStartUp()
811
{
840
{
-
 
841
#ifdef AUTOBUILD
-
 
842
// linker will try to remove unused variables; force header to be included
-
 
843
	header.header;
-
 
844
#endif
812
	// âûçûâàåì èíèöèàëèçàòîðû ïî ñïèñêó, NULL'û èãíîðèðóåì
845
	// âûçûâàåì èíèöèàëèçàòîðû ïî ñïèñêó, NULL'û èãíîðèðóåì
813
	for ( _PVFV *pbegin = __xc_a; pbegin < __xc_z; pbegin++ )
846
	for ( _PVFV *pbegin = __xc_a; pbegin < __xc_z; pbegin++ )
814
	{
847
	{
815
		//
848
		//
816
		if ( *pbegin != NULL )
849
		if ( *pbegin != NULL )
817
			(**pbegin)();
850
			(**pbegin)();
818
	}
851
	}
819
	// èíèöèàëèçèðóåì ãåíåðàòîð ñëó÷àéíûõ ÷èñåë
852
	// èíèöèàëèçèðóåì ãåíåðàòîð ñëó÷àéíûõ ÷èñåë
820
	rtlSrand( kos_GetSystemClock() );
853
	rtlSrand( kos_GetSystemClock() );
-
 
854
#ifndef AUTOBUILD
821
	// ïóòü ê ôàéëó ïðîöåññà
855
	// ïóòü ê ôàéëó ïðîöåññà
822
	kosExePath = *((char **)0x20);
856
	kosExePath = *((char **)0x20);
-
 
857
#endif
823
	// âûçîâ ãëàâíîé ôóíêöèè ïðèëîæåíèÿ
858
	// âûçîâ ãëàâíîé ôóíêöèè ïðèëîæåíèÿ
824
	kos_Main();
859
	kos_Main();
825
	// âûõîä
860
	// âûõîä
826
	kos_ExitApp();
861
	kos_ExitApp();
827
}
862
}