Subversion Repositories Kolibri OS

Rev

Rev 7569 | Rev 7647 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6021 leency 1
//CODED by Veliant, Leency, Nable, Pavelyakov. GNU GPL licence.
2
 
5598 pavelyakov 3
#ifndef INCLUDE_KOLIBRI_H
5582 pavelyakov 4
#define INCLUDE_KOLIBRI_H
5576 pavelyakov 5
 
5676 pavelyakov 6
#pragma option OST
7
#pragma option ON
8
#pragma option cri-
9
#pragma option -CPA
10
#initallvar 0
11
#jumptomain FALSE
12
 
3067 leency 13
#startaddress 0
5676 pavelyakov 14
 
3067 leency 15
#code32 TRUE
5676 pavelyakov 16
 
3067 leency 17
char   os_name[8]   = {'M','E','N','U','E','T','0','1'};
18
dword  os_version   = 0x00000001;
5648 pavelyakov 19
dword  start_addr   = #______INIT______;
20
dword  final_addr   = #______STOP______+32;
3363 leency 21
dword  alloc_mem    = MEMSIZE;
22
dword  x86esp_reg   = MEMSIZE;
3067 leency 23
dword  I_Param      = #param;
24
dword  I_Path       = #program_path;
25
char param[4096];
26
char program_path[4096];
27
 
6651 leency 28
#define bool      int
5883 pavelyakov 29
 
3363 leency 30
#define NULL      0
31
#define OLD      -1
32
#define true      1
33
#define false     0
34
 
6039 leency 35
//Process Events
4536 leency 36
#define evReDraw  1
37
#define evKey     2
38
#define evButton  3
6978 leency 39
#define evExit    4
5576 pavelyakov 40
#define evDesktop 5
3067 leency 41
#define evMouse   6
5576 pavelyakov 42
#define evIPC     7
4536 leency 43
#define evNetwork 8
5576 pavelyakov 44
#define evDebug   9
3067 leency 45
 
6978 leency 46
//Event mask bits for function 40
7031 leency 47
#define EVM_REDRAW                1b
48
#define EVM_KEY                  10b
49
#define EVM_BUTTON              100b
50
#define EVM_EXIT               1000b
7569 leency 51
#define EVM_DESKTOPBG         10000b
7031 leency 52
#define EVM_MOUSE            100000b
53
#define EVM_IPC             1000000b
54
#define EVM_STACK          10000000b
55
#define EVM_DEBUG         100000000b
56
#define EVM_STACK2       1000000000b
6978 leency 57
#define EVM_MOUSE_FILTER  0x80000000
58
#define EVM_CURSOR_FILTER 0x40000000
59
 
3067 leency 60
//Button options
61
#define BT_DEL      0x80000000
62
#define BT_HIDE     0x40000000
63
#define BT_NOFRAME  0x20000000
64
 
7054 leency 65
#define CLOSE_BTN 1
66
 
3067 leency 67
//-------------------------------------------------------------------------
68
 
5674 pavelyakov 69
#include "../lib/system.h"
70
#include "../lib/mouse.h"
6285 leency 71
#include "../lib/keyboard.h"
5674 pavelyakov 72
 
6751 leency 73
inline fastcall dword calc(EAX) { return EAX; }
6742 leency 74
 
5477 leency 75
:struct raw_image {
76
	dword w, h, data;
77
};
78
 
3067 leency 79
//------------------------------------------------------------------------------
5582 pavelyakov 80
:dword wait_event_code;
3067 leency 81
inline fastcall dword WaitEvent()
82
{
83
	$mov eax,10
84
	$int 0x40
5576 pavelyakov 85
	wait_event_code = EAX;
5591 pavelyakov 86
	//if(wait_event_code==evMouse) MOUSE.get();
87
	//return wait_event_code;
3067 leency 88
}
89
 
90
inline fastcall dword CheckEvent()
91
{
92
	$mov eax,11
93
	$int 0x40
7310 pavelyakov 94
	wait_event_code = EAX;
3067 leency 95
}
96
 
7310 pavelyakov 97
:dword WaitEventTimeout(dword time)
3067 leency 98
{
7310 pavelyakov 99
	EAX = 23;
100
	EBX = time;
3067 leency 101
	$int 0x40
7310 pavelyakov 102
	wait_event_code = EAX;
3067 leency 103
}
104
 
6978 leency 105
inline fastcall dword SetEventMask(EBX)
3067 leency 106
{
107
	$mov eax,40
108
	$int 0x40
109
}
110
 
111
 
5576 pavelyakov 112
inline fastcall pause(EBX)
3067 leency 113
{
114
	$mov eax, 5
115
	$int 0x40
116
}
117
 
118
inline fastcall word GetButtonID()
119
{
120
	$mov eax,17
121
	$int  0x40
122
	$shr eax,8
123
}
124
 
125
inline fastcall dword GetFreeRAM()
126
{
127
	$mov eax, 18
128
	$mov ebx, 16
129
	$int 0x40
7358 leency 130
	//return eax = free RAM size in Kb
3067 leency 131
}
132
 
7358 leency 133
inline fastcall dword GetTotalRAM()
134
{
135
	$mov eax, 18
136
	$mov ebx, 17
137
	$int 0x40
138
	//return eax = total RAM size in Kb
139
}
140
 
7356 leency 141
inline fastcall int GetCpuIdleCount()
142
{
143
	EAX = 18;
144
	EBX = 4;
145
	$int 0x40
146
}
147
 
148
inline fastcall int GetCpuFrequency()
149
{
150
	EAX = 18;
151
	EBX = 5;
152
	$int 0x40
153
}
154
 
6791 leency 155
inline fastcall dword LoadDriver(ECX) //ECX - èìÿ äðàéâåðà
3067 leency 156
{
157
	$mov eax, 68
158
	$mov ebx, 16
159
	$int 0x40
6791 leency 160
	//return 0 - íåóäà÷à, èíà÷å eax = õýíäë äðàéâåðà
3067 leency 161
}
162
 
6791 leency 163
inline fastcall dword RuleDriver(ECX) //óêàçàòåëü íà óïðàâëÿþùóþ ñòðóêòóðó
3067 leency 164
{
165
	$mov eax, 68
166
	$mov ebx, 17
167
	$int 0x40
6791 leency 168
	//return eax = îïðåäåëÿåòñÿ äðàéâåðîì
3067 leency 169
}
170
 
171
struct proc_info
172
{
173
	#define SelfInfo -1
174
	dword	use_cpu;
7266 leency 175
	word	pos_in_stack,slot,rezerv1;
4137 leency 176
	unsigned char name[11];
3067 leency 177
	char	rezerv2;
178
	dword	adress,use_memory,ID,left,top,width,height;
179
	word	status_slot,rezerv3;
180
	dword	work_left,work_top,work_width,work_height;
181
	char	status_window;
3107 leency 182
	dword   cwidth,cheight;
183
	byte    reserved[1024-71-8];
3067 leency 184
};
185
 
7225 leency 186
:void GetProcessInfo(dword _process_struct_pointer, _process_id)
3067 leency 187
{
7225 leency 188
	skin_height = GetSkinHeight();
189
	EAX = 9;
190
	EBX = _process_struct_pointer;
191
	ECX = _process_id;
3067 leency 192
	$int  0x40
3107 leency 193
	DSDWORD[EBX+71] = DSDWORD[EBX+42] - 9; //set cwidth
7051 leency 194
	DSDWORD[EBX+75] = DSDWORD[EBX+46] - skin_height - 4; //set cheight
3067 leency 195
}
196
 
197
inline fastcall int GetPointOwner( EBX, ECX) //ebx=m.x, ecx=m.y
198
{
199
	$mov eax,34
200
	$int 0x40
201
}
202
 
203
inline fastcall int GetProcessSlot( ECX)
204
{
205
	EAX = 18;
206
	EBX = 21;
207
	$int 0x40
208
}
209
 
210
inline fastcall int GetActiveProcess()
211
{
212
	EAX = 18;
213
	EBX = 7;
214
	$int 0x40
215
}
216