Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
7309 pavelyakov 1
 
2
 
3
	load_const(DSDWORD[x],DSBYTE[x+4],DSDWORD[x+5]);
4
}
5
6
7
 
8
 
9
{
10
	dword addr = txt;
11
	WHILE(DSBYTE[addr]) addr++;
12
	IF(!LenStdout)
13
	{
14
		LenStdout = addr-txt;
15
		CreateFile(LenStdout,txt,"/sys/stdout");
16
	}
17
	ELSE
18
	{
19
		AddFile(LenStdout,addr-txt,txt,"/sys/stdout");
20
		LenStdout+=addr-txt;
21
	}
22
}
23
:dword std__stdStr(dword count)
24
{
25
	return _str(popFast());
26
}
27
:dword stdcall std__stdout(dword count)
28
{
29
	std__str(count);
30
	popStack();
31
	_stdout(DSDWORD[EAX]);
32
}
33
:dword stdcall std__len(dword c)
34
{
35
	popFast();
36
	load_const(DSDWORD[EAX+5],PY_INT,0);
37
	RETURN 0;
38
}
39
40
:dword stdcall std__INT40(dword c)
41
 
42
	X = popFast();
43
	Y = DSDWORD[X+5];
44
	X = DSDWORD[X];
45
	X = DSDWORD[X];
46
	X = DSDWORD[X];
47
	test(X,1);
48
49
	RETURN 0;
50
 
51
52
:void hexAddress(dword x,y)
53
 
54
	dword i = 0;
55
	i = 8;
56
	WHILE(i)
57
	{
58
		DSBYTE[x] = DSBYTE[y&0xF+#arraySymbolHEX];
59
		y>>=4;
60
		x--;
61
		i--;
62
	}
63
}
64
#define rSize DSBYTE[#RDATA+5]
65
#define rData DSBYTE[#RDATA]
66
#define rType DSBYTE[#RDATA+4]
67
68
:dword stdcall std__str(dword c)
69
 
70
	dword n = 0;
71
	dword m = 0;
72
	dword l = 0;
73
	dword v = 0;
74
	dword f = "";
75
	dword t = 0;
76
	dword o = 0;
77
78
	v = popFast();
79
 
80
	{
81
		copyVariable(v);
82
		return 0;
83
	}
84
85
	switch(DSBYTE[v+4])
86
 
87
		case PY_BOOL:
88
			if(DSDWORD[v])
89
			{
90
				load_const("True",PY_STR,4);
91
				return 0;
92
			}
93
			load_const("False",PY_STR,5);
94
			return 0;
95
		break;
96
		case PY_INT:
97
			m = malloc(MEMBUF);
98
			l = itoa(DSDWORD[v],m);
99
			load_const(m,PY_STR,l);
100
			return 0;
101
		break;
102
		case PY_NONE:
103
			load_const("None",PY_STR,4);
104
			return 0;
105
		break;
106
		case PY_FNC:
107
			hexAddress(f+24,v);
108
			load_const(f,PY_STR,26);
109
			return 0;
110
		break;
111
	}
112
}
113