Subversion Repositories Kolibri OS

Rev

Rev 4973 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4973 right-hear 1
#ifndef __GLIBC__MENUET_OS_H
2
#define __GLIBC__MENUET_OS_H
3
 
4
#ifdef __cplusplus
5
extern "C" {
6
#endif
7
 
8
typedef unsigned char       __u8;
9
typedef unsigned short      __u16;
10
typedef unsigned long       __u32;
11
 
12
#pragma pack(push,1)
13
 
14
void __menuet__define_window(__u16 x1,__u16 y1,__u16 xsize,__u16 ysize,
15
     __u32 body_color,__u32 grab_color,__u32 frame_color);
16
void __menuet__window_redraw(int status);
17
void __menuet__putpixel(__u32 x,__u32 y,__u32 color);
18
int __menuet__getkey(void);
19
__u32 __menuet__getsystemclock(void);
20
void __menuet__write_text(__u16 x,__u16 y,__u32 color,char * text,int len);
21
void __menuet__delay100(int m);
22
__u32 __menuet__open(char * name,char * data);
23
void __menuet__save(char * name,char * data,__u32 count);
24
void __menuet__putimage(__u16 x1,__u16 y1,__u16 xsize,__u16 ysize,char * image);
25
void __menuet__make_button(__u16 x1,__u16 y1,__u16 xsize,__u16 ysize,
26
                           int id,__u32 color);
27
int __menuet__get_button_id(void);
28
int __menuet__wait_for_event(void);
29
int __menuet__check_for_event(void);
30
void __menuet__bar(__u16 x1,__u16 y1,__u16 xsize,__u16 ysize,__u32 color);
31
void __menuet__sys_exit(void);
32
void * __menuet__exec_thread(void (* func_ptr)(void),__u32 stack_size,int * retp);
33
void __menuet__idle(void);
34
 
35
void __menuet__exec_ramdisk(char * filename,char * args,...);
36
void __menuet__exec_hd(char * filename,char * args,...);
37
 
38
struct process_table_entry
39
{
40
 __u32 cpu_usage;
41
 __u16 pos_in_windowing_stack;
42
 __u16 win_stack_val_at_ecx;
43
 __u16 reserved1;
44
 char name[12];
45
 __u32 memstart;
46
 __u32 memused;
47
 __u32 pid;
48
 __u32 winx_start,winy_start;
49
 __u32 winx_size,winy_size;
50
 __u16 thread_state;
51
 __u16 reserved2;
52
 __u32 client_left,client_top,client_width,client_height;
53
 __u8 window_state;
54
 __u8 reserved3[1024-71];
55
};
56
 
57
#define PID_WHOAMI		(-1)
58
 
59
int __menuet__get_process_table(struct process_table_entry * proctab,int pid);
60
void __menuet__get_screen_max(__u16 * x,__u16 * y);
61
 
62
#define BTYPE_TILE                  1
63
#define BTYPE_STRETCH               2
64
 
65
void __menuet__set_background_size(__u32 xsz,__u32 ysz);
66
void __menuet__write_background_mem(__u32 pos,__u32 color);
67
void __menuet__draw_background(void);
68
void __menuet__set_background_draw_type(int type);
69
void __menuet__background_blockmove(char * src_ptr,__u32 bgr_dst,__u32 count);
70
 
71
void __menuet__reset_mpu401(void);
72
void __menuet__write_mpu401(__u8 d);
73
 
74
__u32 __menuet__get_date(void);
75
 
76
void __menuet__line(__u16 x1,__u16 y1,__u16 x2,__u16 y2,__u32 color);
77
 
5029 hidnplayr 78
void __menuet__set_bitfield_for_wanted_events(__u32 ev);
4973 right-hear 79
 
80
#define EVENT_REDRAW              0x00000001
81
#define EVENT_KEY                 0x00000002
82
#define EVENT_BUTTON              0x00000004
83
#define EVENT_END_REQUEST         0x00000008
84
#define EVENT_DESKTOP_BACK_DRAW   0x00000010
85
#define EVENT_MOUSE_CHANGE        0x00000020
5029 hidnplayr 86
#define EVENT_IPC		          0x00000040
87
#define EVENT_MOUSE_CURSOR_MASK   0x40000000	// the window does not receive mouse events if cursor outside window
88
#define EVENT_MOUSE_WINDOW_MASK   0x80000000	// inactive window does not receive mouse events
4973 right-hear 89
 
90
__u32 __menuet__get_irq_owner(__u32 irq);
91
int __menuet__get_data_read_by_irq(__u32 irq,__u32 * num_bytes_in_buf,__u8 * data);
92
int __menuet__send_data_to_device(__u16 port,__u8 val);
93
void __menuet__program_irq(void * intr_table,__u32 irq_num);
94
int __menuet__reserve_irq(int irqno);
95
int __menuet__free_irq(int irqno);
96
int __menuet__reserve_port_area(__u32 start,__u32 end);
97
int __menuet__free_port_area(__u32 start,__u32 end);
98
 
99
 
100
#define NAME_LEN                   512
101
 
102
#define STC_READ                  0
103
#define STC_WRITE                 1
104
#define STC_APPEND                2
105
 
106
struct systree_info
107
{
108
	__u32 command;
109
	__u32 file_offset_low;
110
	__u32 file_offset_high;
111
	__u32 size;
112
	__u32 data_pointer;
113
	char _zero;
114
	const char* nameptr;
115
};
116
 
117
struct systree_info2
118
{
119
	__u32 command;
120
	__u32 file_offset_low;
121
	__u32 file_offset_high;
122
	__u32 size;
123
	__u32 data_pointer;
124
	char name[NAME_LEN];
125
};
126
 
127
struct bdfe_time
128
{
129
	__u8 seconds;
130
	__u8 minutes;
131
	__u8 hours;
132
	__u8 reserved;
133
};
134
struct bdfe_date
135
{
136
	__u8 day;
137
	__u8 month;
138
	__u16 year;
139
};
140
struct bdfe_item
141
{
142
	__u32 attr;
143
	__u8 nametype;
144
	__u8 reserved[3];
145
	struct bdfe_time ctime;
146
	struct bdfe_date cdate;
147
	struct bdfe_time atime;
148
	struct bdfe_date adate;
149
	struct bdfe_time mtime;
150
	struct bdfe_date mdate;
151
	__u32 filesize_low;
152
	__u32 filesize_high;
153
};
154
 
155
int __kolibri__system_tree_access(struct systree_info * info);
156
int __kolibri__system_tree_access2(struct systree_info2 * info);
157
 
158
int __fslayer_open(char * name,int flags);
159
int __fslayer_close(int fd);
160
int __fslayer_lseek(int fd,int pos,int seek_type);
161
int __fslayer_tell(int fd);
162
int __fslayer_read(int fd,void * buffer,__u32 count);
163
int __fslayer_write(int fd,void * buffer,__u32 count);
164
 
165
typedef struct
166
{
167
 __u8 lock;
168
 __u8 resvd[3];
169
 __u32 ptr_to_fmsg_pos;
170
 /* Below is for message */
171
 __u32 sender_pid;
172
 __u32 msg_length;
173
} msgrcva_t /*__attribute__((packed))*/;
174
 
175
void send_message(int pid,void * msg_ptr,int message_size);
176
void define_receive_area(msgrcva_t * rcva_ptr,int size);
177
 
178
void __menuet__sound_load_block(char * blockptr);
179
void __menuet__sound_play_block(void);
180
 
181
void __menuet__dga_get_caps(int * xres,int * yres,int * bpp,int * bpscan);
182
 
183
void get_pci_version(__u8 * major,__u8 * minor);
184
void pci_get_last_bus(__u8 * last_bus);
185
void get_pci_access_mechanism(__u8 * mechanism);
186
 
187
void pci_write_config_byte(__u8 bus,__u8 dev,__u8 fn,__u8 reg,__u8 val);
188
void pci_write_config_word(__u8 bus,__u8 dev,__u8 fn,__u8 reg,__u16 val);
189
void pci_write_config_dword(__u8 bus,__u8 dev,__u8 fn,__u8 reg,__u32 val);
190
__u8 pci_read_config_byte(__u8 bus,__u8 dev,__u8 fn,__u8 reg);
191
__u16 pci_read_config_word(__u8 bus,__u8 dev,__u8 fn,__u8 reg);
192
__u32 pci_read_config_dword(__u8 bus,__u8 dev,__u8 fn,__u8 reg);
193
 
194
typedef struct{
195
	char* name;
196
	void* pointer;
197
} IMP_ENTRY;
198
typedef const IMP_ENTRY* IMP_TABLE;
199
IMP_TABLE __kolibri__cofflib_load(const char*);
200
__u32 __kolibri__cofflib_getproc(IMP_TABLE, const char*);
201
//int __kolibri__cofflib_link(FUNC*, IMP_TABLE);
202
 
203
static __inline__ void __menuet__debug_out_byte(const char ch){
204
    __asm__ __volatile__ ("int $0x40"::"a"(63L),"b"(1L),"c"((__u8)ch));
205
}
206
void __menuet__debug_out(const char* str);
207
 
208
#define TIME_GETH(x)	((x)&0x000000FF)
209
#define TIME_GETM(x)	((((x)&0x00FF00)>>8)&0xFF)
210
#define TIME_GETS(x)	((((x)&0xFF0000)>>16)&0xFF)
211
 
212
#pragma pack(pop)
213
 
214
#ifdef __cplusplus
215
}
216
#endif
217
 
218
#endif