kolibrios/programs/develop/open watcom/trunk/clib/h/kolibri.h
Sergey Semyonov (Serge) a73bea0da8 Clib chsize, fstat, setmode.
set_file_size: watcom-specific implementation

git-svn-id: svn://kolibrios.org@727 a494cfbc-eb01-0410-851d-a64ba20cac60
2008-02-10 14:10:44 +00:00

284 lines
7.1 KiB
C

#ifdef __cplusplus
extern "C"
{
#endif
#define FONT0 0x00000000
#define FONT1 0x10000000
#define BT_NORMAL 0x00000000
#define BT_NOFRAME 0x20000000
#define BT_HIDE 0x40000000
#define BT_DEL 0x80000000
#define EV_REDRAW 1
#define EV_KEY 2
#define EV_BUTTON 3
#define REL_SCREEN 0
#define REL_WINDOW 1
#define FILE_NOT_FOUND 5
#define FILE_EOF 6
#if 0
typedef unsigned int DWORD;
typedef unsigned short int WORD;
typedef struct
{ DWORD pci_cmd;
DWORD irq;
DWORD glob_cntrl;
DWORD glob_sta;
DWORD codec_io_base;
DWORD ctrl_io_base;
DWORD codec_mem_base;
DWORD ctrl_mem_base;
DWORD codec_id;
} CTRL_INFO;
typedef struct
{ DWORD cmd;
DWORD offset;
DWORD r1;
DWORD count;
DWORD buff;
char r2;
char *name;
} FILEIO;
typedef struct
{ DWORD attr;
DWORD flags;
DWORD cr_time;
DWORD cr_date;
DWORD acc_time;
DWORD acc_date;
DWORD mod_time;
DWORD mod_date;
DWORD size;
DWORD size_high;
} FILEINFO;
void _stdcall GetNotify(void *event);
void _stdcall CreateThread(void *fn, char *p_stack);
DWORD _stdcall GetMousePos(DWORD rel_type);
void _stdcall debug_out_hex(DWORD val);
void debug_out_str(char* str);
int _stdcall get_fileinfo(const char *name,FILEINFO* pinfo);
int _stdcall read_file (const char *name,char*buff,DWORD offset, DWORD count,DWORD *reads);
int _stdcall write_file(const char *name,char*buff,int offset,int count,int *writes);
//void exit();
int _stdcall get_key(int *key);
int _stdcall remap_key(int key);
int _cdecl get_button_id();
//void delay(int val);
int wait_for_event(int time);
int wait_for_event_infinite();
void BeginDraw(void);
void EndDraw(void);
void _stdcall GetScreenSize(int *x, int*y);
void _stdcall DrawWindow(int x,int y, int sx, int sy,int workcolor,int style,
int captioncolor,int windowtype,int bordercolor);
void _stdcall debug_out(int ch);
void _stdcall make_button(int x, int y, int xsize, int ysize, int id, int color);
void _stdcall draw_bar(int x, int y, int xsize, int ysize, int color);
void _stdcall write_text(int x,int y,int color,char* text,int len);
#endif
#pragma pack(push, 1)
typedef struct
{
char sec;
char min;
char hour;
char rsv;
}detime_t;
#pragma pack(pop)
#pragma pack(push, 1)
typedef struct
{
char day;
char month;
short year;
}dedate_t;
#pragma pack(pop)
#pragma pack(push, 1)
typedef struct
{ unsigned attr;
unsigned flags;
union
{
detime_t ctime;
unsigned cr_time;
};
union
{
dedate_t cdate;
unsigned cr_date;
};
union
{
detime_t atime;
unsigned acc_time;
};
union
{
dedate_t adate;
unsigned acc_date;
};
union
{
detime_t mtime;
unsigned mod_time;
};
union
{
dedate_t mdate;
unsigned mod_date;
};
unsigned size;
unsigned size_high;
} FILEINFO;
#pragma pack(pop)
unsigned init_heap(void);
void *user_alloc(unsigned size);
unsigned user_free(void *);
int create_file(const char *name);
int set_file_size(const char *name, unsigned size);
int get_fileinfo(const char *name,FILEINFO *info);
int read_file (const char *name,void *buff, unsigned offset, unsigned count,unsigned *reads);
int write_file(const char *name,const void *buff,unsigned offset,unsigned count,unsigned *writes);
#pragma aux init_heap = \
"mov EAX, 68" \
"mov EBX, 11" \
"int 0x40" \
value [EAX] \
modify [ EBX ];
#pragma aux user_alloc = \
"mov EAX, 68" \
"mov EBX, 12" \
"int 0x40" \
parm [ ECX ] value [EAX] \
modify [ EBX ];
#pragma aux user_free = \
"mov EAX, 68" \
"mov EBX, 13" \
"int 0x40" \
parm [ ECX ] value [EAX] \
modify [ EBX ];
#pragma aux create_file = \
"push 0" \
"push 0" \
"mov [esp+1], eax" \
"push 0" \
"push 0" \
"push 0" \
"push 0" \
"push 2" \
"mov ebx, esp" \
"mov eax, 70" \
"int 0x40" \
"add esp, 28" \
parm [EAX] value [EAX] \
modify [ EBX ];
#pragma aux set_file_size = \
"push 0" \
"push 0" \
"mov [esp+1], eax" \
"push 0" \
"push 0" \
"push 0" \
"push ebx" \
"push 4" \
"mov ebx, esp" \
"mov eax, 70" \
"int 0x40" \
"add esp, 28" \
parm [EAX] [EBX] value [EAX] \
modify [ EBX ];
#pragma aux get_fileinfo = \
"push 0" \
"push 0" \
"mov [esp+1], eax" \
"push ebx" \
"push 0" \
"push 0" \
"push 0" \
"push 5" \
"mov ebx, esp" \
"mov eax, 70" \
"int 0x40" \
"add esp, 28" \
parm [EAX] [ebx] value [EAX] \
modify [ EBX ];
#pragma aux read_file = \
"push 0" \
"push 0" \
"mov [esp+1], eax" \
"push ebx" \
"push edx" \
"push 0" \
"push ecx" \
"push 0" \
"mov ebx, esp" \
"mov eax, 70" \
"int 0x40" \
"test esi, esi" \
"jz skip" \
"mov [esi], ebx" \
"skip:" \
"add esp, 28" \
parm [EAX] [EBX] [ECX] [EDX] [ESI] value [EAX] \
modify [ EBX ];
#pragma aux write_file = \
"push 0" \
"push 0" \
"mov [esp+1], eax" \
"push ebx" \
"push edx" \
"push 0" \
"push ecx" \
"push 3" \
"mov ebx, esp" \
"mov eax, 70" \
"int 0x40" \
"test esi, esi" \
"jz skip" \
"mov [esi], ebx" \
"skip:" \
"add esp, 28" \
parm [EAX] [EBX] [ECX] [EDX] [ESI] value [EAX] \
modify [ EBX ];
#ifdef __cplusplus
extern "C"
}
#endif