Subversion Repositories Kolibri OS

Rev

Rev 6039 | Rev 6050 | 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
5676 pavelyakov 5
#print "[include ]\n"
5576 pavelyakov 6
 
5676 pavelyakov 7
#pragma option OST
8
#pragma option ON
9
#pragma option cri-
10
#pragma option -CPA
11
#initallvar 0
12
#jumptomain FALSE
13
 
3067 leency 14
#startaddress 0
5676 pavelyakov 15
 
3067 leency 16
#code32 TRUE
5676 pavelyakov 17
 
3067 leency 18
char   os_name[8]   = {'M','E','N','U','E','T','0','1'};
19
dword  os_version   = 0x00000001;
5648 pavelyakov 20
dword  start_addr   = #______INIT______;
21
dword  final_addr   = #______STOP______+32;
3363 leency 22
dword  alloc_mem    = MEMSIZE;
23
dword  x86esp_reg   = MEMSIZE;
3067 leency 24
dword  I_Param      = #param;
25
dword  I_Path       = #program_path;
26
char param[4096];
27
char program_path[4096];
28
 
6039 leency 29
#define bool      char
5883 pavelyakov 30
 
3363 leency 31
#define NULL      0
32
#define OLD      -1
33
#define true      1
34
#define false     0
35
 
6039 leency 36
//Process Events
4536 leency 37
#define evReDraw  1
38
#define evKey     2
39
#define evButton  3
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
 
46
//Button options
47
#define BT_DEL      0x80000000
48
#define BT_HIDE     0x40000000
49
#define BT_NOFRAME  0x20000000
50
 
5465 leency 51
//ASCII KEYS
52
#define ASCII_KEY_BS    008
53
#define ASCII_KEY_TAB   009
54
#define ASCII_KEY_ENTER 013
55
#define ASCII_KEY_ESC   027
56
#define ASCII_KEY_DEL   182
57
#define ASCII_KEY_INS   185
58
#define ASCII_KEY_SPACE 032
59
 
60
#define ASCII_KEY_LEFT  176
61
#define ASCII_KEY_RIGHT 179
62
#define ASCII_KEY_DOWN  177
63
#define ASCII_KEY_UP    178
64
#define ASCII_KEY_HOME  180
65
#define ASCII_KEY_END   181
66
#define ASCII_KEY_PGDN  183
67
#define ASCII_KEY_PGUP  184
68
 
5702 punk_joker 69
//SCAN CODE KEYS
70
#define SCAN_CODE_BS    014
71
#define SCAN_CODE_TAB   015
72
#define SCAN_CODE_ENTER 028
73
#define SCAN_CODE_ESC   001
74
#define SCAN_CODE_DEL   083
75
#define SCAN_CODE_INS   082
76
#define SCAN_CODE_SPACE 057
77
 
78
#define SCAN_CODE_LEFT  075
79
#define SCAN_CODE_RIGHT 077
80
#define SCAN_CODE_DOWN  080
81
#define SCAN_CODE_UP    072
82
#define SCAN_CODE_HOME  071
83
#define SCAN_CODE_END   079
84
#define SCAN_CODE_PGDN  081
85
#define SCAN_CODE_PGUP  073
86
 
5795 leency 87
#define KEY_LSHIFT     00000000001b
88
#define KEY_RSHIFT     00000000010b
89
#define KEY_LCTRL      00000000100b
90
#define KEY_RCTRL      00000001000b
91
#define KEY_LALT       00000010000b
92
#define KEY_RALT       00000100000b
93
#define KEY_CAPSLOCK   00001000000b
94
#define KEY_NUMLOCK    00010000000b
95
#define KEY_SCROLLLOCK 00100000000b
96
#define KEY_LWIN       01000000000b
97
#define KEY_RWIN       10000000000b
5706 leency 98
 
5795 leency 99
 
5706 leency 100
inline fastcall word GetKey()  //+Gluk fix
101
{
102
		$push edx
103
GETKEY:
104
		$mov  eax,2
105
		$int  0x40
106
		$cmp eax,1
107
		$jne GETKEYI
108
		$mov ah,dh
109
		$jmp GETKEYII //jz?
110
GETKEYI:
111
		$mov dh,ah
112
		$jmp GETKEY
113
GETKEYII:
114
		$pop edx
115
		$shr eax,8
116
}
117
 
5779 leency 118
 
5706 leency 119
unsigned char key_ascii;
120
dword key_scancode, key_modifier;
121
int GetKeys()
122
{
5779 leency 123
		$push edx
124
GETKEY:
125
		$mov  eax,2
126
		$int  0x40
127
		$cmp eax,1
128
		$jne GETKEYI
129
		$mov eax,edx
130
		$jmp GETKEYII
131
GETKEYI:
132
		$mov edx,eax
133
		$jmp GETKEY
134
GETKEYII:
135
		$pop edx
5706 leency 136
	key_ascii = AH;
137
	$shr  eax,16
138
	key_scancode = AL;
139
	//get alt/shift/ctrl key status
140
	$mov eax,66
141
	$mov ebx,3
142
	$int 0x40
143
	key_modifier = EAX;
144
}
145
 
5576 pavelyakov 146
//allow event mask
147
#define EVENT_MASK_REDRAW   000000001b
148
#define EVENT_MASK_KEYBOARD 000000010b
149
#define EVENT_MASK_BUTTONS  000000100b
150
#define EVENT_MASK_DESKTOP  000010000b
151
#define EVENT_MASK_MOUSE    000100000b
152
#define EVENT_MASK_IPC      001000000b
153
#define EVENT_MASK_NETWORK  010000000b
154
#define EVENT_MASK_DEBUG    100000000b
5465 leency 155
 
5576 pavelyakov 156
//ARGS FUNCTION
157
#define END_ARGS 0xFF00FF
3067 leency 158
//-------------------------------------------------------------------------
159
 
5674 pavelyakov 160
#ifndef INCLUDE_SYSTEM_H
161
#include "../lib/system.h"
162
#endif
163
 
164
#ifndef INCLUDE_MOUSE_H
165
#include "../lib/mouse.h"
166
#endif
167
 
5477 leency 168
:struct raw_image {
169
	dword w, h, data;
170
};
171
 
5575 pavelyakov 172
 
3067 leency 173
 
174
//------------------------------------------------------------------------------
5582 pavelyakov 175
:dword wait_event_code;
3067 leency 176
inline fastcall dword WaitEvent()
177
{
178
	$mov eax,10
179
	$int 0x40
5576 pavelyakov 180
	wait_event_code = EAX;
5591 pavelyakov 181
	//if(wait_event_code==evMouse) MOUSE.get();
182
	//return wait_event_code;
3067 leency 183
}
184
 
185
inline fastcall dword CheckEvent()
186
{
187
	$mov eax,11
188
	$int 0x40
189
}
190
 
5576 pavelyakov 191
inline fastcall dword WaitEventTimeout(EBX)
3067 leency 192
{
193
	$mov eax,23
194
	$int 0x40
195
}
196
 
5576 pavelyakov 197
inline fastcall SetEventMask(EBX)
3067 leency 198
{
199
	$mov eax,40
200
	$int 0x40
201
}
202
 
203
 
5576 pavelyakov 204
inline fastcall pause(EBX)
3067 leency 205
{
206
	$mov eax, 5
207
	$int 0x40
208
}
209
 
210
inline fastcall word GetButtonID()
211
{
212
	$mov eax,17
213
	$int  0x40
214
	$shr eax,8
215
}
216
 
217
inline fastcall dword GetFreeRAM()
218
{
219
	$mov eax, 18
220
	$mov ebx, 16
221
	$int 0x40
222
	//return eax = размер свободной памяти в килобайтах
223
}
224
 
5582 pavelyakov 225
inline void draw_line(dword x1,y1,x2,y2,color)
226
{
227
	x2--;y2--;y1--;
228
	$mov EAX,38
229
	EBX = x1<<16;
230
	EBX |= x2;
231
	ECX = y1<<16;
232
	ECX |= y2;
233
	$mov EDX,color
234
	$int 0x40
235
}
236
 
5576 pavelyakov 237
inline fastcall dword LoadDriver(ECX) //ECX - имя драйвера