Subversion Repositories Kolibri OS

Rev

Rev 6050 | Rev 6280 | 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
6058 leency 77
 
5702 punk_joker 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
 
6050 leency 99
dword calc(EAX) { return EAX; }
5795 leency 100
 
5706 leency 101
inline fastcall word GetKey()  //+Gluk fix
102
{
103
		$push edx
104
GETKEY:
105
		$mov  eax,2
106
		$int  0x40
107
		$cmp eax,1
108
		$jne GETKEYI
109
		$mov ah,dh
110
		$jmp GETKEYII //jz?
111
GETKEYI:
112
		$mov dh,ah
113
		$jmp GETKEY
114
GETKEYII:
115
		$pop edx
116
		$shr eax,8
117
}
118
 
5779 leency 119
 
5706 leency 120
unsigned char key_ascii;
121
dword key_scancode, key_modifier;
122
int GetKeys()
123
{
5779 leency 124
		$push edx
125
GETKEY:
126
		$mov  eax,2
127
		$int  0x40
128
		$cmp eax,1
129
		$jne GETKEYI
130
		$mov eax,edx
131
		$jmp GETKEYII
132
GETKEYI:
133
		$mov edx,eax
134
		$jmp GETKEY
135
GETKEYII:
136
		$pop edx
5706 leency 137
	key_ascii = AH;
138
	$shr  eax,16
139
	key_scancode = AL;
140
	//get alt/shift/ctrl key status
141
	$mov eax,66
142
	$mov ebx,3
143
	$int 0x40
144
	key_modifier = EAX;
145
}
146
 
5576 pavelyakov 147
//allow event mask
148
#define EVENT_MASK_REDRAW   000000001b
149
#define EVENT_MASK_KEYBOARD 000000010b
150
#define EVENT_MASK_BUTTONS  000000100b
151
#define EVENT_MASK_DESKTOP  000010000b
152
#define EVENT_MASK_MOUSE    000100000b
153
#define EVENT_MASK_IPC      001000000b
154
#define EVENT_MASK_NETWORK  010000000b
155
#define EVENT_MASK_DEBUG    100000000b
5465 leency 156
 
5576 pavelyakov 157
//ARGS FUNCTION
158
#define END_ARGS 0xFF00FF
3067 leency 159
//-------------------------------------------------------------------------
160
 
5674 pavelyakov 161
#ifndef INCLUDE_SYSTEM_H
162
#include "../lib/system.h"
163
#endif
164
 
165
#ifndef INCLUDE_MOUSE_H
166
#include "../lib/mouse.h"
167
#endif
168
 
5477 leency 169
:struct raw_image {
170
	dword w, h, data;
171
};
172
 
5575 pavelyakov 173
 
3067 leency 174
 
175
//------------------------------------------------------------------------------
5582 pavelyakov 176
:dword wait_event_code;
3067 leency 177
inline fastcall dword WaitEvent()
178
{
179
	$mov eax,10
180
	$int 0x40
5576 pavelyakov 181
	wait_event_code = EAX;
5591 pavelyakov 182
	//if(wait_event_code==evMouse) MOUSE.get();
183
	//return wait_event_code;
3067 leency 184
}
185
 
186
inline fastcall dword CheckEvent()
187
{
188
	$mov eax,11
189
	$int 0x40
190
}
191
 
5576 pavelyakov 192
inline fastcall dword WaitEventTimeout(EBX)
3067 leency 193
{
194
	$mov eax,23
195
	$int 0x40
196
}
197
 
5576 pavelyakov 198
inline fastcall SetEventMask(EBX)
3067 leency 199
{
200
	$mov eax,40
201
	$int 0x40
202
}
203
 
204
 
5576 pavelyakov 205
inline fastcall pause(EBX)
3067 leency 206
{
207
	$mov eax, 5
208
	$int 0x40
209
}
210
 
211
inline fastcall word GetButtonID()
212
{
213
	$mov eax,17
214
	$int  0x40
215
	$shr eax,8
216
}
217
 
218
inline fastcall dword GetFreeRAM()
219
{
220
	$mov eax, 18
221
	$mov ebx, 16
222
	$int 0x40
223
	//return eax = размер свободной памяти в килобайтах
224
}
225
 
5582 pavelyakov 226
inline void draw_line(dword x1,y1,x2,y2,color)
227
{
228
	x2--;y2--;y1--;
229
	$mov EAX,38
230
	EBX = x1<<16;
231
	EBX |= x2;
232
	ECX = y1<<16;
233
	ECX |= y2;
234
	$mov EDX,color
235
	$int 0x40
236
}