From b364fe71e36e34dea429e0348b8f0b20ecc35da0 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Thu, 30 Apr 2020 09:59:56 +0000 Subject: [PATCH] TCC: join two dirs into one git-svn-id: svn://kolibrios.org@7849 a494cfbc-eb01-0410-851d-a64ba20cac60 --- data/Tupfile.lua | 9 +- data/common/develop/tcc/include/assert.h | 19 - data/common/develop/tcc/include/conio.h | 203 ---- data/common/develop/tcc/include/ctype.h | 41 - data/common/develop/tcc/include/errno.h | 6 - data/common/develop/tcc/include/float.h | 65 -- data/common/develop/tcc/include/kolibrisys.h | 195 ---- data/common/develop/tcc/include/kos32sys1.h | 800 -------------- .../develop/tcc/include/kos32sys1beta.h | 994 ------------------ data/common/develop/tcc/include/math.h | 194 ---- data/common/develop/tcc/include/stdarg.h | 75 -- data/common/develop/tcc/include/stdbool.h | 11 - data/common/develop/tcc/include/stddef.h | 46 - data/common/develop/tcc/include/stdint.h | 1 - data/common/develop/tcc/include/stdio.h | 128 --- data/common/develop/tcc/include/stdlib.h | 77 -- data/common/develop/tcc/include/string.h | 35 - data/common/develop/tcc/include/time.h | 29 - data/common/develop/tcc/include/varargs.h | 12 - data/common/develop/tcc/kpack.exe | Bin 14336 -> 0 bytes data/common/develop/tcc/lib/libck.a | Bin 130324 -> 0 bytes data/common/develop/tcc/lib/start.o | Bin 760 -> 0 bytes data/common/develop/tcc/readme.txt | 126 --- data/common/develop/tcc/samples/consoleio.c | 23 - data/common/develop/tcc/samples/files.c | 43 - .../develop/tcc/samples/simplewin_old.c | 61 -- data/common/develop/tcc/samples/winbasics.c | 148 --- .../develop/ktcc/trunk}/_howto_debug_tcc.txt | 0 .../develop/ktcc/trunk/bin}/kos32-tcc.exe | Bin .../develop/ktcc/trunk/bin}/tcc | Bin .../develop/ktcc/trunk/samples/files/FILES.C | 43 - 31 files changed, 5 insertions(+), 3379 deletions(-) delete mode 100644 data/common/develop/tcc/include/assert.h delete mode 100644 data/common/develop/tcc/include/conio.h delete mode 100644 data/common/develop/tcc/include/ctype.h delete mode 100644 data/common/develop/tcc/include/errno.h delete mode 100644 data/common/develop/tcc/include/float.h delete mode 100644 data/common/develop/tcc/include/kolibrisys.h delete mode 100644 data/common/develop/tcc/include/kos32sys1.h delete mode 100644 data/common/develop/tcc/include/kos32sys1beta.h delete mode 100644 data/common/develop/tcc/include/math.h delete mode 100644 data/common/develop/tcc/include/stdarg.h delete mode 100644 data/common/develop/tcc/include/stdbool.h delete mode 100644 data/common/develop/tcc/include/stddef.h delete mode 100644 data/common/develop/tcc/include/stdint.h delete mode 100644 data/common/develop/tcc/include/stdio.h delete mode 100644 data/common/develop/tcc/include/stdlib.h delete mode 100644 data/common/develop/tcc/include/string.h delete mode 100644 data/common/develop/tcc/include/time.h delete mode 100644 data/common/develop/tcc/include/varargs.h delete mode 100644 data/common/develop/tcc/kpack.exe delete mode 100644 data/common/develop/tcc/lib/libck.a delete mode 100644 data/common/develop/tcc/lib/start.o delete mode 100644 data/common/develop/tcc/readme.txt delete mode 100644 data/common/develop/tcc/samples/consoleio.c delete mode 100644 data/common/develop/tcc/samples/files.c delete mode 100644 data/common/develop/tcc/samples/simplewin_old.c delete mode 100644 data/common/develop/tcc/samples/winbasics.c rename {data/common/develop/tcc => programs/develop/ktcc/trunk}/_howto_debug_tcc.txt (100%) rename {data/common/develop/tcc => programs/develop/ktcc/trunk/bin}/kos32-tcc.exe (100%) rename {data/common/develop/tcc => programs/develop/ktcc/trunk/bin}/tcc (100%) delete mode 100644 programs/develop/ktcc/trunk/samples/files/FILES.C diff --git a/data/Tupfile.lua b/data/Tupfile.lua index b1f8f9a5b..e7a735608 100644 --- a/data/Tupfile.lua +++ b/data/Tupfile.lua @@ -170,10 +170,11 @@ extra_files = { {"kolibrios/develop/oberon07/Lib/KolibriOS/", PROGS .. "/develop/oberon07/Lib/KolibriOS/*"}, {"kolibrios/develop/oberon07/Samples/", PROGS .. "/develop/oberon07/Samples/*"}, {"kolibrios/develop/c--/", PROGS .. "/cmm/c--/*"}, - {"kolibrios/develop/tcc/", "common/develop/tcc/*"}, - {"kolibrios/develop/tcc/include/", "common/develop/tcc/include/*"}, - {"kolibrios/develop/tcc/lib/", "common/develop/tcc/lib/*"}, - {"kolibrios/develop/tcc/samples/", "common/develop/tcc/samples/*"}, + {"kolibrios/develop/tcc/", PROGS .. "/develop/ktcc/trunk/*"}, + {"kolibrios/develop/tcc/", PROGS .. "/develop/ktcc/trunk/bin/*"}, + {"kolibrios/develop/tcc/lib/", PROGS .. "/develop/ktcc/trunk/bin/lib/*"}, + {"kolibrios/develop/tcc/include/", PROGS .. "/develop/ktcc/trunk/libc/include/*"}, + {"kolibrios/develop/tcc/samples/", PROGS .. "/develop/ktcc/trunk/samples/*"}, {"kolibrios/develop/TinyBasic/", "common/develop/TinyBasic/*"}, {"kolibrios/utils/cnc_editor/cnc_editor", PROGS .. "/other/cnc_editor/cnc_editor"}, {"kolibrios/utils/cnc_editor/kolibri.NC", PROGS .. "/other/cnc_editor/kolibri.NC"}, diff --git a/data/common/develop/tcc/include/assert.h b/data/common/develop/tcc/include/assert.h deleted file mode 100644 index e63f82a75..000000000 --- a/data/common/develop/tcc/include/assert.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef __ASSERT_H -#define __ASSERT_H - -#ifdef NDEBUG -# define assert(a) (void)0 -#else -# define assert(a) ((a) ? (void)0 : __assert_func (__FILE__, __LINE__, #a)) -#endif - -#ifdef NDEBUG -# define TRACE(s) void(0) -#else -# define TRACE(s) (__trace_func (__FILE__, __LINE__, #s)) -#endif - -void __assert_func(char*,int,char*); -void __trace_func(char*,int,char*); - -#endif \ No newline at end of file diff --git a/data/common/develop/tcc/include/conio.h b/data/common/develop/tcc/include/conio.h deleted file mode 100644 index 5c231bd7a..000000000 --- a/data/common/develop/tcc/include/conio.h +++ /dev/null @@ -1,203 +0,0 @@ -/* - -This is adapded thunk for console.obj sys library -.h is equal to svn:\programs\develop\libraries\console\console_en.txt - -Adapted for tcc by Siemargl, 2016 - -*/ -#ifndef __conio_h -#define __conio_h - -#define cdecl __attribute__ ((cdecl)) -#define stdcall __attribute__ ((stdcall)) - -/* -console.obj exports the following functions -*/ -typedef unsigned int dword; /* 32-bit unsigned integer */ -typedef unsigned short word; /* 16-bit unsigned integer */ - -extern void stdcall (*con_init)(dword wnd_width, dword wnd_height, - dword scr_width, dword scr_height, const char* title); -/* Console initialization. Must be called only once. -wnd_width, wnd_height - width and height (in units of characters) of the visible -region; -scr_width, scr_height - width and height (in units of characters) of console; -Any of these four parameters can be set to -1 (=0xFFFFFFFF) -to use the library's default values; -title - console window's caption. */ - -extern void stdcall (*con_exit)(int bCloseWindow); -/* You should call this funstion at the end of the program. -If bCloseWindow is zero, the string "[Finished]" will be added to the caption of -the window and the console window will remain on the screen until the user -closes it. */ - -extern void stdcall (*con_set_title)(const char* title); -/* Set new window caption. */ - -extern void stdcall (*con_write_asciiz)(const char* str); -/* Display ASCIIZ-string to the console at the current position, shifting -the current position. */ - -extern void stdcall (*con_write_string)(const char* str, dword length); -/* Similar to con_write_asciiz, but length of the string must be given as a -separate parameter */ - -extern int cdecl (*con_printf)(const char* format, ...); -/* Standard "printf" function from ANSI C. */ - -extern dword stdcall (*con_get_flags)(void); -/* Get output flags. */ - -extern dword stdcall (*con_set_flags)(dword new_flags); -/* Set output flags. This function returns previous values. */ - -/* Flags (bitmask): */ -/* text color */ -#define CON_COLOR_BLUE 0x01 -#define CON_COLOR_GREEN 0x02 -#define CON_COLOR_RED 0x04 -#define CON_COLOR_BRIGHT 0x08 -/* background color */ -#define CON_BGR_BLUE 0x10 -#define CON_BGR_GREEN 0x20 -#define CON_BGR_RED 0x40 -#define CON_BGR_BRIGHT 0x80 -/* output controls */ -#define CON_IGNORE_SPECIALS 0x100 -/* if this flag is cleared, function interprets special characters: -10 ('\n') - next line -13 ('\r') - carriage return -8 ('\b') - backspace -9 ('\t') - tab -27 ('\033' = '\x1B') - the beginning of Esc-sequences; -otherwise, these characters will be displayed like ordinary characters. */ -/* Supported Esc-sequences: - Esc[;;m - choice of character attributes: - You can specify one, two or three codes in any order; - 0 = normal mode (white on black) - 1 = bright selection - 5 = bright background - 7 = inverse mode (black on white) - 30 = black characters - 31 = red characters - 32 = green characters - 33 = brown characters - 34 = blue characters - 35 = purple characters - 36 = turqoise characters - 37 = white characters - 40 = black background - 41 = red background - 42 = green background - 43 = brown background - 44 = blue background - 45 = purple background - 46 = turqoise background - 47 = white background - The following sequences appeared in version 5 of library: - Esc[2J - clear screen, move cursor to upper left corner - Esc[;H = Esc[;f - - move cursor to , - Esc[A - move cursor to lines up - Esc[B - move cursor to lines down - Esc[C - move cursor to positions right - Esc[D - move cursor to positions left -*/ -/* signal "console closed"; appeared in version 6; - ignored by con_set_flags */ -#define CON_WINDOW_CLOSED 0x200 -/* The default value for flags = 7. (grey text on black background) */ - -extern int stdcall (*con_get_font_height)(void); -/* Get the height of the font. */ - -extern int stdcall (*con_get_cursor_height)(void); -/* Get the height of the cursor. */ - -extern int stdcall (*con_set_cursor_height)(int new_height); -/* Set the height of the cursor. This function returns previous value. -An attempt to set the value out of the correct interval (from 0 to -font_height-1) is ignored. -Cursor with zero height isn't displayed. -Default value: - 15% from font height. */ - -extern int stdcall (*con_getch)(void); -/* Get one character from the keyboard. - -For normal characters function returns ASCII-code. For extended -characters (eg, Fx, and arrows), first function call returns 0 -and second call returns the extended code (similar to the DOS-function -input). Starting from version 7, after closing the console window, -this function returns 0. */ - -extern word stdcall (*con_getch2)(void); -/* Reads a character from the keyboard. Low byte contains the ASCII-code -(0 for extended characters), high byte - advanced code (like in BIOS -input functions). Starting from version 7, after closing the console -window, this function returns 0. */ - -extern int stdcall (*con_kbhit)(void); -/* Returns 1 if a key was pressed, 0 otherwise. To read pressed keys use -con_getch and con_getch2. Starting from version 6, after closing -the console window, this function returns 1. */ - -extern char* stdcall (*con_gets)(char* str, int n); -/* Reads a string from the keyboard. Reading is interrupted when got -"new line" character, or after reading the (n-1) characters (depending on -what comes first). In the first case the newline is also recorded in the -str. The acquired line is complemented by a null character. -Starting from version 6, the function returns a pointer to the entered -line if reading was successful, and NULL if the console window was closed. */ - -typedef int (stdcall * con_gets2_callback)(int keycode, char** pstr, int* pn, - int* ppos); - -extern char* stdcall (*con_gets2)(con_gets2_callback callback, char* str, int n); -/* Con_gets completely analogous, except that when the user -press unrecognized key, it calls the specified callback-procedure -(which may, for example, handle up / down for history and tab to enter -autocompletion). You should pass to the procedure: key code and three pointers -- to the string, to the maximum length and to the current position. -function may change the contents of string and may change the string -itself (for example, to reallocate memory for increase the limit), -maximum length, and position of the line - pointers are passed for it. -Return value: 0 = line wasn't changed 1 = line changed, you should -remove old string and display new, 2 = line changed, it is necessary -to display it; 3 = immediately exit the function. -Starting from version 6, the function returns a pointer to the entered -line with the successful reading, and NULL if the console window was closed. */ - -extern void stdcall (*con_cls)(); -/* Clear screen and set cursor at upper left corner. */ - - -extern void stdcall (*con_get_cursor_pos)(int* px, int* py); -/* Wrote current (x) coordinate of cursor to *px, and (y) to *py. */ - -extern void stdcall (*con_set_cursor_pos)(int x, int y); -/* Set the cursor position to the specified coordinates. If any of the -parameters beyond the relevant range (from 0 to 1 scr_width- -for x, from 0 to 1 for scr_height-y, scr_width scr_height and were asked if -call con_init), then the corresponding coordinate of the cursor does not change. -*/ - -extern int __console_initdll_status; -/* == 1 if dll loaded */ - -extern dword *con_dll_ver; - -extern int con_init_console_dll(void); -/* load library and link function symbols. returns 1 if error -called automatic in printf, otherwise, see __console_initdll_status -*/ - -extern int con_init_console_dll_param(dword wnd_width, dword wnd_height, - dword scr_width, dword scr_height, const char* title); -/* work as con_init_console_dll, but call con_init with params -*/ - - -#endif diff --git a/data/common/develop/tcc/include/ctype.h b/data/common/develop/tcc/include/ctype.h deleted file mode 100644 index c6fd00cd1..000000000 --- a/data/common/develop/tcc/include/ctype.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef _CTYPE_H -#define _CTYPE_H -/* -** All character classification functions except isascii(). -** Integer argument (c) must be in ASCII range (0-127) for -** dependable answers. -*/ - -#define __ALNUM 1 -#define __ALPHA 2 -#define __CNTRL 4 -#define __DIGIT 8 -#define __GRAPH 16 -#define __LOWER 32 -#define __PRINT 64 -#define __PUNCT 128 -#define __BLANK 256 -#define __UPPER 512 -#define __XDIGIT 1024 - -extern unsigned short __is[129]; - -#define isalnum(c)(__is[c+1] & __ALNUM ) /* 'a'-'z', 'A'-'Z', '0'-'9' */ -#define isalpha(c)(__is[c+1] & __ALPHA ) /* 'a'-'z', 'A'-'Z' */ -#define iscntrl(c)(__is[c+1] & __CNTRL ) /* 0-31, 127 */ -#define isdigit(c)(__is[c+1] & __DIGIT ) /* '0'-'9' */ -#define isgraph(c)(__is[c+1] & __GRAPH ) /* '!'-'~' */ -#define islower(c)(__is[c+1] & __LOWER ) /* 'a'-'z' */ -#define isprint(c)(__is[c+1] & __PRINT ) /* ' '-'~' */ -#define ispunct(c)(__is[c+1] & __PUNCT ) /* !alnum && !cntrl && !space */ -#define isspace(c)(__is[c+1] & __BLANK ) /* HT, LF, VT, FF, CR, ' ' */ -#define isupper(c)(__is[c+1] & __UPPER ) /* 'A'-'Z' */ -#define isxdigit(c)(__is[c+1] & __XDIGIT) /* '0'-'9', 'a'-'f', 'A'-'F' */ - -#define isascii(c) (!((c)&(~0x7f))) -#define toascii(c) ((c)&0x7f) - -extern unsigned char tolower(unsigned char c); -extern unsigned char toupper(unsigned char c); - -#endif \ No newline at end of file diff --git a/data/common/develop/tcc/include/errno.h b/data/common/develop/tcc/include/errno.h deleted file mode 100644 index b77b5f0c7..000000000 --- a/data/common/develop/tcc/include/errno.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _ERRNO_H -#define _ERRNO_H - -#include - -#endif \ No newline at end of file diff --git a/data/common/develop/tcc/include/float.h b/data/common/develop/tcc/include/float.h deleted file mode 100644 index a2b4ed26a..000000000 --- a/data/common/develop/tcc/include/float.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef _FLOAT_H_ -#define _FLOAT_H_ - -#define FLT_RADIX 2 - -/* IEEE float */ -#define FLT_MANT_DIG 24 -#define FLT_DIG 6 -#define FLT_ROUNDS 1 -#define FLT_EPSILON 1.19209290e-07F -#define FLT_MIN_EXP (-125) -#define FLT_MIN 1.17549435e-38F -#define FLT_MIN_10_EXP (-37) -#define FLT_MAX_EXP 128 -#define FLT_MAX 3.40282347e+38F -#define FLT_MAX_10_EXP 38 - -/* IEEE double */ -#define DBL_MANT_DIG 53 -#define DBL_DIG 15 -#define DBL_EPSILON 2.2204460492503131e-16 -#define DBL_MIN_EXP (-1021) -#define DBL_MIN 2.2250738585072014e-308 -#define DBL_MIN_10_EXP (-307) -#define DBL_MAX_EXP 1024 -#define DBL_MAX 1.7976931348623157e+308 -#define DBL_MAX_10_EXP 308 - -/* horrible intel long double */ -#if defined __i386__ || defined __x86_64__ - -#define LDBL_MANT_DIG 64 -#define LDBL_DIG 18 -#define LDBL_EPSILON 1.08420217248550443401e-19L -#define LDBL_MIN_EXP (-16381) -#define LDBL_MIN 3.36210314311209350626e-4932L -#define LDBL_MIN_10_EXP (-4931) -#define LDBL_MAX_EXP 16384 -#define LDBL_MAX 1.18973149535723176502e+4932L -#define LDBL_MAX_10_EXP 4932 - -#else - -/* same as IEEE double */ -#define LDBL_MANT_DIG 53 -#define LDBL_DIG 15 -#define LDBL_EPSILON 2.2204460492503131e-16 -#define LDBL_MIN_EXP (-1021) -#define LDBL_MIN 2.2250738585072014e-308 -#define LDBL_MIN_10_EXP (-307) -#define LDBL_MAX_EXP 1024 -#define LDBL_MAX 1.7976931348623157e+308 -#define LDBL_MAX_10_EXP 308 - -#endif - -#ifndef NAN -# define NAN (__nan__) -#endif - -#ifndef INFINITY -# define INFINITY (__inf__) -#endif - -#endif /* _FLOAT_H_ */ diff --git a/data/common/develop/tcc/include/kolibrisys.h b/data/common/develop/tcc/include/kolibrisys.h deleted file mode 100644 index 5638b8300..000000000 --- a/data/common/develop/tcc/include/kolibrisys.h +++ /dev/null @@ -1,195 +0,0 @@ -#ifndef kolibrisys_h -#define kolibrisys_h -/* -#ifdef GNUC -#define stdcall __stdcall -#define cdecl __cdecl -#else -#define stdcall ((__stdcall)) -#define cdecl ((__cdecl)) -#endif -*/ -//#ifdef GNUC -//#define stdcall __stdcall -//#else -#define cdecl __attribute__ ((cdecl)) -#define stdcall __attribute__ ((stdcall)) -//#endif - -typedef unsigned int dword; -typedef unsigned char byte; -typedef unsigned short word; - -typedef unsigned int fpos_t; -typedef unsigned int size_t; - -typedef struct process_table_entry{ - int cpu_usage; //+0 - int window_pos_info; //+4 - short int reserved1; //+8 - char name[12]; //+10 - int memstart; //+22 - int memused; //+26 - int pid; //+30 - int winx_start; //+34 - int winy_start; //+38 - int winx_size; //+42 - int winy_size; //+46 - short int slot_info; //+50 - short int reserved2; //+52 - int clientx; //+54 - int clienty; //+58 - int clientwidth; //+62 - int clientheight; //+66 - unsigned char window_state;//+70 - char reserved3[1024-71]; //+71 -}__attribute__((packed)); - -//----------------------------------------------------------------------------------- -//------------------------KolibriOS system acces to files---------------------------- -//----------------------------------------------------------------------------------- -extern dword stdcall _ksys_get_filesize(char *filename); -extern dword stdcall _ksys_readfile(char *filename,dword pos,dword blocksize,void *data, int *preadbytes); -extern dword stdcall _ksys_rewritefile(char *filename,dword blocksize,void *data); -extern dword stdcall _ksys_appendtofile(char *filename,dword pos,dword blocksize,void *data); -//----------------------------------------------------------------------------------- - -//----------------------Run program--------------------------------------------------- -extern void stdcall _ksys_run_program(char* filename,char* parameters); -//------------------------------------------------------------------------------------ - -//--------------------Debug output--------------------------------------------------- -extern void stdcall _ksys_debug_out(int c); -extern void stdcall debug_out_str(char* str); -//----------------------------------------------------------------------------------- - -//--------------------------Mouse state---------------------------------------------- -extern int stdcall _ksys_GetMouseXY(void); -extern int stdcall _ksys_GetMouseButtonsState(void); -//----------------------------------------------------------------------------------- - -//--------------------------get skin height------------------------------------------ -extern int stdcall _ksys_get_skin_height(void); -//----------------------------------------------------------------------------------- - -//----------------------------background--------------------------------------------- -extern void stdcall _ksys_set_background_size(int xsize,int ysize); -extern void stdcall _ksys_write_background_mem(int pos,int color); -extern void stdcall _ksys_draw_background(void); -extern void stdcall _ksys_set_background_draw_type(int type); -extern void stdcall _ksys_background_blockmove(void* src,int bgr_pos, int count); -//----------------------------------------------------------------------------------- - -//----------------------------functionf for draw window,lines.bar,etc.--------------- -extern void stdcall _ksys_draw_window(int xcoord,int ycoord, int xsize, - int ysize,int workcolor,int type, - int captioncolor,int windowtype,int bordercolor); -extern void stdcall _ksys_window_redraw(int status); -extern int stdcall _ksys_putpixel(int x,int y,int color); -extern void stdcall _ksys_draw_bar(int x, int y, int xsize, int ysize, int color); -extern void stdcall _ksys_line(int x1,int y1,int x2,int y2,int color); -extern void stdcall _ksys_putimage(int x, int y, int xsize, int ysize, void* image); -//----------------------------------------------------------------------------------- - -//--------------------------write text(system fonts 6x9)----------------------------- -extern void stdcall _ksys_write_text(int x,int y,int color,char* text,int len); -//----------------------------------------------------------------------------------- - -//------------------ get screen size and bytes per pixel--------------------------- -extern int stdcall _ksys_get_screen_size(int* x,int* y); -extern void stdcall _ksys_dga_get_resolution(int* xres, int* yres, int* bpp, int* bpscan); -//----------------------------------------------------------------------------------- - -//-------------------------------craete thread--------------------------------------- -extern void* stdcall _ksys_start_thread(void (* func_ptr)(void),int stack_size,int* pid); -//----------------------------------------------------------------------------------- - -//------------------system button(Old function. Better use libGUI functions.)-------- -extern void stdcall _ksys_make_button(int x, int y, int xsize, int ysize, int id, int color); -extern int stdcall _ksys_get_button_id(void); //get state of system button -//------------------------------------------------------------------------------------ - -//----------------------system clock(in 1/100 sec.) and date-------------------------- -extern int stdcall _ksys_get_system_clock(void); -extern int stdcall _ksys_get_date(void); -//------------------------------------------------------------------------------------ - -//-------------------------system delay(in 1/100 sec.)------------------------------- -extern void stdcall _ksys_delay(int m); -//----------------------------------------------------------------------------------- - -//------------------------system events---------------------------------------------- -extern int stdcall _ksys_wait_for_event_infinite(void); -extern int stdcall _ksys_check_for_event(void); -extern int stdcall _ksys_wait_for_event(int time); -extern void stdcall _ksys_set_wanted_events(int ev); -//----------------------------------------------------------------------------------- - -//----------------------------system exit program------------------------------------ -extern void stdcall _ksys_exit(void); -//----------------------------------------------------------------------------------- - -//-----------------------------system IPC send message------------------------------- -extern void stdcall _ksys_send_message(int pid, void* msg, int size); -//----------------------------------------------------------------------------------- - -//---------------------------system work with IRQ from user mode--------------------- -extern void stdcall _ksys_define_receive_area(void* area, int size); -extern int stdcall _ksys_get_irq_owner(int irq); -extern int stdcall _ksys_get_data_read_by_irq(int irq, int* size, void* data); -extern int stdcall _ksys_send_data_to_device(int port, unsigned char val); -extern int stdcall _ksys_receive_data_from_device(int port,unsigned char* data); -extern void stdcall _ksys_program_irq(void* intrtable, int irq); -extern void stdcall _ksys_reserve_irq(int irq); -extern void stdcall _ksys_free_irq(int irq); -//---------------------------------------------------------------------------------- - -//----------------------------system reserve diapason of ports---------------------- -extern int stdcall _ksys_reserve_port_area(int start,int end); -extern int stdcall _ksys_free_port_area(int start,int end); -//---------------------------------------------------------------------------------- - -//-------------functions get key and set keyboard mode------------------------------ -extern int stdcall _ksys_get_key(void); -extern void stdcall _ksys_set_keyboard_mode(int mode); -//---------------------------------------------------------------------------------- - -//--------------simple work with MPU401 sound device--------------------------------- -extern void stdcall _ksys_midi_reset(void); -extern void stdcall _ksys_midi_send(int data); -//----------------------------------------------------------------------------------- - -//--------------------------acces to PCI BUS from user mode--------------------------- -extern int stdcall _ksys_get_pci_version(void); -extern int stdcall _ksys_get_last_pci_bus(void); -extern int stdcall _ksys_get_pci_access_mechanism(void); -extern int stdcall _ksys_pci_read_config_byte(int bus,int dev,int fn,int reg); -extern int stdcall _ksys_pci_read_config_word(int bus,int dev,int fn,int reg); -extern int stdcall _ksys_pci_read_config_dword(int bus,int dev,int fn,int reg); -extern int stdcall _ksys_pci_write_config_byte(int bus,int dev,int fn,int reg,int value); -extern int stdcall _ksys_pci_write_config_word(int bus,int dev,int fn,int reg,int value); -extern int stdcall _ksys_pci_write_config_dword(int bus,int dev,int fn,int reg,int value); -//-------------------------------------------------------------------------------------- - -//------------------------Process information-------------------------------------- -extern int stdcall _ksys_get_process_table(struct process_table_entry *proctab,int pid); //if pid=-1 than get info about him. -//--------------------------------------------------------------------------------- - -//-----------------Old functions for work with sound(Sound Blaster only).--------- -extern void stdcall _ksys_sound_load_block(void* blockptr); -extern void stdcall _ksys_sound_play_block(void); -extern void stdcall _ksys_sound_set_channels(int channels); -extern void stdcall _ksys_sound_set_data_size(int size); -extern void stdcall _ksys_sound_set_frequency(int frequency); -//-------------------------------------------------------------------------------- - -//------------------------------system speaker(integrated speaker)---------------- -extern void stdcall _ksys_sound_speaker_play(void* data); -//-------------------------------------------------------------------------------- - -//------------------function for work with Dinamic Link Librarys(DLL)-------------- -extern dword* stdcall _ksys_cofflib_load(char* name); -extern char* stdcall _ksys_cofflib_getproc(void* exp,char* sz_name); -//--------------------------------------------------------------------------------- - -#endif diff --git a/data/common/develop/tcc/include/kos32sys1.h b/data/common/develop/tcc/include/kos32sys1.h deleted file mode 100644 index 55c3f9d5a..000000000 --- a/data/common/develop/tcc/include/kos32sys1.h +++ /dev/null @@ -1,800 +0,0 @@ -#ifndef __KOS_32_SYS_H__ -#define __KOS_32_SYS_H__ - -// file header taken from newlib -// added many sys functions, compatible with tcc - -//#include -//#include -#include -#include -typedef unsigned int uint32_t; -typedef int int32_t; -typedef unsigned char uint8_t; -typedef unsigned short int uint16_t; -typedef unsigned long long uint64_t; - -#ifdef __cplusplus -extern "C" { -#endif - -//#ifdef CONFIG_DEBUF -// #define DBG(format,...) printf(format,##__VA_ARGS__) -//#else -// #define DBG(format,...) -//#endif - -#define TYPE_3_BORDER_WIDTH 5 -#define WIN_STATE_MINIMIZED 0x02 -#define WIN_STATE_ROLLED 0x04 -#define POS_SCREEN 0 -#define POS_WINDOW 1 - -#define IPC_NOBUFFER 1 -#define IPC_LOCKED 2 -#define IPC_OVERFLOW 3 -#define IPC_NOPID 4 - -#define SHM_OPEN 0x00 -#define SHM_OPEN_ALWAYS 0x04 -#define SHM_CREATE 0x08 -#define SHM_READ 0x00 -#define SHM_WRITE 0x01 - - - -typedef unsigned int color_t; - - -typedef union __attribute__((packed)) pos_t -{ - uint32_t val; - struct - { - short x; - short y; - }; -} pos_t; - - -typedef union __attribute__((packed)) oskey_t -{ - uint32_t val; - struct - { - uint8_t state; - uint8_t code; - uint16_t ctrl_key; - }; -} oskey_t; - -typedef struct -{ - unsigned handle; - unsigned io_code; - void *input; - int inp_size; - void *output; - int out_size; -}ioctl_t; - -typedef union -{ - struct - { - void *data; - size_t size; - } x; - unsigned long long raw; -}ufile_t; - -struct kolibri_system_colors { - color_t frame_area; - color_t grab_bar; - color_t grab_bar_button; - color_t grab_button_text; - color_t grab_text; - color_t work_area; - color_t work_button; - color_t work_button_text; - color_t work_text; - color_t work_graph; -}; - - -struct blit_call -{ - int dstx; - int dsty; - int w; - int h; - - int srcx; - int srcy; - int srcw; - int srch; - - void *bitmap; - int stride; -}; - -struct ipc_message -{ - uint32_t pid; // PID of sending thread - uint32_t datalen; // data bytes - char data[0]; // data begin -}; - -struct ipc_buffer -{ - uint32_t lock; // nonzero is locked - uint32_t used; // used bytes in buffer - struct ipc_message data[0]; // data begin -}; - -static inline void begin_draw(void) -{ - __asm__ __volatile__( - "int $0x40" ::"a"(12),"b"(1)); -}; - -static inline -void end_draw(void) -{ - __asm__ __volatile__( - "int $0x40" ::"a"(12),"b"(2)); -}; - -static inline -void sys_create_window(int x, int y, int w, int h, const char *name, - color_t workcolor, uint32_t style) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(0), - "b"((x << 16) | ((w-1) & 0xFFFF)), - "c"((y << 16) | ((h-1) & 0xFFFF)), - "d"((style << 24) | (workcolor & 0xFFFFFF)), - "D"(name), - "S"(0) : "memory"); -}; - -static inline -void define_button(uint32_t x_w, uint32_t y_h, uint32_t id, uint32_t color) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(8), - "b"(x_w), - "c"(y_h), - "d"(id), - "S"(color)); -}; - -static inline -void draw_line(int xs, int ys, int xe, int ye, color_t color) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(38), "d"(color), - "b"((xs << 16) | xe), - "c"((ys << 16) | ye)); -} - -static inline -void draw_bar(int x, int y, int w, int h, color_t color) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(13), "d"(color), - "b"((x << 16) | w), - "c"((y << 16) | h)); -} - -static inline -void draw_bitmap(void *bitmap, int x, int y, int w, int h) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(7), "b"(bitmap), - "c"((w << 16) | h), - "d"((x << 16) | y)); -} - -static inline -void draw_text_sys(const char *text, int x, int y, int len, color_t color) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(4),"d"(text), - "b"((x << 16) | y), - "S"(len),"c"(color) - :"memory"); -} - -static inline -uint32_t get_skin_height(void) -{ - uint32_t height; - - __asm__ __volatile__( - "int $0x40 \n\t" - :"=a"(height) - :"a"(48),"b"(4)); - return height; -}; - -static inline -pos_t get_mouse_pos(int origin) -{ - pos_t val; - - __asm__ __volatile__( - "int $0x40 \n\t" - "rol $16, %%eax" - :"=a"(val) - :"a"(37),"b"(origin)); - return val; -} - -static inline -uint32_t get_mouse_buttons(void) -{ - uint32_t val; - - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(37),"b"(2)); - return val; -}; - -static inline -uint32_t get_mouse_wheels(void) -{ - uint32_t val; - - __asm__ __volatile__( - "int $0x40 \n\t" - :"=a"(val) - :"a"(37),"b"(7)); - return val; -}; - -static inline uint32_t load_cursor(void *path, uint32_t flags) -{ - uint32_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(37), "b"(4), "c"(path), "d"(flags)); - return val; -} - -static inline uint32_t set_cursor(uint32_t cursor) -{ - uint32_t old; - __asm__ __volatile__( - "int $0x40" - :"=a"(old) - :"a"(37), "b"(5), "c"(cursor)); - return old; -}; - -static inline int destroy_cursor(uint32_t cursor) -{ - int ret; - __asm__ __volatile__( - "int $0x40" - :"=a"(ret) - :"a"(37), "b"(6), "c"(cursor) - :"memory"); - return ret; -}; - - -static inline -uint32_t wait_for_event(uint32_t time) -{ - uint32_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(23), "b"(time)); - return val; -}; - -static inline uint32_t check_os_event() -{ - uint32_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(11)); - return val; -}; - -static inline uint32_t get_os_event() -{ - uint32_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(10)); - return val; -}; - -static inline -uint32_t get_tick_count(void) -{ - uint32_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(26),"b"(9)); - return val; -}; - -static inline -uint64_t get_ns_count(void) -{ - uint64_t val; - __asm__ __volatile__( - "int $0x40" - :"=A"(val) - :"a"(26), "b"(10)); - return val; -}; - -static inline -oskey_t get_key(void) -{ - oskey_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(2)); - return val; -} - -static inline -uint32_t get_os_button() -{ - uint32_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(17)); - return val>>8; -}; - -static inline uint32_t get_service(char *name) -{ - uint32_t retval = 0; - __asm__ __volatile__( - "int $0x40" - :"=a"(retval) - :"a"(68),"b"(16),"c"(name) - :"memory"); - - return retval; -}; - -static inline int call_service(ioctl_t *io) -{ - int retval; - - __asm__ __volatile__( - "int $0x40" - :"=a"(retval) - :"a"(68),"b"(17),"c"(io) - :"memory","cc"); - - return retval; -}; - - -static inline void yield(void) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(68), "b"(1)); -}; - -static inline void delay(uint32_t time) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(5), "b"(time) - :"memory"); -}; - -static inline -void *user_alloc(size_t size) -{ - void *val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(68),"b"(12),"c"(size)); - return val; -} - -static inline -int user_free(void *mem) -{ - int val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(68),"b"(13),"c"(mem)); - return val; -} - -static inline -void* user_realloc(void *mem, size_t size) -{ - void *val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(68),"b"(20),"c"(size),"d"(mem) - :"memory"); - - return val; -}; - -static inline -int *user_unmap(void *base, size_t offset, size_t size) -{ - int *val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(68),"b"(26),"c"(base),"d"(offset),"S"(size)); - return val; -}; - -static inline ufile_t load_file(const char *path) -{ - ufile_t uf; - - __asm__ __volatile__ ( - "int $0x40" - :"=A"(uf.raw) - :"a" (68), "b"(27),"c"(path)); - - return uf; -}; - -static inline int GetScreenSize() -{ - int retval; - - __asm__ __volatile__( - "int $0x40" - :"=a"(retval) - :"a"(61), "b"(1)); - return retval; -} - - -static inline void get_proc_info(char *info) -{ - __asm__ __volatile__( - "int $0x40" - : - :"a"(9), "b"(info), "c"(-1) - :"memory"); -}; - -static inline void Blit(void *bitmap, int dst_x, int dst_y, - int src_x, int src_y, int w, int h, - int src_w, int src_h, int stride) -{ - volatile struct blit_call bc; - - bc.dstx = dst_x; - bc.dsty = dst_y; - bc.w = w; - bc.h = h; - bc.srcx = src_x; - bc.srcy = src_y; - bc.srcw = src_w; - bc.srch = src_h; - bc.stride = stride; - bc.bitmap = bitmap; - - __asm__ __volatile__( - "int $0x40" - ::"a"(73),"b"(0),"c"(&bc.dstx)); -}; - - -// newlib exclusive -#ifndef __TINYC__ -int create_thread(int (*proc)(void *param), void *param, int stack_size); - -void* load_library(const char *name); - -void* get_proc_address(void *handle, const char *proc_name); - -void enumerate_libraries(int (*callback)(void *handle, const char* name, - uint32_t base, uint32_t size, void *user_data), - void *user_data); -#endif - -// May be next section need to be added in newlibc - -enum KOLIBRI_GUI_EVENTS { - KOLIBRI_EVENT_NONE = 0, /* Event queue is empty */ - KOLIBRI_EVENT_REDRAW = 1, /* Window and window elements should be redrawn */ - KOLIBRI_EVENT_KEY = 2, /* A key on the keyboard was pressed */ - KOLIBRI_EVENT_BUTTON = 3, /* A button was clicked with the mouse */ - KOLIBRI_EVENT_DESKTOP = 5, /* Desktop redraw finished */ - KOLIBRI_EVENT_MOUSE = 6, /* Mouse activity (movement, button press) was detected */ - KOLIBRI_EVENT_IPC = 7, /* Interprocess communication notify */ - KOLIBRI_EVENT_NETWORK = 8, /* Network event */ - KOLIBRI_EVENT_DEBUG = 9, /* Debug subsystem event */ - KOLIBRI_EVENT_IRQBEGIN = 16 /* 16..31 IRQ0..IRQ15 interrupt =IRQBEGIN+IRQn */ -}; - - -// copied from /programs/system/shell/system/kolibri.c -// fn's returned -1 as syserror, 1 as error, 0 as OK -static inline -int kol_clip_num() -{ - register uint32_t val; - asm volatile ("int $0x40":"=a"(val):"a"(54), "b"(0)); - return val; -} - -static inline -char* kol_clip_get(int n) -// returned buffer must be freed by user_free() -{ - register char* val; - asm volatile ("int $0x40":"=a"(val):"a"(54), "b"(1), "c"(n)); - return val; -} - -static inline -int kol_clip_set(int n, char buffer[]) -{ - register uint32_t val; - asm volatile ("int $0x40":"=a"(val):"a"(54), "b"(2), "c"(n), "d"(buffer)); - return val; -} - -static inline -int kol_clip_pop() -{ - register uint32_t val; - asm volatile ("int $0x40":"=a"(val):"a"(54), "b"(3)); - return val; -} - -static inline -int kol_clip_unlock() -{ - register uint32_t val; - asm volatile ("int $0x40":"=a"(val):"a"(54), "b"(4)); - return val; -} - -static inline void get_system_colors(struct kolibri_system_colors *color_table) -{ - __asm__ volatile ("int $0x40" - : - :"a"(48),"b"(3),"c"(color_table),"d"(40) - ); - - /* color_table should point to the system color table */ -} - -static inline void debug_board_write_byte(const char ch){ - __asm__ __volatile__( - "int $0x40" - : - :"a"(63), "b"(1), "c"(ch)); -} - - -static inline void draw_number_sys(int32_t number, int x, int y, int len, color_t color){ - register uint32_t fmt; - fmt = len << 16 | 0x80000000; // no leading zeros + width -// fmt = len << 16 | 0x00000000; // leading zeros + width - __asm__ __volatile__( - "int $0x40" - : - :"a"(47), "b"(fmt), "c"(number), "d"((x << 16) | y), "S"(color)); -} - -static inline -uint32_t get_mouse_eventstate(void) -{ - uint32_t val; - - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(37),"b"(3)); - return val; -}; - -static inline -uint32_t set_event_mask(uint32_t mask) -{ - register uint32_t val; - asm volatile ("int $0x40":"=a"(val):"a"(40), "b"(mask)); - return val; -} - -typedef void (*thread_proc)(void*); - -static inline -int start_thread(thread_proc proc, char* stack_top) -{ - register int val; - asm volatile ("int $0x40":"=a"(val):"a"(51), "b"(1), "c"(proc), "d"(stack_top)); - return val; -} - -static inline -void kos_exit() -{ - asm volatile ("int $0x40"::"a"(-1)); -} - -static inline void focus_window(int slot){ - asm volatile ("int $0x40"::"a"(18), "b"(3), "c"(slot)); -} - -static inline int get_thread_slot(int tid){ - register int val; - asm volatile ("int $0x40":"=a"(val):"a"(18), "b"(21), "c"(tid)); - return val; -} - -static inline void set_current_folder(char* dir){ - asm volatile ("int $0x40"::"a"(30), "b"(1), "c"(dir)); -} - -static inline int get_current_folder(char* buf, int bufsize){ - register int val; - asm volatile ("int $0x40":"=a"(val):"a"(30), "b"(2), "c"(buf), "d"(bufsize)); - return val; -} - -static inline -void ipc_set_area(void* buf, int bufsize){ - asm volatile ("int $0x40"::"a"(60), "b"(1), "c"(buf), "d"(bufsize)); -} - -static inline -int ipc_send_message(int pid_reciever, void *data, int datalen) { - register int val; - asm volatile ("int $0x40":"=a"(val):"a"(60), "b"(2), "c"(pid_reciever), "d"(data), "S"(datalen)); - return val; -} - -static inline -void* shm_open(char *shm_name, int msize, int flags, int *retsz){ - register int val, cod; - asm volatile ("int $0x40":"=a"(val),"=d"(cod):"a"(68), "b"(22), "c"(shm_name), "d"(msize), "S"(flags)); - - if(retsz) *retsz = cod; // errcode if NULL or memsize when open - return (void*)val; -} - -static inline -void shm_close(char *shm_name){ - asm volatile ("int $0x40"::"a"(68), "b"(23), "c"(shm_name)); -} - -static inline -int start_app(char *app_name, char *args){ - struct file_op_t - { - uint32_t fn; - uint32_t flags; - char* args; - uint32_t res1, res2; - char zero; - char* app_name __attribute__((packed)); - } file_op; - memset(&file_op, 0, sizeof(file_op)); - file_op.fn = 7; - file_op.args = args; - file_op.app_name = app_name; - - register int val; - asm volatile ("int $0x40":"=a"(val):"a"(70), "b"(&file_op)); - - return val; -} - - -/* -static inline char *getcwd(char *buf, size_t size) -{ - int rc = get_current_folder(buf, size); - if (rc > size) - { - errno = ERANGE; - return 0; - } - else - return buf; -} -*/ -// end section - - - -//added nonstatic inline because incomfortabre stepping in in debugger -void __attribute__ ((noinline)) debug_board_write_str(const char* str); -void __attribute__ ((noinline)) debug_board_printf(const char *format,...); - -/* copy body to only one project file -void __attribute__ ((noinline)) debug_board_write_str(const char* str){ - while(*str) - debug_board_write_byte(*str++); -} - -void __attribute__ ((noinline)) debug_board_printf(const char *format,...) -{ - va_list ap; - char log_board[300]; - - va_start (ap, format); - vsnprintf(log_board, sizeof log_board, format, ap); - va_end(ap); - debug_board_write_str(log_board); -} -*/ - - - -// TinyC don't support aliasing of static inline funcs -#ifndef __TINYC__ -static inline void BeginDraw(void) __attribute__ ((alias ("begin_draw"))); -static inline void EndDraw(void) __attribute__ ((alias ("end_draw"))); -static inline void DrawWindow(int x, int y, int w, int h, const char *name, - color_t workcolor, uint32_t style) - __attribute__ ((alias ("sys_create_window"))); -static inline void DefineButton(void) __attribute__ ((alias ("define_button"))); -static inline void DrawLine(int xs, int ys, int xe, int ye, color_t color) - __attribute__ ((alias ("draw_line"))); -static inline void DrawBar(int x, int y, int w, int h, color_t color) - __attribute__ ((alias ("draw_bar"))); -static inline void DrawBitmap(void *bitmap, int x, int y, int w, int h) - __attribute__ ((alias ("draw_bitmap"))); -static inline uint32_t GetSkinHeight(void) __attribute__ ((alias ("get_skin_height"))); -static inline pos_t GetMousePos(int origin) __attribute__ ((alias ("get_mouse_pos"))); -static inline uint32_t GetMouseButtons(void) __attribute__ ((alias ("get_mouse_buttons"))); -static inline uint32_t GetMouseWheels(void) __attribute__ ((alias ("get_mouse_wheels"))); -static inline uint32_t LoadCursor(void *path, uint32_t flags) __attribute__ ((alias ("load_cursor"))); -static inline uint32_t SetCursor(uint32_t cursor) __attribute__ ((alias ("set_cursor"))); -static inline int DestroyCursor(uint32_t cursor) __attribute__ ((alias ("destroy_cursor"))); -static inline uint32_t GetOsEvent(void) __attribute__ ((alias ("get_os_event"))); -static inline void *UserAlloc(size_t size) __attribute__ ((alias ("user_alloc"))); -static inline int UserFree(void *mem) __attribute__ ((alias ("user_free"))); -static inline void* UserRealloc(void *mem, size_t size) __attribute__ ((alias ("user_realloc"))); -static inline int *UserUnmap(void *base, size_t offset, size_t size) __attribute__ ((alias ("user_unmap"))); -static inline ufile_t LoadFile(const char *path) __attribute__ ((alias ("load_file"))); -static inline void GetProcInfo(char *info) __attribute__ ((alias ("get_proc_info"))); -#endif - -#ifdef __cplusplus -} -#endif - - -#endif - - - - - diff --git a/data/common/develop/tcc/include/kos32sys1beta.h b/data/common/develop/tcc/include/kos32sys1beta.h deleted file mode 100644 index a2f03ef2b..000000000 --- a/data/common/develop/tcc/include/kos32sys1beta.h +++ /dev/null @@ -1,994 +0,0 @@ -#ifndef __KOS_32_SYS_H__ -#define __KOS_32_SYS_H__ - -// file header taken from newlib -// added many sys functions, compatible with tcc -// with gcc USE gcc -mno-ms-bitfields!!! - - -//#include -//#include -#include -#include -typedef unsigned int uint32_t; -typedef int int32_t; -typedef unsigned char uint8_t; -typedef unsigned short int uint16_t; -typedef unsigned long long uint64_t; - -#ifdef __cplusplus -extern "C" { -#endif - -//#ifdef CONFIG_DEBUF -// #define DBG(format,...) printf(format,##__VA_ARGS__) -//#else -// #define DBG(format,...) -//#endif - -#define TYPE_3_BORDER_WIDTH 5 -#define WIN_STATE_MINIMIZED 0x02 -#define WIN_STATE_ROLLED 0x04 -#define POS_SCREEN 0 -#define POS_WINDOW 1 - -#define IPC_NOBUFFER 1 -#define IPC_LOCKED 2 -#define IPC_OVERFLOW 3 -#define IPC_NOPID 4 - -#define SHM_OPEN 0x00 -#define SHM_OPEN_ALWAYS 0x04 -#define SHM_CREATE 0x08 -#define SHM_READ 0x00 -#define SHM_WRITE 0x01 - - -typedef unsigned int color_t; - - -typedef union __attribute__((packed)) pos_t -{ - uint32_t val; - struct - { - short x; - short y; - }; -} pos_t; - - -typedef union __attribute__((packed)) oskey_t -{ - uint32_t val; - struct - { - uint8_t state; - uint8_t code; - uint16_t ctrl_key; - }; -} oskey_t; - -typedef struct -{ - unsigned handle; - unsigned io_code; - void *input; - int inp_size; - void *output; - int out_size; -}ioctl_t; - -typedef union -{ - struct - { - void *data; - size_t size; - } x; - unsigned long long raw; -}ufile_t; - -struct kolibri_system_colors { - color_t frame_area; - color_t grab_bar; - color_t grab_bar_button; - color_t grab_button_text; - color_t grab_text; - color_t work_area; - color_t work_button; - color_t work_button_text; - color_t work_text; - color_t work_graph; -}; - - -struct blit_call -{ - int dstx; - int dsty; - int w; - int h; - - int srcx; - int srcy; - int srcw; - int srch; - - void *bitmap; - int stride; -}; - -struct ipc_message -{ - uint32_t pid; // PID of sending thread - uint32_t datalen; // data bytes - char data[0]; // data begin -}; - -struct ipc_buffer -{ - uint32_t lock; // nonzero is locked - uint32_t used; // used bytes in buffer - struct ipc_message data[0]; // data begin -}; - - -typedef struct __attribute__((packed)) file_op_t -{ - uint32_t fn; - uint32_t flags; - char* args; - uint32_t res1, res2; - char zero; - char* app_name -#ifdef __TINYC__ - __attribute__((packed)) -#endif -; -} file_op_t; - - -static inline void begin_draw(void) -{ - __asm__ __volatile__( - "int $0x40" ::"a"(12),"b"(1)); -}; - -static inline -void end_draw(void) -{ - __asm__ __volatile__( - "int $0x40" ::"a"(12),"b"(2)); -}; - -static inline -void sys_create_window(int x, int y, int w, int h, const char *name, - color_t workcolor, uint32_t style) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(0), - "b"((x << 16) | ((w-1) & 0xFFFF)), - "c"((y << 16) | ((h-1) & 0xFFFF)), - "d"((style << 24) | (workcolor & 0xFFFFFF)), - "D"(name), - "S"(0) : "memory"); -}; - -static inline -void define_button(uint32_t x_w, uint32_t y_h, uint32_t id, uint32_t color) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(8), - "b"(x_w), - "c"(y_h), - "d"(id), - "S"(color)); -}; - -static inline -void draw_line(int xs, int ys, int xe, int ye, color_t color) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(38), "d"(color), - "b"((xs << 16) | xe), - "c"((ys << 16) | ye)); -} - -static inline -void draw_bar(int x, int y, int w, int h, color_t color) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(13), "d"(color), - "b"((x << 16) | w), - "c"((y << 16) | h)); -} - -static inline -void draw_bitmap(void *bitmap, int x, int y, int w, int h) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(7), "b"(bitmap), - "c"((w << 16) | h), - "d"((x << 16) | y)); -} - -static inline -void draw_text_sys(const char *text, int x, int y, int len, color_t color) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(4),"d"(text), - "b"((x << 16) | y), - "S"(len),"c"(color) - :"memory"); -} - -static inline -uint32_t get_skin_height(void) -{ - uint32_t height; - - __asm__ __volatile__( - "int $0x40 \n\t" - :"=a"(height) - :"a"(48),"b"(4)); - return height; -}; - -static inline -pos_t get_mouse_pos(int origin) -{ - pos_t val; - - __asm__ __volatile__( - "int $0x40 \n\t" - "rol $16, %%eax" - :"=a"(val) - :"a"(37),"b"(origin)); - return val; -} - -static inline -uint32_t get_mouse_buttons(void) -{ - uint32_t val; - - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(37),"b"(2)); - return val; -}; - -static inline -uint32_t get_mouse_wheels(void) -{ - uint32_t val; - - __asm__ __volatile__( - "int $0x40 \n\t" - :"=a"(val) - :"a"(37),"b"(7)); - return val; -}; - -static inline uint32_t load_cursor(void *path, uint32_t flags) -{ - uint32_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(37), "b"(4), "c"(path), "d"(flags)); - return val; -} - -static inline uint32_t set_cursor(uint32_t cursor) -{ - uint32_t old; - __asm__ __volatile__( - "int $0x40" - :"=a"(old) - :"a"(37), "b"(5), "c"(cursor)); - return old; -}; - -static inline int destroy_cursor(uint32_t cursor) -{ - int ret; - __asm__ __volatile__( - "int $0x40" - :"=a"(ret) - :"a"(37), "b"(6), "c"(cursor) - :"memory"); - return ret; -}; - - -static inline -uint32_t wait_for_event(uint32_t time) -{ - uint32_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(23), "b"(time)); - return val; -}; - -static inline uint32_t check_os_event() -{ - uint32_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(11)); - return val; -}; - -static inline uint32_t get_os_event() -{ - uint32_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(10)); - return val; -}; - -static inline -uint32_t get_tick_count(void) -{ - uint32_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(26),"b"(9)); - return val; -}; - -static inline -uint64_t get_ns_count(void) -{ - uint64_t val; - __asm__ __volatile__( - "int $0x40" - :"=A"(val) - :"a"(26), "b"(10)); - return val; -}; - -static inline -oskey_t get_key(void) -{ - oskey_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(2)); - return val; -} - -static inline -uint32_t get_os_button() -{ - uint32_t val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(17)); - return val>>8; -}; - -static inline uint32_t get_service(char *name) -{ - uint32_t retval = 0; - __asm__ __volatile__( - "int $0x40" - :"=a"(retval) - :"a"(68),"b"(16),"c"(name) - :"memory"); - - return retval; -}; - -static inline int call_service(ioctl_t *io) -{ - int retval; - - __asm__ __volatile__( - "int $0x40" - :"=a"(retval) - :"a"(68),"b"(17),"c"(io) - :"memory","cc"); - - return retval; -}; - - -static inline void yield(void) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(68), "b"(1)); -}; - -static inline void delay(uint32_t time) -{ - __asm__ __volatile__( - "int $0x40" - ::"a"(5), "b"(time) - :"memory"); -}; - -static inline -void *user_alloc(size_t size) -{ - void *val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(68),"b"(12),"c"(size)); - return val; -} - -static inline -int user_free(void *mem) -{ - int val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(68),"b"(13),"c"(mem)); - return val; -} - -static inline -void* user_realloc(void *mem, size_t size) -{ - void *val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(68),"b"(20),"c"(size),"d"(mem) - :"memory"); - - return val; -}; - -static inline -int *user_unmap(void *base, size_t offset, size_t size) -{ - int *val; - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(68),"b"(26),"c"(base),"d"(offset),"S"(size)); - return val; -}; - -static inline ufile_t load_file(const char *path) -{ - ufile_t uf; - - __asm__ __volatile__ ( - "int $0x40" - :"=A"(uf.raw) - :"a" (68), "b"(27),"c"(path)); - - return uf; -}; - -static inline int GetScreenSize() -{ - int retval; - - __asm__ __volatile__( - "int $0x40" - :"=a"(retval) - :"a"(61), "b"(1)); - return retval; -} - - -static inline void get_proc_info(char *info) -{ - __asm__ __volatile__( - "int $0x40" - : - :"a"(9), "b"(info), "c"(-1) - :"memory"); -}; - -static inline void Blit(void *bitmap, int dst_x, int dst_y, - int src_x, int src_y, int w, int h, - int src_w, int src_h, int stride) -{ - volatile struct blit_call bc; - - bc.dstx = dst_x; - bc.dsty = dst_y; - bc.w = w; - bc.h = h; - bc.srcx = src_x; - bc.srcy = src_y; - bc.srcw = src_w; - bc.srch = src_h; - bc.stride = stride; - bc.bitmap = bitmap; - - __asm__ __volatile__( - "int $0x40" - ::"a"(73),"b"(0),"c"(&bc.dstx)); -}; - - -// newlib exclusive -#ifndef __TINYC__ -int create_thread(int (*proc)(void *param), void *param, int stack_size); - -void* load_library(const char *name); - -void* get_proc_address(void *handle, const char *proc_name); - -void enumerate_libraries(int (*callback)(void *handle, const char* name, - uint32_t base, uint32_t size, void *user_data), - void *user_data); -#endif - -/////////////////////////////////////////////////////////////////////////////// -/// May be next section need to be added in newlibc -// Siemargl addenium - -#define X_Y(x,y) (((x)<<16)|(y)) - -enum KOLIBRI_GUI_EVENTS { - KOLIBRI_EVENT_NONE = 0, /* Event queue is empty */ - KOLIBRI_EVENT_REDRAW = 1, /* Window and window elements should be redrawn */ - KOLIBRI_EVENT_KEY = 2, /* A key on the keyboard was pressed */ - KOLIBRI_EVENT_BUTTON = 3, /* A button was clicked with the mouse */ - KOLIBRI_EVENT_DESKTOP = 5, /* Desktop redraw finished */ - KOLIBRI_EVENT_MOUSE = 6, /* Mouse activity (movement, button press) was detected */ - KOLIBRI_EVENT_IPC = 7, /* Interprocess communication notify */ - KOLIBRI_EVENT_NETWORK = 8, /* Network event */ - KOLIBRI_EVENT_DEBUG = 9, /* Debug subsystem event */ - KOLIBRI_EVENT_IRQBEGIN = 16 /* 16..31 IRQ0..IRQ15 interrupt =IRQBEGIN+IRQn */ -}; - -enum control_keys { - KM_SHIFT = 0x00010000, - KM_CTRL = 0x00020000, - KM_ALT = 0x00040000, - KM_NUMLOCK = 0x00080000 -}; - - -struct __attribute__ ((__packed__)) fs_dirinfo { - uint32_t subfn; // 1 read dir - uint32_t start; - uint32_t flags; - uint32_t size; - uint32_t retval; - union { - struct __attribute__ ((__packed__)) { - uint8_t zero; // 0 - char* ppath; - }; - char path[5]; // up to 4096 - } ; -}; - -static inline -uint32_t sf_file(int subfn, struct fs_dirinfo* dinfo) -/// SysFn70 call with subfunction -/// retval 0 if ok -{ - uint32_t retval; - dinfo->subfn = subfn; - - __asm__ __volatile__( - "int $0x40 " - :"=a"(retval) - :"a"(70),"b"(dinfo) - :); - - return retval; -}; - - -struct fs_dirheader { - uint32_t version; // 1 - uint32_t curn_blocks; // number of read dir items (BDFE) - uint32_t totl_blocks; // directory full size - char other[20]; // reserved 0 -}; - -enum filetype -{ - FS_RONLY = 1, - FS_HIDDEN = 2, - FS_SYSTEM = 4, - FS_VOLID = 8, - FS_SUBDIR = 16, - FS_FOLDER = 16, - FS_ARCHIV = 32 -}; - -struct __attribute__ ((__packed__)) fs_filetime { - uint8_t sec; - uint8_t mm; - uint8_t hour; - uint8_t zero; -}; - -struct __attribute__ ((__packed__)) fs_filedate { - uint8_t day; - uint8_t month; - uint16_t year; -}; - -/// directory entry cp866 -struct fsBDFE { - uint32_t filetype; - uint32_t encoding; // 0 - cp866, 1 - utf16le - struct fs_filetime tm_created; - struct fs_filedate dt_created; - struct fs_filetime tm_accessed; - struct fs_filedate dt_accessed; - struct fs_filetime tm_modified; - struct fs_filedate dt_modified; - uint64_t size; - char fname[264]; -}; // must be sized 304 - -/// directory entry UTF16LE -struct fsBDFE_16 { - uint32_t filetype; - uint32_t encoding; // 0 - cp866, 1 - utf16le - struct fs_filetime tm_created; - struct fs_filedate dt_created; - struct fs_filetime tm_accessed; - struct fs_filedate dt_accessed; - struct fs_filetime tm_modified; - struct fs_filedate dt_modified; - uint64_t size; - wchar_t fname[260]; -}; // must be sized 560 - - - -// copied from /programs/system/shell/system/kolibri.c -// fn's returned -1 as syserror, 1 as error, 0 as OK -static inline -int kol_clip_num() -{ - register uint32_t val; - asm volatile ("int $0x40":"=a"(val):"a"(54), "b"(0)); - return val; -} - -static inline -char* kol_clip_get(int n) -// returned buffer must be freed by user_free() -{ - register char* val; - asm volatile ("int $0x40":"=a"(val):"a"(54), "b"(1), "c"(n)); - return val; -} - -static inline -int kol_clip_set(int n, char buffer[]) -{ - register uint32_t val; - asm volatile ("int $0x40":"=a"(val):"a"(54), "b"(2), "c"(n), "d"(buffer)); - return val; -} - -static inline -int kol_clip_pop() -{ - register uint32_t val; - asm volatile ("int $0x40":"=a"(val):"a"(54), "b"(3)); - return val; -} - -static inline -int kol_clip_unlock() -{ - register uint32_t val; - asm volatile ("int $0x40":"=a"(val):"a"(54), "b"(4)); - return val; -} - -static inline void get_system_colors(struct kolibri_system_colors *color_table) -{ - __asm__ volatile ("int $0x40" - : - :"a"(48),"b"(3),"c"(color_table),"d"(40) - ); - - /* color_table should point to the system color table */ -} - -static inline void debug_board_write_byte(const char ch){ - __asm__ __volatile__( - "int $0x40" - : - :"a"(63), "b"(1), "c"(ch)); -} - - -static inline void draw_number_sys(int32_t number, int x, int y, int len, color_t color){ - register uint32_t fmt; - fmt = len << 16 | 0x80000000; // no leading zeros + width -// fmt = len << 16 | 0x00000000; // leading zeros + width - __asm__ __volatile__( - "int $0x40" - : - :"a"(47), "b"(fmt), "c"(number), "d"((x << 16) | y), "S"(color)); -} - -static inline -uint32_t get_mouse_eventstate(void) -{ - uint32_t val; - - __asm__ __volatile__( - "int $0x40" - :"=a"(val) - :"a"(37),"b"(3)); - return val; -}; - -static inline -uint32_t set_event_mask(uint32_t mask) -{ - register uint32_t val; - asm volatile ("int $0x40":"=a"(val):"a"(40), "b"(mask)); - return val; -} - -typedef void (*thread_proc)(void*); - -static inline -int start_thread(thread_proc proc, char* stack_top) -{ - register int val; - asm volatile ("int $0x40":"=a"(val):"a"(51), "b"(1), "c"(proc), "d"(stack_top)); - return val; -} - -static inline -void kos_exit() -{ - asm volatile ("int $0x40"::"a"(-1)); -} - -static inline void focus_window(int slot){ - asm volatile ("int $0x40"::"a"(18), "b"(3), "c"(slot)); -} - -static inline int get_thread_slot(int tid){ - register int val; - asm volatile ("int $0x40":"=a"(val):"a"(18), "b"(21), "c"(tid)); - return val; -} - -static inline void set_current_folder(char* dir){ - asm volatile ("int $0x40"::"a"(30), "b"(1), "c"(dir)); -} - -static inline int get_current_folder(char* buf, int bufsize){ - register int val; - asm volatile ("int $0x40":"=a"(val):"a"(30), "b"(2), "c"(buf), "d"(bufsize)); - return val; -} - -static inline -void ipc_set_area(void* buf, int bufsize){ - asm volatile ("int $0x40"::"a"(60), "b"(1), "c"(buf), "d"(bufsize)); -} - -static inline -int ipc_send_message(int pid_reciever, void *data, int datalen) { - register int val; - asm volatile ("int $0x40":"=a"(val):"a"(60), "b"(2), "c"(pid_reciever), "d"(data), "S"(datalen)); - return val; -} - -static inline -void* shm_open(char *shm_name, int msize, int flags, int *retsz){ - register int val, cod; - asm volatile ("int $0x40":"=a"(val),"=d"(cod):"a"(68), "b"(22), "c"(shm_name), "d"(msize), "S"(flags)); - - if(retsz) *retsz = cod; // errcode if NULL or memsize when open - return (void*)val; -} - -static inline -void shm_close(char *shm_name){ - asm volatile ("int $0x40"::"a"(68), "b"(23), "c"(shm_name)); -} - -static inline -int start_app(char *app_name, char *args){ - file_op_t file_op; - memset(&file_op, 0, sizeof(file_op)); - file_op.fn = 7; - file_op.args = args; - file_op.app_name = app_name; - - register int val; - asm volatile ("int $0x40":"=a"(val):"a"(70), "b"(&file_op)); - - return val; -} - -static inline -uint32_t get_control_keys(void) -{ - uint32_t ctrl; - - __asm__ __volatile__( - "int $0x40 \n\t" - :"=a"(ctrl) - :"a"(66),"b"(3)); - - return ctrl; -}; - -static inline -int get_keyboard_layout(int opt, char* buf) -/// 128 byte buffer -/// opt: 1 - normal, 2 - shifted, 3 - alted, or 9 - return language -{ - uint32_t lang; - - __asm__ __volatile__( - "int $0x40 \n\t" - :"=a"(lang) - :"a"(26),"b"(2), "c"(opt), "d"(buf)); - - return lang; -}; - - -static inline -int font_size(int color) -/// decode font size in pixels from color as SysFn4 -/// returns (width, hight) -{ - int font = color >> 24; - int font_multipl = (font & 7) + 1; - int width_sym, hight_sym; - - if (font & 0x10) // 8x16 - { - width_sym = 8 * font_multipl; - hight_sym = 16 * font_multipl; - } else // 6x9 - { - width_sym = 6 * font_multipl; - hight_sym = 9 * font_multipl; - } - return hight_sym + (width_sym << 16); -} - -/* -static inline char *getcwd(char *buf, size_t size) -{ - int rc = get_current_folder(buf, size); - if (rc > size) - { - errno = ERANGE; - return 0; - } - else - return buf; -} -*/ -/* not finished -void staticnum_draw(staticnum *st) -{ - register uint32_t fmt; - if (st->width < 0) - fmt = (-st->width << 16); // leading zeros, decimal - else - fmt = (st->width << 16) | 0x80000000; // no leading zeros, decimal - - __asm__ __volatile__( - "int $0x40" - ::"a"(47), - "b"(fmt), - "c"(st->number), - "d"(st->start_xy), - "S"(st->color_flags), - "D"(st->bg_color) - :); -} - -*/ -//////////// end section - - - -//added nonstatic inline because incomfortabre stepping in in debugger -void __attribute__ ((noinline)) debug_board_write_str(const char* str); -void __attribute__ ((noinline)) debug_board_printf(const char *format,...); - -/* copy body to only one project file -void __attribute__ ((noinline)) debug_board_write_str(const char* str){ - while(*str) - debug_board_write_byte(*str++); -} - -void __attribute__ ((noinline)) debug_board_printf(const char *format,...) -{ - va_list ap; - char log_board[300]; - - va_start (ap, format); - vsnprintf(log_board, sizeof log_board, format, ap); - va_end(ap); - debug_board_write_str(log_board); -} - -__attribute__ ((noinline)) void trap(int n) -{ - // nothing todo, just see n in debugger. use "bp trap" command - __asm__ __volatile__( - "nop" - : - :"a"(n)); -} - -*/ - - - -// TinyC don't support aliasing of static inline funcs -#ifndef __TINYC__ -static inline void BeginDraw(void) __attribute__ ((alias ("begin_draw"))); -static inline void EndDraw(void) __attribute__ ((alias ("end_draw"))); -static inline void DrawWindow(int x, int y, int w, int h, const char *name, - color_t workcolor, uint32_t style) - __attribute__ ((alias ("sys_create_window"))); -static inline void DefineButton(void) __attribute__ ((alias ("define_button"))); -static inline void DrawLine(int xs, int ys, int xe, int ye, color_t color) - __attribute__ ((alias ("draw_line"))); -static inline void DrawBar(int x, int y, int w, int h, color_t color) - __attribute__ ((alias ("draw_bar"))); -static inline void DrawBitmap(void *bitmap, int x, int y, int w, int h) - __attribute__ ((alias ("draw_bitmap"))); -static inline uint32_t GetSkinHeight(void) __attribute__ ((alias ("get_skin_height"))); -static inline pos_t GetMousePos(int origin) __attribute__ ((alias ("get_mouse_pos"))); -static inline uint32_t GetMouseButtons(void) __attribute__ ((alias ("get_mouse_buttons"))); -static inline uint32_t GetMouseWheels(void) __attribute__ ((alias ("get_mouse_wheels"))); -static inline uint32_t LoadCursor(void *path, uint32_t flags) __attribute__ ((alias ("load_cursor"))); -static inline uint32_t SetCursor(uint32_t cursor) __attribute__ ((alias ("set_cursor"))); -static inline int DestroyCursor(uint32_t cursor) __attribute__ ((alias ("destroy_cursor"))); -static inline uint32_t GetOsEvent(void) __attribute__ ((alias ("get_os_event"))); -static inline void *UserAlloc(size_t size) __attribute__ ((alias ("user_alloc"))); -static inline int UserFree(void *mem) __attribute__ ((alias ("user_free"))); -static inline void* UserRealloc(void *mem, size_t size) __attribute__ ((alias ("user_realloc"))); -static inline int *UserUnmap(void *base, size_t offset, size_t size) __attribute__ ((alias ("user_unmap"))); -static inline ufile_t LoadFile(const char *path) __attribute__ ((alias ("load_file"))); -static inline void GetProcInfo(char *info) __attribute__ ((alias ("get_proc_info"))); -#endif - -#ifdef __cplusplus -} -#endif - - -#endif - - - - - diff --git a/data/common/develop/tcc/include/math.h b/data/common/develop/tcc/include/math.h deleted file mode 100644 index 858a8517c..000000000 --- a/data/common/develop/tcc/include/math.h +++ /dev/null @@ -1,194 +0,0 @@ -/* Copyright (C) 1999 DJ Delorie, see COPYING.DJ for details */ -/* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */ -/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#ifndef _MATH_H -#define _MATH_H - -//extern int stdcall integer(float number); - -extern double acos(double _x); -extern double asin(double _x); -extern double atan(double _x); -extern double atan2(double _y, double _x); -extern double ceil(double _x); -extern double cos(double _x); -extern double cosh(double _x); -extern double exp(double _x); -extern double fabs(double _x); -extern double floor(double _x); -extern double fmod(double _x, double _y); -extern double frexp(double _x, int *_pexp); -extern double ldexp(double _x, int _exp); -extern double log(double _y); -extern double log10(double _x); -extern double modf(double _x, double *_pint); -extern double pow(double _x, double _y); -extern double sin(double _x); -extern double sinh(double _x); -extern double sqrt(double _x); -extern double tan(double _x); -extern double tanh(double _x); - -//#ifndef __STRICT_ANSI__ - -//#ifndef _POSIX_SOURCE - -#define M_E 2.7182818284590452354 -#define M_LOG2E 1.4426950408889634074 -#define M_LOG10E 0.43429448190325182765 -#define M_LN2 0.69314718055994530942 -#define M_LN10 2.30258509299404568402 -#define M_PI 3.14159265358979323846 -#define M_PI_2 1.57079632679489661923 -#define M_PI_4 0.78539816339744830962 -#define M_1_PI 0.31830988618379067154 -#define M_2_PI 0.63661977236758134308 -#define M_2_SQRTPI 1.12837916709551257390 -#define M_SQRT2 1.41421356237309504880 -#define M_SQRT1_2 0.70710678118654752440 -#define PI M_PI -#define PI2 M_PI_2 - -extern double acosh(double); -extern double asinh(double); -extern double atanh(double); -extern double cbrt(double); -extern double exp10(double _x); -extern double exp2(double _x); -extern double expm1(double); -extern double hypot(double, double); -extern double log1p(double); -extern double log2(double _x); -extern long double modfl(long double _x, long double *_pint); -extern double pow10(double _x); -extern double pow2(double _x); -extern double powi(double, int); -extern void sincos(double *, double *, double); - -/* These are in libm.a (Cygnus). You must link -lm to get these */ -/* See libm/math.h for comments */ -/* -#ifndef __cplusplus -struct exception { - int type; - const char *name; - double arg1; - double arg2; - double retval; - int err; -}; -#endif -*/ - -extern double erf(double); -extern double erfc(double); -extern double gamma(double); -extern int isinf(double); -extern int isnan(double); -extern int finite(double); -extern double j0(double); -extern double j1(double); -extern double jn(int, double); -extern double lgamma(double); -extern double nan(void); -extern double y0(double); -extern double y1(double); -extern double yn(int, double); -extern double logb(double); -extern double nextafter(double, double); -extern double remainder(double, double); -extern double scalb(double, double); -//#ifndef __cplusplus -//extern int matherr(struct exception *); -//#endif -extern double significand(double); -extern double copysign(double, double); -extern int ilogb(double); -extern double rint(double); -extern double scalbn(double, int); -extern double drem(double, double); -extern double gamma_r(double, int *); -extern double lgamma_r(double, int *); -extern float acosf(float); -extern float asinf(float); -extern float atanf(float); -extern float atan2f(float, float); -extern float cosf(float); -extern float sinf(float); -extern float tanf(float); -extern float coshf(float); -extern float sinhf(float); -extern float tanhf(float); -extern float expf(float); -extern float frexpf(float, int *); -extern float ldexpf(float, int); -extern float logf(float); -extern float log10f(float); -extern float modff(float, float *); -extern float powf(float, float); -extern float sqrtf(float); -extern float ceilf(float); -extern float fabsf(float); -extern float floorf(float); -extern float fmodf(float, float); -extern float erff(float); -extern float erfcf(float); -extern float gammaf(float); -extern float hypotf(float, float); -extern int isinff(float); -extern int isnanf(float); -extern int finitef(float); -extern float j0f(float); -extern float j1f(float); -extern float jnf(int, float); -extern float lgammaf(float); -extern float nanf(void); -extern float y0f(float); -extern float y1f(float); -extern float ynf(int, float); -extern float acoshf(float); -extern float asinhf(float); -extern float atanhf(float); -extern float cbrtf(float); -extern float logbf(float); -extern float nextafterf(float, float); -extern float remainderf(float, float); -extern float scalbf(float, float); -extern float significandf(float); -extern float copysignf(float, float); -extern int ilogbf(float); -extern float rintf(float); -extern float scalbnf(float, int); -extern float dremf(float, float); -extern float expm1f(float); -extern float log1pf(float); -extern float gammaf_r(float, int *); -extern float lgammaf_r(float, int *); - -double round (double x); -long double roundl (long double x); - -#ifndef NAN -# define NAN (__nan__) -#endif - -#ifndef INFINITY -# define INFINITY (__inf__) -#endif - - -//#endif /* !_POSIX_SOURCE */ -//#endif /* !__STRICT_ANSI__ */ -//#endif /* !__dj_ENFORCE_ANSI_FREESTANDING */ - -//#ifndef __dj_ENFORCE_FUNCTION_CALLS -//#endif /* !__dj_ENFORCE_FUNCTION_CALLS */ - -//#ifdef __cplusplus -//} -//#endif - -//#endif /* _USE_LIBM_MATH_H */ - -//#endif /* !__dj_include_math_h_ */ -#endif \ No newline at end of file diff --git a/data/common/develop/tcc/include/stdarg.h b/data/common/develop/tcc/include/stdarg.h deleted file mode 100644 index 06d592b93..000000000 --- a/data/common/develop/tcc/include/stdarg.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef _STDARG_H -#define _STDARG_H - -#ifdef __x86_64__ -#ifndef _WIN64 - -//This should be in sync with the declaration on our lib/libtcc1.c -/* GCC compatible definition of va_list. */ -typedef struct { - unsigned int gp_offset; - unsigned int fp_offset; - union { - unsigned int overflow_offset; - char *overflow_arg_area; - }; - char *reg_save_area; -} __va_list_struct; - -typedef __va_list_struct va_list[1]; - -void __va_start(__va_list_struct *ap, void *fp); -void *__va_arg(__va_list_struct *ap, int arg_type, int size, int align); - -#define va_start(ap, last) __va_start(ap, __builtin_frame_address(0)) -#define va_arg(ap, type) \ - (*(type *)(__va_arg(ap, __builtin_va_arg_types(type), sizeof(type), __alignof__(type)))) -#define va_copy(dest, src) (*(dest) = *(src)) -#define va_end(ap) - -#else /* _WIN64 */ -typedef char *va_list; -#define va_start(ap,last) __builtin_va_start(ap,last) -#define va_arg(ap,type) (ap += 8, sizeof(type)<=8 ? *(type*)ap : **(type**)ap) -#define va_copy(dest, src) ((dest) = (src)) -#define va_end(ap) -#endif - -#elif __arm__ -typedef char *va_list; -#define _tcc_alignof(type) ((int)&((struct {char c;type x;} *)0)->x) -#define _tcc_align(addr,type) (((unsigned)addr + _tcc_alignof(type) - 1) \ - & ~(_tcc_alignof(type) - 1)) -#define va_start(ap,last) ap = ((char *)&(last)) + ((sizeof(last)+3)&~3) -#define va_arg(ap,type) (ap = (void *) ((_tcc_align(ap,type)+sizeof(type)+3) \ - &~3), *(type *)(ap - ((sizeof(type)+3)&~3))) -#define va_copy(dest, src) (dest) = (src) -#define va_end(ap) - -#elif defined(__aarch64__) -typedef struct { - void *__stack; - void *__gr_top; - void *__vr_top; - int __gr_offs; - int __vr_offs; -} va_list; -#define va_start(ap, last) __va_start(ap, last) -#define va_arg(ap, type) __va_arg(ap, type) -#define va_end(ap) -#define va_copy(dest, src) ((dest) = (src)) - -#else /* __i386__ */ -typedef char *va_list; -/* only correct for i386 */ -#define va_start(ap,last) ap = ((char *)&(last)) + ((sizeof(last)+3)&~3) -#define va_arg(ap,type) (ap += (sizeof(type)+3)&~3, *(type *)(ap - ((sizeof(type)+3)&~3))) -#define va_copy(dest, src) (dest) = (src) -#define va_end(ap) -#endif - -/* fix a buggy dependency on GCC in libio.h */ -typedef va_list __gnuc_va_list; -#define _VA_LIST_DEFINED - -#endif /* _STDARG_H */ diff --git a/data/common/develop/tcc/include/stdbool.h b/data/common/develop/tcc/include/stdbool.h deleted file mode 100644 index d2ee446e7..000000000 --- a/data/common/develop/tcc/include/stdbool.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _STDBOOL_H -#define _STDBOOL_H - -/* ISOC99 boolean */ - -#define bool _Bool -#define true 1 -#define false 0 -#define __bool_true_false_are_defined 1 - -#endif /* _STDBOOL_H */ diff --git a/data/common/develop/tcc/include/stddef.h b/data/common/develop/tcc/include/stddef.h deleted file mode 100644 index 791ba318c..000000000 --- a/data/common/develop/tcc/include/stddef.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef _STDDEF_H -#define _STDDEF_H - -typedef __SIZE_TYPE__ size_t; -typedef __PTRDIFF_TYPE__ ssize_t; -typedef __WCHAR_TYPE__ wchar_t; -typedef __PTRDIFF_TYPE__ ptrdiff_t; -typedef __PTRDIFF_TYPE__ intptr_t; -typedef __SIZE_TYPE__ uintptr_t; - -#ifndef __int8_t_defined -#define __int8_t_defined -typedef signed char int8_t; -typedef signed short int int16_t; -typedef signed int int32_t; -typedef signed long long int int64_t; -typedef unsigned char uint8_t; -typedef unsigned short int uint16_t; -typedef unsigned int uint32_t; -typedef unsigned long long int uint64_t; -#endif - -#ifndef NULL -#define NULL ((void*)0) -#endif - -#define offsetof(type, field) ((size_t)&((type *)0)->field) - -void *alloca(size_t size); - -#endif - -/* Older glibc require a wint_t from (when requested - by __need_wint_t, as otherwise stddef.h isn't allowed to - define this type). Note that this must be outside the normal - _STDDEF_H guard, so that it works even when we've included the file - already (without requiring wint_t). Some other libs define _WINT_T - if they've already provided that type, so we can use that as guard. - TCC defines __WINT_TYPE__ for us. */ -#if defined (__need_wint_t) -#ifndef _WINT_T -#define _WINT_T -typedef __WINT_TYPE__ wint_t; -#endif -#undef __need_wint_t -#endif diff --git a/data/common/develop/tcc/include/stdint.h b/data/common/develop/tcc/include/stdint.h deleted file mode 100644 index d8dcc0f82..000000000 --- a/data/common/develop/tcc/include/stdint.h +++ /dev/null @@ -1 +0,0 @@ -#include \ No newline at end of file diff --git a/data/common/develop/tcc/include/stdio.h b/data/common/develop/tcc/include/stdio.h deleted file mode 100644 index 5b1bd9c41..000000000 --- a/data/common/develop/tcc/include/stdio.h +++ /dev/null @@ -1,128 +0,0 @@ -#ifndef stdio_h -#define stdio_h - -#include "kolibrisys.h" -#include -/* use stdarg.h -typedef char *va_list; -#define _roundsize(n) ( (sizeof(n) + 3) & ~3 ) -#define va_start(ap,v) (ap = (va_list)&v+_roundsize(v)) -#define va_arg(ap,t) ( *(t *)((ap += _roundsize(t)) - _roundsize(t)) ) -#define va_end(ap) (ap = (va_list)0) -*/ -#ifndef NULL -# define NULL ((void*)0) -#endif - -typedef unsigned int fpos_t; // 32bit is not enough! 4Gb limit -typedef unsigned int size_t; - -int format_print(char *dest, size_t maxlen,const char *fmt0, va_list argp); - -typedef struct { - char* buffer; - dword buffersize; - dword filesize; // too small - int filepos; // too small, may be -1 - char* filename; - int mode; - int ungetc_buf; - dword buffer_start; // 1st byte position - dword buffer_end; // points after last buffered data -} FILE; - -#define stderr ((FILE*)3) /* works only for fprintf!!! */ - - -#define FILE_OPEN_READ 0 -#define FILE_OPEN_WRITE 1 -#define FILE_OPEN_APPEND 2 -#define FILE_OPEN_TEXT 4 -#define FILE_OPEN_PLUS 8 -#define EOF (-1) -#define BUFSIZ (4096) -#define FILENAME_MAX (0x400) - -extern FILE* fopen(const char* filename, const char *mode); -extern int fclose(FILE* file); -extern int feof(FILE* file); -extern int fflush(FILE* file); -extern int fgetc(FILE* file); -extern int fgetpos(FILE* file,fpos_t* pos); -extern int fsetpos(FILE* file,const fpos_t* pos); -extern int fputc(int c,FILE* file); -extern int fread(void* buffer,int size,int count,FILE* file); -extern int fwrite(void *buffer,int size,int count,FILE* file); -extern long ftell(FILE* file); -#define SEEK_CUR 0 -#define SEEK_END 1 -#define SEEK_SET 2 -extern int fseek(FILE* file,long offset,int origin); -extern void rewind(FILE* file); -extern int cdecl fprintf(FILE* file, const char* format,...); -extern int fscanf(FILE* file,const char* format,...); -extern int ungetc(int c,FILE* file); - -extern int cdecl printf(const char *format,...); - -extern int vsnprintf(char *dest, size_t size,const char *format,va_list ap); -extern int cdecl snprintf(char *dest, size_t size, const char *format,...); -extern int cdecl sprintf(char *dest,const char *format,...); - -#define getc(a) fgetc(a) -#define putc(a, b) fputc(a, b) -char * fgets (char * str, int num, FILE * stream); -int putchar (int ch); -int getchar (void); -int puts (const char * str); -char * gets (char * str); - -typedef int (*virtual_getc)(void *sp, const void *obj); -typedef void (*virtual_ungetc)(void *sp, int c, const void *obj); -int format_scan(const void *src, const char *fmt, va_list argp, virtual_getc vgetc, virtual_ungetc vungetc); -int vscanf ( const char * format, va_list arg ); -int scanf ( const char * format, ...); -int vsscanf ( const char * s, const char * format, va_list arg ); -int sscanf ( const char * s, const char * format, ...); -int vfscanf ( FILE * stream, const char * format, va_list arg ); -int fputs ( const char * str, FILE * file ); -void clearerr ( FILE * stream ); -int ferror ( FILE * stream ); -void perror ( const char * str ); -int vprintf ( const char * format, va_list arg ); -int vsprintf (char * s, const char * format, va_list arg ); -int vfprintf ( FILE * stream, const char * format, va_list arg ); - - -int tiny_sprintf (char * s, const char * format, ... ); -int tiny_snprintf (char * s, size_t n, const char * format, ... ); -int tiny_vsnprintf (char * s, size_t n, const char * format, va_list args ); -// support %c, %s, %d, %x, %u, %% for 32-bit values only. no width specs, left align -// always zero-ended - -extern int errno; -/* errors codes from KOS, but minus */ -#ifndef E_SUCCESS - -# define E_SUCCESS (0) -# define E_UNSUPPORTED (-2) -# define E_UNKNOWNFS (-3) -# define E_NOTFOUND (-5) -# define E_EOF (-6) -# define E_INVALIDPTR (-7) -# define E_DISKFULL (-8) -# define E_FSYSERROR (-9) -# define E_ACCESS (-10) -# define E_HARDWARE (-11) -# define E_NOMEM (-12) -/* conversion errors */ -# define ERANGE (-20) -# define EINVAL (-21) -/* program run and pipe errors */ -# define E_NOMEM2 (-30) -# define E_FILEFMT (-31) -# define E_TOOMANY (-32) -# define E_PARAM (-33) -#endif - -#endif diff --git a/data/common/develop/tcc/include/stdlib.h b/data/common/develop/tcc/include/stdlib.h deleted file mode 100644 index 5dc231baf..000000000 --- a/data/common/develop/tcc/include/stdlib.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef stdlib_h -#define stdlib_h -#include "kolibrisys.h" - -#define RAND_MAX 65535 -#ifndef NULL -# define NULL ((void*)0) -#endif - -#define abs(i) (((i)<0)?(-(i)):(i)) -#define labs(li) abs(li) - -#define min(a, b) ((a)<(b) ? (a) : (b)) -#define max(a, b) ((a)>(b) ? (a) : (b)) - - -extern int atoib(char *s,int b); -extern int atoi(char *s); -extern char *itoab(unsigned int n,char* s,int b); -extern char *__itoa(int n,char* s); - -// function using KOS syscalls -extern void* stdcall sysmalloc(dword size); -extern void stdcall sysfree(void *pointer); -extern void* stdcall sysrealloc(void* pointer,dword size); -extern void* syscalloc (size_t num, size_t size); - -// suballocator functions -extern void* wtmalloc(size_t size); -extern void wtfree(void *pointer); -extern void* wtrealloc(void* pointer, size_t size); -extern void* wtcalloc (size_t num, size_t size); -extern int wtmalloc_freelist_check(); -extern int wtmalloc_poiner_check(void *ptr); -extern void wtmalloc_freelist_print(); - -#ifdef USESYSALLOC -#define malloc(x) sysmalloc(x) -#define free(x) sysfree(x) -#define realloc(x,y) sysrealloc(x,y) -#define calloc(x,y) syscalloc(x,y) -#else -#define malloc(x) wtmalloc(x) -#define free(x) wtfree(x) -#define realloc(x,y) wtrealloc(x,y) -#define calloc(x,y) wtcalloc(x,y) -#endif - - -extern int rand (void); -extern void srand (unsigned int seed); - -double strtod (const char* str, char** endptr); -long double strtold (const char* str, char** endptr); -float strtof (const char* str, char** endptr); -long int strtol (const char* str, char** endptr, int base); -#define strtoul(s, ep, b) ((unsigned long int)strtol(s, ep, b)) - - -void exit (int status); /* close console if was initialized, also stay window [finished] when status is error < 0 */ -#define abort() exit(-1) - -typedef struct { - int quot; - int rem; -} div_t; - -typedef div_t ldiv_t; - -div_t div (int numer, int denom); -#define ldiv(a, b) div(a, b) -#define atol(a) atoi(a) -#define atof(a) strtod(a, NULL) - - - -#endif diff --git a/data/common/develop/tcc/include/string.h b/data/common/develop/tcc/include/string.h deleted file mode 100644 index f69a8036f..000000000 --- a/data/common/develop/tcc/include/string.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef string_h -#define string_h -typedef unsigned int size_t; - - -extern void* memchr(const void*,int,size_t); -extern int memcmp(const void*,const void*,size_t); -extern void* memcpy(void*,const void*,size_t); -extern void* memmove(void*,const void*,size_t); -extern void* memset(void*,int,size_t); -extern char* strcat(char*,const char*); -extern char* strchr(const char*,int); -extern int strcmp(const char*,const char*); -extern int strcoll(const char*,const char*); -extern char* strcpy(char*,const char*); -extern size_t strcspn(const char*,const char*); -extern int strlen(const char*); -extern char* strncat(char*,const char*,size_t); -extern int strncmp(const char*,const char*,size_t); -extern char* strncpy(char*,const char*,size_t); -extern char* strpbrk(const char*,const char*); -extern char* strrchr(const char*,int); -extern size_t strspn(const char*,const char*); -extern char* strstr(const char*,const char*); -extern char* strtok(char*,const char*); -extern int strxfrm(char*,const char*,int); -extern char* strdup(const char*); -extern char* strrev(char *p); -char * strerror ( int errnum ); - -#ifndef NULL -# define NULL ((void*)0) -#endif - -#endif diff --git a/data/common/develop/tcc/include/time.h b/data/common/develop/tcc/include/time.h deleted file mode 100644 index 890489937..000000000 --- a/data/common/develop/tcc/include/time.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef _TIME_H -#define _TIME_H - - -typedef unsigned long int clock_t; -typedef unsigned long int time_t; -#define clock() get_tick_count() -#define CLOCKS_PER_SEC 100 - -struct tm { - int tm_sec; /* seconds after the minute 0-61*/ - int tm_min; /* minutes after the hour 0-59 */ - int tm_hour; /* hours since midnight 0-23 */ - int tm_mday; /* day of the month 1-31 */ - int tm_mon; /* months since January 0-11 */ - int tm_year; /* years since 1900 */ - int tm_wday; /* days since Sunday 0-6 */ - int tm_yday; /* days since January 1 0-365 */ - int tm_isdst; /* Daylight Saving Time flag */ -}; - -time_t mktime (struct tm * timeptr); -time_t time (time_t* timer); -struct tm * localtime (const time_t * timer); /* non-standard! ignore parameter and return just time now, not generate tm_isdst, tm_yday, tm_wday == -1 */ -double difftime (time_t end, time_t beginning); - -extern struct tm __buffertime; - -#endif \ No newline at end of file diff --git a/data/common/develop/tcc/include/varargs.h b/data/common/develop/tcc/include/varargs.h deleted file mode 100644 index d614366ed..000000000 --- a/data/common/develop/tcc/include/varargs.h +++ /dev/null @@ -1,12 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the w64 mingw-runtime package. - * No warranty is given; refer to the file DISCLAIMER within this package. - */ -#ifndef _VARARGS_H -#define _VARARGS_H - -#error "TinyCC no longer implements ." -#error "Revise your code to use ." - -#endif diff --git a/data/common/develop/tcc/kpack.exe b/data/common/develop/tcc/kpack.exe deleted file mode 100644 index 3cdcc3fd694f429dd72429c0a8cc08049bfc2c51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14336 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
    cVW1P$1-p8o<# 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 diff --git a/data/common/develop/tcc/lib/start.o b/data/common/develop/tcc/lib/start.o deleted file mode 100644 index 573db80601f6fe59223d67bb525ba7d907015c2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcma))Jxc>Y5QgUx6Cyz|f|VZx3lYRfBtil~QfN#e{shBC;s>ZmZX;TWdcuha{s9GB zv9J*$fqRK@4Si4Hrk+A51sNylP(JwD(q`lc&1plsjN^Kf104Mfq}8J9oS z%OauIie1UDcr$L3-6CkbPSl4HN}Er{eVxxUAN3F6N6c?NB*VqK-AT*nGhWQASrj5` z2ou%6EX#_PGu0GmneRKD?A`nfYfam+eLK&-;dL|I3O*(*8JFCUG$eOH54IdgeI$7z z3H-6PUy57T{zrT5^ITUe;ytbaS@-|aEm#jq%~ucMF%lp*j=RP>#Tvua6wy`}gqj0I z!Db;p9})Q#L6MxMktWoFpsa%hb#9TeS+y`T{=2Iq16_)ONWT_SJH J6(HAP`v#hYXy5<< diff --git a/data/common/develop/tcc/readme.txt b/data/common/develop/tcc/readme.txt deleted file mode 100644 index 50984d5b9..000000000 --- a/data/common/develop/tcc/readme.txt +++ /dev/null @@ -1,126 +0,0 @@ -see -source/readme.* -source/changelog -source/tcc-doc.info or .texi - -building Kolibri version ->make -f Makefile.kos32 - -========= for compiler developers ========= -read .\source\readme_kos32.txt - ------- TODO ------- --minimal memory allocator --more libc stardard functions. see report below --more Kolibly SysFn wrappers. see \libc\KOSfuncs_inc_status.txt --add stdin, stderr, stdout emulation не хватает stdin, stdout - можно сделать как stderr!, но надо возиться заодно с ferror & feof --getchar, gets if returs errorcode (0, null) - you must exit program, because of closed console window --при нормальном выходе закрывать консоль - - ------- errors ------ --not working: default search path are ./include ./lib from executable (under KOS need to use -Bpath_to_ktcc) ---start.o not found using -B (kos) - put near your.c file --если проект многофайловый - .dbg генерит дублирующиеся метки данных, типа L.78 может указывать на другой сегмент ( --.dbg sometimes generated improperly for source code labels - ------ fixed errors ------ --if static var sized more than 14096+ -> crash compiled .exe (kos) -(^ default stack size set at compile time tccmeos:177 is below 4k) -FIX - use -stack=1280000 option --con_set_title is NULL. fixed 180128 - - - -========= libc =========== --no "finished" in title of console program after exit console - use con_exit() --used system memory allocator (4096 bytes minimum) - - -libc not complete. overall status: -no files: -limits.h -locale.h -setjmp.h -signal.h -wchar.h -wctype.h - - - -functions absent list: - -stdio.h: -remove -rename -tmpfile -tmpnam -freopen -setbuf -setvbuf - - -stdlib.h: -atexit -getenv -system -bsearch -qsort -mblen -mbtowc -wctomb -mbstowcs -wcstombs - -string.h: -strxfrm - -time.h: - needs include kos32sys1.h -asctime -ctime -gmtime -localtime - non standard -strftime - - - - - - - Status or libc tests - ----FAILED--- -strtoul incorrect work with big unsigned > MAX_LONG - - ----NOT TESTED--- -no library fns realized -qsort -time - ----HANG--- -sscanf ->TEST_F(0x1234p56) - no %a formats - - ----STACK IS SMALL--- -use new -stack=1280000 option to pass test -tstring -strtodlong - - ---other-- -fscanf --?scanf ignores width specs, '*' and [chars], cant read %a float --%n counts as parameter - -snprintf --some format misturbances --may incorrect prints unsigned > 2147483647L - -ungetc --ungetc fails if filepos == 0 - by design - -all file ops limited to 2Gb - - diff --git a/data/common/develop/tcc/samples/consoleio.c b/data/common/develop/tcc/samples/consoleio.c deleted file mode 100644 index f2d72c9c8..000000000 --- a/data/common/develop/tcc/samples/consoleio.c +++ /dev/null @@ -1,23 +0,0 @@ -// demonstration conio use, color text -// more info in conio.h - -#include - -int main() -{ - int i; - if (con_init_console_dll()) return 1; // init fail - -// con_write_asciiz("\033[0;31;42m test \n"); // red on green bk - - for(i = 30; i < 48; i++) - { - con_printf("\033[%dmColor 0x%02X: ", i, i); - con_write_asciiz("Text sample."); - - con_printf(" printf %s test %d\n", "small", i); - - } - - con_exit(0); -} \ No newline at end of file diff --git a/data/common/develop/tcc/samples/files.c b/data/common/develop/tcc/samples/files.c deleted file mode 100644 index f6c8f1033..000000000 --- a/data/common/develop/tcc/samples/files.c +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include - -int main(int argc, char **argv) -{ - - int i; - char c; - FILE *f; - FILE *fin; - FILE *fout; - - //write to file - f=fopen("testfile.txt","w"); - - for(i=0;i<50;i++) - { - fputc('1',f); - } - fclose(f); - - //append to file - f=fopen("testfile.txt","a"); - - for(i=0;i<50;i++) - { - fputc('2',f); - } - fclose(f); - - //copy from testfile.txt to copyfile.txt - - fin=fopen("testfile.txt","r"); - fout=fopen("copyfile.txt","w"); - - while((c=fgetc(fin))!=EOF) - { - fputc(c,fout); - } - fclose(fin); - fclose(fout); - -} \ No newline at end of file diff --git a/data/common/develop/tcc/samples/simplewin_old.c b/data/common/develop/tcc/samples/simplewin_old.c deleted file mode 100644 index 63bf26618..000000000 --- a/data/common/develop/tcc/samples/simplewin_old.c +++ /dev/null @@ -1,61 +0,0 @@ - -// simple sample by Ghost - -#include -#include -#include - -#define FONT0 0 -#define FONT1 0x10000000 - -#define BT_NORMAL 0 -#define BT_DEL 0x80000000 -#define BT_HIDE 0x40000000 -#define BT_NOFRAME 0x20000000 - -char header[]={" -= C demo programm. Compiled whith KTCC halyavin and andrew_programmer port =- "}; - -void rotate_str(char *str){ - char tmp; - int i; - tmp = str[0]; - for(i = 1; str[i]; i++)str[i - 1] = str[i]; - str[i - 1] = tmp; -} - -void draw_window(){ - static int offs = 0; - static int fcolor = 0; - static int col = 0; - - _ksys_window_redraw(1); - _ksys_draw_window(100, 100, 300, 120, 0xaabbcc, 2, 0x5080d0, 0, 0x5080d0); - _ksys_write_text(6 - offs, 8, fcolor | FONT0, header, strlen(header)); - _ksys_draw_bar(1, 6, 5, 13, 0x05080d0); - _ksys_draw_bar(274, 6, 26, 13, 0x05080d0); - _ksys_make_button(300 - 19, 5, 12, 12, 1 | BT_NORMAL, 0x6688dd); - _ksys_window_redraw(2); - - offs = (offs + 1) % 6; - if(!offs)rotate_str(header); - - fcolor += (col)?-0x80808:0x80808; - if(fcolor > 0xf80000 || fcolor == 0)col = !col; -} - -int main(int argc, char **argv){ - - while(!0){ - switch(_ksys_wait_for_event(10)){ - case 2:return 0; - - case 3: - if(_ksys_get_button_id() == 1)return 0; - break; - - default: - draw_window(); - break; - } - } -} diff --git a/data/common/develop/tcc/samples/winbasics.c b/data/common/develop/tcc/samples/winbasics.c deleted file mode 100644 index 8b8b82f37..000000000 --- a/data/common/develop/tcc/samples/winbasics.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - newlib-style window example -*/ - - -#include -#include -#include -#include -#include "kos32sys1.h" - -struct kolibri_system_colors sys_color_table; - -char statusbar[255]; -char proc_info[1024]; -char text_line[255]; - -enum BUTTONS -{ - BTN_QUIT = 1, - BTN_POP = 10, - BTN_UNLOCK = 11 -}; - -#define FONT_W 8 -#define FONT_H 14 -#define LINES 10 - -void draw_window() -{ - int win_hight, win_width, i, pos_y = get_skin_height() + 36; // 60 == 24+36 - - // start redraw - begin_draw(); - // define&draw window - sys_create_window(10, 40, 600, 400, "My window", /*sys_color_table.work_area*/0xFFFFFF, 0x13); - - get_proc_info(proc_info); - win_width = *(int*)(proc_info + 0x3E); // client, 2A windows - win_hight = *(int*)(proc_info + 0x42); // client, 2E windows - - define_button((10 << 16) + 80, (30 << 16) + 20, BTN_POP, sys_color_table.work_button); - draw_text_sys("BUTTON1", 15, 34, 0, 0x90000000 | sys_color_table.work_button_text); //0x80000000 asciiz - - define_button((100 << 16) + 100, (30 << 16) + 20, BTN_UNLOCK, sys_color_table.work_button); - draw_text_sys("BUTTTON2", 110, 34, 0, 0x90000000 | sys_color_table.work_button_text); - - // display statusbar - draw_bar(6, win_hight - 17, win_width - 11, 12, 0x80000000 | sys_color_table.work_area); //0x80000000 gradient - draw_text_sys(statusbar, 10, win_hight - 15, 0, 0x80000000 | sys_color_table.work_text); - - // display strings - for (i = LINES; i > 0; i--) - { - tiny_snprintf (text_line, sizeof text_line, "Line[%d]<>", i); - - text_line[(win_width - 10 - 5) / FONT_W + 1] = '\0'; // clip text size, seems to big lines crashing OS, and form len by window size -// draw_number_sys(nbytes, 5, pos_y, 6, 0x10000000); 8x12 font - draw_text_sys(text_line, 5, pos_y, 0, 0x90000000 /*| sys_color_table.work_text*/); - pos_y += FONT_H; - - if(pos_y + 29 > win_hight) break; // 12 font + 12 statusbar + 5 border - } - - // end redraw - end_draw(); -} - -int main() -{ - int gui_event; - uint32_t pressed_button = 0, mouse_button; - pos_t mouse_pos; - strcpy(statusbar, "Program running...Double click on TEXT for details"); - - get_system_colors(&sys_color_table); - set_event_mask(0xC0000027); // mouse events only when focused window and mouse inside - - do /* Start of main activity loop */ - { -// gui_event = wait_for_event(10); // 100 = 1 sec, case you have background work - gui_event = get_os_event(); - switch(gui_event) - { - case KOLIBRI_EVENT_NONE: - // background work - break; - case KOLIBRI_EVENT_REDRAW: - draw_window(); - break; - case KOLIBRI_EVENT_KEY: - // scroll - break; - case KOLIBRI_EVENT_BUTTON: - pressed_button = get_os_button(); - switch (pressed_button) - { - case BTN_POP: - strcpy(statusbar, "POP pressed...."); - draw_window(); - break; - case BTN_UNLOCK: - strcpy(statusbar, "UNLOCK pressed...."); - draw_window(); - break; - case BTN_QUIT: - return 0; - break; - } - break; - case KOLIBRI_EVENT_MOUSE: - mouse_pos = get_mouse_pos(POS_WINDOW); // window relative - mouse_button = get_mouse_eventstate(); - debug_board_printf("mouse ev (%d,%d)%x\n", mouse_pos.x, mouse_pos.y, mouse_button); - if (mouse_button & (1<<24)) // double click - { - int n = (mouse_pos.y - 60) / FONT_H; - if (n < 0 || n >= LINES) break; - debug_board_printf("click on str(%d), clip slot(%d)\n", n, LINES - n - 1); - tiny_sprintf(statusbar, "click on str(%d), clip slot(%d)\n", n, LINES - n - 1); - draw_window(); - } - // ignore - break; - } - } while(1) ; /* End of main activity loop */ - - return 0; -} - - - -void __attribute__ ((noinline)) debug_board_write_str(const char* str){ - while(*str) - debug_board_write_byte(*str++); -} - -void __attribute__ ((noinline)) debug_board_printf(const char *format,...) -{ - va_list ap; - char log_board[300]; - - va_start (ap, format); - tiny_vsnprintf(log_board, sizeof log_board, format, ap); - va_end(ap); - debug_board_write_str(log_board); - -} diff --git a/data/common/develop/tcc/_howto_debug_tcc.txt b/programs/develop/ktcc/trunk/_howto_debug_tcc.txt similarity index 100% rename from data/common/develop/tcc/_howto_debug_tcc.txt rename to programs/develop/ktcc/trunk/_howto_debug_tcc.txt diff --git a/data/common/develop/tcc/kos32-tcc.exe b/programs/develop/ktcc/trunk/bin/kos32-tcc.exe similarity index 100% rename from data/common/develop/tcc/kos32-tcc.exe rename to programs/develop/ktcc/trunk/bin/kos32-tcc.exe diff --git a/data/common/develop/tcc/tcc b/programs/develop/ktcc/trunk/bin/tcc similarity index 100% rename from data/common/develop/tcc/tcc rename to programs/develop/ktcc/trunk/bin/tcc diff --git a/programs/develop/ktcc/trunk/samples/files/FILES.C b/programs/develop/ktcc/trunk/samples/files/FILES.C deleted file mode 100644 index f6c8f1033..000000000 --- a/programs/develop/ktcc/trunk/samples/files/FILES.C +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include - -int main(int argc, char **argv) -{ - - int i; - char c; - FILE *f; - FILE *fin; - FILE *fout; - - //write to file - f=fopen("testfile.txt","w"); - - for(i=0;i<50;i++) - { - fputc('1',f); - } - fclose(f); - - //append to file - f=fopen("testfile.txt","a"); - - for(i=0;i<50;i++) - { - fputc('2',f); - } - fclose(f); - - //copy from testfile.txt to copyfile.txt - - fin=fopen("testfile.txt","r"); - fout=fopen("copyfile.txt","w"); - - while((c=fgetc(fin))!=EOF) - { - fputc(c,fout); - } - fclose(fin); - fclose(fout); - -} \ No newline at end of file