forked from KolibriOS/kolibrios
ktcc: Delete old libc(libck) and old library loaders
git-svn-id: svn://kolibrios.org@9866 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
c36e767724
commit
92e48c928c
@ -1,10 +0,0 @@
|
|||||||
all:
|
|
||||||
fasm boxlib.asm
|
|
||||||
ar -crs libbox.a boxlib.o
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f *.a
|
|
||||||
rm -f *.o
|
|
||||||
|
|
||||||
install:
|
|
||||||
mv libbox.a ../../bin/lib
|
|
@ -1,230 +0,0 @@
|
|||||||
; writed by maxcodehack
|
|
||||||
; adaptation of clayer for ktcc
|
|
||||||
format elf
|
|
||||||
use32 ; Tell compiler to use 32 bit instructions
|
|
||||||
; ELF section
|
|
||||||
section '.text' executable
|
|
||||||
|
|
||||||
|
|
||||||
include '../../../../../proc32.inc'
|
|
||||||
include '../../../../../macros.inc'
|
|
||||||
purge section,mov,add,sub
|
|
||||||
|
|
||||||
include '../../../../../dll.inc'
|
|
||||||
|
|
||||||
|
|
||||||
public init_boxlib as 'kolibri_boxlib_init'
|
|
||||||
|
|
||||||
proc init_boxlib
|
|
||||||
local retval dd ?
|
|
||||||
mov [retval], eax
|
|
||||||
pusha
|
|
||||||
mcall 68, 11
|
|
||||||
test eax, eax
|
|
||||||
jnz @f
|
|
||||||
mov [retval], -1
|
|
||||||
jmp exit_init_boxlib
|
|
||||||
@@:
|
|
||||||
stdcall dll.Load, @IMPORT
|
|
||||||
test eax, eax
|
|
||||||
jz exit_init_boxlib
|
|
||||||
mov [retval], -1
|
|
||||||
exit_init_boxlib:
|
|
||||||
popa
|
|
||||||
mov eax, [retval]
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
;; Wrapper to handle edit_box_key function for editboxes.
|
|
||||||
;; Call this baby from C (refer kolibri_editbox.h for details)
|
|
||||||
public editbox_key_thunk as 'edit_box_key' ; renamed due to ambiguity
|
|
||||||
;; replaced by siemargl as inline ASM in C wrapper
|
|
||||||
editbox_key_thunk:
|
|
||||||
mov eax, [esp+8]
|
|
||||||
mov [oldebp], ebp ;Save ebp because GCC is crazy for it otherwise.
|
|
||||||
pop ebp ;Save return address in ebp. Stack top is param now.
|
|
||||||
;mov eax, dword [press_key]
|
|
||||||
call [edit_box_key] ; The pointer we passed should be on the stack already.
|
|
||||||
push ebp ;push the return address back to stack
|
|
||||||
mov ebp, [oldebp]
|
|
||||||
ret
|
|
||||||
oldebp dd ?
|
|
||||||
|
|
||||||
section '.data' writeable
|
|
||||||
|
|
||||||
@IMPORT:
|
|
||||||
library lib_boxlib, 'box_lib.obj'
|
|
||||||
|
|
||||||
import lib_boxlib, \
|
|
||||||
edit_box_draw, 'edit_box_draw' , \
|
|
||||||
edit_box_key, 'edit_box_key' , \
|
|
||||||
edit_box_mouse, 'edit_box_mouse', \
|
|
||||||
edit_box_set_text, 'edit_box_set_text' , \
|
|
||||||
init_checkbox2, 'init_checkbox2' , \
|
|
||||||
check_box_draw2, 'check_box_draw2' , \
|
|
||||||
check_box_mouse2, 'check_box_mouse2' , \
|
|
||||||
option_box_draw, 'option_box_draw' , \
|
|
||||||
option_box_mouse, 'option_box_mouse' , \
|
|
||||||
scrollbar_v_draw, 'scrollbar_v_draw' , \
|
|
||||||
scrollbar_v_mouse, 'scrollbar_v_mouse' , \
|
|
||||||
scrollbar_h_draw, 'scrollbar_h_draw' , \
|
|
||||||
scrollbar_h_mouse, 'scrollbar_h_mouse' , \
|
|
||||||
dynamic_button_draw, 'dbutton_draw' , \
|
|
||||||
dynamic_button_mouse, 'dbutton_mouse' , \
|
|
||||||
menu_bar_draw, 'menu_bar_draw' , \
|
|
||||||
menu_bar_mouse, 'menu_bar_mouse' , \
|
|
||||||
menu_bar_activate, 'menu_bar_activate' , \
|
|
||||||
fb_draw_panel, 'FileBrowser_draw' , \
|
|
||||||
fb_mouse, 'FileBrowser_mouse' , \
|
|
||||||
fb_key, 'FileBrowser_key' , \
|
|
||||||
tl_data_init, 'tl_data_init' , \
|
|
||||||
tl_data_clear, 'tl_data_clear' , \
|
|
||||||
tl_info_clear, 'tl_info_clear' , \
|
|
||||||
tl_key, 'tl_key' , \
|
|
||||||
tl_mouse, 'tl_mouse' , \
|
|
||||||
tl_draw, 'tl_draw' , \
|
|
||||||
tl_info_undo, 'tl_info_undo' , \
|
|
||||||
tl_info_redo, 'tl_info_redo' , \
|
|
||||||
tl_node_add, 'tl_node_add' , \
|
|
||||||
tl_node_set_data, 'tl_node_set_data' , \
|
|
||||||
tl_node_get_data, 'tl_node_get_data' , \
|
|
||||||
tl_node_delete, 'tl_node_delete' , \
|
|
||||||
tl_cur_beg, 'tl_cur_beg' , \
|
|
||||||
tl_cur_next, 'tl_cur_next' , \
|
|
||||||
tl_cur_perv, 'tl_cur_perv' , \
|
|
||||||
tl_node_close_open, 'tl_node_close_open' , \
|
|
||||||
tl_node_lev_inc, 'tl_node_lev_inc' , \
|
|
||||||
tl_node_lev_dec, 'tl_node_lev_dec' , \
|
|
||||||
tl_node_move_up, 'tl_node_move_up' , \
|
|
||||||
tl_node_move_down, 'tl_node_move_down' , \
|
|
||||||
tl_node_poi_get_info, 'tl_node_poi_get_info' , \
|
|
||||||
tl_node_poi_get_next_info, 'tl_node_poi_get_next_info' , \
|
|
||||||
tl_node_poi_get_data, 'tl_node_poi_get_data' , \
|
|
||||||
tl_save_mem, 'tl_save_mem' , \
|
|
||||||
tl_load_mem, 'tl_load_mem' , \
|
|
||||||
tl_get_mem_size, 'tl_get_mem_size' , \
|
|
||||||
path_show_prepare, 'PathShow_prepare' , \
|
|
||||||
path_show_draw, 'PathShow_draw' , \
|
|
||||||
ted_but_sumb_upper, 'ted_but_sumb_upper' , \
|
|
||||||
ted_but_sumb_lover, 'ted_but_sumb_lover' , \
|
|
||||||
ted_but_convert_by_table, 'ted_but_convert_by_table' , \
|
|
||||||
ted_can_save, 'ted_can_save' , \
|
|
||||||
ted_clear, 'ted_clear' , \
|
|
||||||
ted_delete, 'ted_delete' , \
|
|
||||||
ted_draw, 'ted_draw' , \
|
|
||||||
ted_init, 'ted_init' , \
|
|
||||||
ted_init_scroll_bars, 'ted_init_scroll_bars' , \
|
|
||||||
ted_init_syntax_file, 'ted_init_syntax_file' , \
|
|
||||||
ted_is_select, 'ted_is_select' , \
|
|
||||||
ted_key, 'ted_key' , \
|
|
||||||
ted_mouse, 'ted_mouse' , \
|
|
||||||
ted_open_file, 'ted_open_file' , \
|
|
||||||
ted_save_file, 'ted_save_file' , \
|
|
||||||
ted_text_add, 'ted_text_add' , \
|
|
||||||
ted_but_select_word, 'ted_but_select_word' , \
|
|
||||||
ted_but_cut, 'ted_but_cut' , \
|
|
||||||
ted_but_copy, 'ted_but_copy' , \
|
|
||||||
ted_but_paste, 'ted_but_paste' , \
|
|
||||||
ted_but_undo, 'ted_but_undo' , \
|
|
||||||
ted_but_redo, 'ted_but_redo' , \
|
|
||||||
ted_but_reverse, 'ted_but_reverse' , \
|
|
||||||
ted_but_find, 'ted_but_find' , \
|
|
||||||
ted_but_replace, 'ted_but_replace' , \
|
|
||||||
ted_text_colored, 'ted_text_colored' , \
|
|
||||||
ted_go_to_position, 'ted_go_to_position' , \
|
|
||||||
frame_draw, 'frame_draw' , \
|
|
||||||
progressbar_draw,'progressbar_draw' , \
|
|
||||||
progressbar_progress, 'progressbar_progress'
|
|
||||||
|
|
||||||
|
|
||||||
public edit_box_draw as 'edit_box_draw'
|
|
||||||
;public edit_box_key as 'edit_box_key'
|
|
||||||
|
|
||||||
public edit_box_mouse as 'edit_box_mouse'
|
|
||||||
public edit_box_set_text as 'edit_box_set_text'
|
|
||||||
|
|
||||||
public check_box_draw2 as 'check_box_draw2'
|
|
||||||
public check_box_mouse2 as 'check_box_mouse2'
|
|
||||||
public init_checkbox2 as 'init_checkbox2'
|
|
||||||
|
|
||||||
public progressbar_draw as 'progressbar_draw'
|
|
||||||
public progressbar_progress as 'progressbar_progress'
|
|
||||||
|
|
||||||
public frame_draw as 'frame_draw'
|
|
||||||
|
|
||||||
public scrollbar_v_draw as 'scrollbar_v_draw'
|
|
||||||
public scrollbar_v_mouse as 'scrollbar_v_mouse'
|
|
||||||
public scrollbar_h_draw as 'scrollbar_h_draw'
|
|
||||||
public scrollbar_h_mouse as 'scrollbar_h_mouse'
|
|
||||||
|
|
||||||
public option_box_draw as 'option_box_draw'
|
|
||||||
public option_box_mouse as 'option_box_mouse'
|
|
||||||
|
|
||||||
public menu_bar_draw as 'menu_bar_draw'
|
|
||||||
public menu_bar_mouse as 'menu_bar_mouse'
|
|
||||||
public menu_bar_activate as 'menu_bar_activate'
|
|
||||||
|
|
||||||
public dynamic_button_draw as 'dynamic_button_draw'
|
|
||||||
public dynamic_button_mouse as 'dynamic_button_mouse'
|
|
||||||
|
|
||||||
public path_show_prepare as 'path_show_prepare'
|
|
||||||
public path_show_draw as 'path_show_draw'
|
|
||||||
|
|
||||||
public fb_draw_panel as 'filebrowse_draw'
|
|
||||||
public fb_mouse as 'filebrowse_mouse'
|
|
||||||
public fb_key as 'filebrowse_key'
|
|
||||||
|
|
||||||
public ted_but_sumb_upper as 'ted_but_sumb_upper'
|
|
||||||
public ted_but_sumb_lover as 'ted_but_sumb_lover'
|
|
||||||
public ted_but_convert_by_table as 'ted_but_convert_by_table'
|
|
||||||
public ted_can_save as 'ted_can_save'
|
|
||||||
public ted_clear as 'ted_clear'
|
|
||||||
public ted_delete as 'ted_delete'
|
|
||||||
public ted_draw as 'ted_draw'
|
|
||||||
public ted_init as 'ted_init'
|
|
||||||
public ted_init_scroll_bars as 'ted_init_scroll_bars'
|
|
||||||
public ted_init_syntax_file as 'ted_init_syntax_file'
|
|
||||||
public ted_is_select as 'ted_is_select'
|
|
||||||
public ted_key as 'ted_key_asm'
|
|
||||||
public ted_mouse as 'ted_mouse'
|
|
||||||
public ted_open_file as 'ted_open_file_asm'
|
|
||||||
public ted_save_file as 'ted_save_file_asm'
|
|
||||||
public ted_text_add as '_ted_text_add'
|
|
||||||
public ted_but_select_word as 'ted_but_select_word'
|
|
||||||
public ted_but_cut as 'ted_but_cut'
|
|
||||||
public ted_but_copy as 'ted_but_copy'
|
|
||||||
public ted_but_paste as 'ted_but_paste'
|
|
||||||
public ted_but_undo as 'ted_but_undo'
|
|
||||||
public ted_but_redo as 'ted_but_redo'
|
|
||||||
public ted_but_reverse as 'ted_but_reverse'
|
|
||||||
public ted_but_find as 'ted_but_find'
|
|
||||||
public ted_but_replace as 'ted_but_replace'
|
|
||||||
public ted_text_colored as 'ted_text_colored_asm'
|
|
||||||
public ted_go_to_position as 'ted_go_to_position'
|
|
||||||
|
|
||||||
public tl_data_init as 'tl_data_init'
|
|
||||||
public tl_data_clear as 'tl_data_clear'
|
|
||||||
public tl_info_clear as 'tl_info_clear'
|
|
||||||
public tl_key as 'tl_key_asm'
|
|
||||||
public tl_mouse as 'tl_mouse'
|
|
||||||
public tl_draw as 'tl_draw'
|
|
||||||
public tl_info_undo as 'tl_info_undo'
|
|
||||||
public tl_info_redo as 'tl_info_redo'
|
|
||||||
public tl_node_add as 'tl_node_add'
|
|
||||||
public tl_node_set_data as 'tl_node_set_data'
|
|
||||||
public tl_node_get_data as 'tl_node_get_data'
|
|
||||||
public tl_node_delete as 'tl_node_delete'
|
|
||||||
public tl_cur_beg as 'tl_cur_beg'
|
|
||||||
public tl_cur_next as 'tl_cur_next'
|
|
||||||
public tl_cur_perv as 'tl_cur_perv'
|
|
||||||
public tl_node_close_open as 'tl_node_close_open'
|
|
||||||
public tl_node_lev_inc as 'tl_node_lev_inc'
|
|
||||||
public tl_node_lev_dec as 'tl_node_lev_dec'
|
|
||||||
public tl_node_move_up as 'tl_node_move_up'
|
|
||||||
public tl_node_move_down as 'tl_node_move_down'
|
|
||||||
public tl_node_poi_get_info as 'tl_node_poi_get_info'
|
|
||||||
public tl_node_poi_get_next_info as 'tl_node_poi_get_next_info'
|
|
||||||
public tl_node_poi_get_data as 'tl_node_poi_get_data'
|
|
||||||
public tl_save_mem as 'tl_save_mem_asm'
|
|
||||||
public tl_load_mem as 'tl_load_mem_asm'
|
|
||||||
public tl_get_mem_size as 'tl_get_mem_size_asm'
|
|
@ -1,10 +0,0 @@
|
|||||||
all:
|
|
||||||
fasm buf2d.asm buf2d.o
|
|
||||||
ar -csr libbuf2d.a buf2d.o
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f *.a
|
|
||||||
rm -f *.o
|
|
||||||
|
|
||||||
install:
|
|
||||||
mv *.a ../../bin/lib
|
|
@ -1,90 +0,0 @@
|
|||||||
format elf
|
|
||||||
use32 ; Tell compiler to use 32 bit instructions
|
|
||||||
|
|
||||||
section '.text' executable
|
|
||||||
|
|
||||||
include '../../../../../proc32.inc'
|
|
||||||
include '../../../../../macros.inc'
|
|
||||||
purge section,mov,add,sub
|
|
||||||
|
|
||||||
include '../../../../../dll.inc'
|
|
||||||
|
|
||||||
;public lib_init as 'kolibri_buf2d_init'
|
|
||||||
;;; Returns 0 on success. -1 on failure.
|
|
||||||
public init_buf2d as 'kolibri_buf2d_init'
|
|
||||||
|
|
||||||
proc init_buf2d
|
|
||||||
pusha
|
|
||||||
mcall 68,11
|
|
||||||
stdcall dll.Load, @IMPORT
|
|
||||||
popa
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
section '.data' writeable
|
|
||||||
|
|
||||||
@IMPORT:
|
|
||||||
library lib_buf2d, 'buf2d.obj'
|
|
||||||
|
|
||||||
import lib_buf2d, \
|
|
||||||
libbuf2d_init, 'lib_init' , \
|
|
||||||
buf2d_create, 'buf2d_create' , \
|
|
||||||
buf2d_clear, 'buf2d_clear' , \
|
|
||||||
buf2d_draw, 'buf2d_draw' , \
|
|
||||||
buf2d_delete, 'buf2d_delete', \
|
|
||||||
buf2d_rotate, 'buf2d_rotate', \
|
|
||||||
buf2d_resize, 'buf2d_resize', \
|
|
||||||
buf2d_line, 'buf2d_line', \
|
|
||||||
buf2d_line_sm, 'buf2d_line_sm', \
|
|
||||||
buf2d_rect_by_size, 'buf2d_rect_by_size', \
|
|
||||||
buf2d_filled_rect_by_size, 'buf2d_filled_rect_by_size', \
|
|
||||||
buf2d_circle, 'buf2d_circle', \
|
|
||||||
buf2d_img_hdiv2, 'buf2d_img_hdiv2', \
|
|
||||||
buf2d_img_wdiv2, 'buf2d_img_wdiv2', \
|
|
||||||
buf2d_conv_24_to_8, 'buf2d_conv_24_to_8', \
|
|
||||||
buf2d_conv_24_to_32, 'buf2d_conv_24_to_32', \
|
|
||||||
buf2d_bit_blt, 'buf2d_bit_blt', \
|
|
||||||
buf2d_bit_blt_transp, 'buf2d_bit_blt_transp', \
|
|
||||||
buf2d_bit_blt_alpha, 'buf2d_bit_blt_alpha', \
|
|
||||||
buf2d_curve_bezier, 'buf2d_curve_bezier', \
|
|
||||||
buf2d_convert_text_matrix, 'buf2d_convert_text_matrix', \
|
|
||||||
buf2d_draw_text, 'buf2d_draw_text', \
|
|
||||||
buf2d_crop_color, 'buf2d_crop_color', \
|
|
||||||
buf2d_offset_h, 'buf2d_offset_h', \
|
|
||||||
buf2d_flood_fill, 'buf2d_flood_fill', \
|
|
||||||
buf2d_set_pixel, 'buf2d_set_pixel', \
|
|
||||||
buf2d_get_pixel, 'buf2d_get_pixel', \
|
|
||||||
buf2d_flip_h, 'buf2d_flip_h', \
|
|
||||||
buf2d_flip_v, 'buf2d_flip_v', \
|
|
||||||
buf2d_filter_dither, 'buf2d_filter_dither'
|
|
||||||
|
|
||||||
public libbuf2d_init as 'libimg_init'
|
|
||||||
public buf2d_create as 'buf2d_create_asm'
|
|
||||||
public buf2d_clear as 'buf2d_clear'
|
|
||||||
public buf2d_draw as 'buf2d_draw'
|
|
||||||
public buf2d_delete as 'buf2d_delete'
|
|
||||||
public buf2d_rotate as 'buf2d_rotate'
|
|
||||||
public buf2d_resize as 'buf2d_resize'
|
|
||||||
public buf2d_line as 'buf2d_line'
|
|
||||||
public buf2d_line_sm as 'buf2d_line_sm'
|
|
||||||
public buf2d_rect_by_size as 'buf2d_rect_by_size'
|
|
||||||
public buf2d_filled_rect_by_size as 'buf2d_filled_rect_by_size'
|
|
||||||
public buf2d_circle as 'buf2d_circle'
|
|
||||||
public buf2d_img_hdiv2 as 'buf2d_img_hdiv2'
|
|
||||||
public buf2d_img_wdiv2 as 'buf2d_img_wdiv2'
|
|
||||||
public buf2d_conv_24_to_8 as 'buf2d_conv_24_to_8'
|
|
||||||
public buf2d_conv_24_to_32 as 'buf2d_conv_24_to_32'
|
|
||||||
public buf2d_bit_blt as 'buf2d_bit_blt'
|
|
||||||
public buf2d_bit_blt_transp as 'buf2d_bit_blt_transp'
|
|
||||||
public buf2d_bit_blt_alpha as 'buf2d_bit_blt_alpha'
|
|
||||||
public buf2d_curve_bezier as 'buf2d_curve_bezier_asm'
|
|
||||||
public buf2d_convert_text_matrix as 'buf2d_convert_text_matrix'
|
|
||||||
public buf2d_draw_text as 'buf2d_draw_text'
|
|
||||||
public buf2d_crop_color as 'buf2d_crop_color'
|
|
||||||
public buf2d_offset_h as 'buf2d_offset_h'
|
|
||||||
public buf2d_flood_fill as 'buf2d_flood_fill'
|
|
||||||
public buf2d_set_pixel as 'buf2d_set_pixel'
|
|
||||||
public buf2d_get_pixel as 'buf2d_get_pixel'
|
|
||||||
public buf2d_flip_h as 'buf2d_flip_h'
|
|
||||||
public buf2d_flip_v as 'buf2d_flip_v'
|
|
||||||
public buf2d_filter_dither as 'buf2d_filter_dither'
|
|
@ -1,11 +0,0 @@
|
|||||||
FASM = fasm
|
|
||||||
|
|
||||||
OBJS = get.o head.o __lib__.o post.o receive.o send.o free.o
|
|
||||||
|
|
||||||
%.o : %.asm
|
|
||||||
$(FASM) $<
|
|
||||||
|
|
||||||
all: $(OBJS)
|
|
||||||
ar -rsc libhttp.a *.o
|
|
||||||
mv -f libhttp.a ../../bin/lib
|
|
||||||
rm -f *.o
|
|
@ -1,9 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include '__lib__.inc'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
public lib_name
|
|
||||||
|
|
||||||
lib_name db 0x55, 0xAA, lib_name_str, 0
|
|
@ -1,2 +0,0 @@
|
|||||||
lib_name equ @http.obj
|
|
||||||
lib_name_str equ '/sys/lib/http.obj'
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ http_free
|
|
||||||
fun_str equ 'free'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ http_get
|
|
||||||
fun_str equ 'get'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ http_head
|
|
||||||
fun_str equ 'head'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ http_post
|
|
||||||
fun_str equ 'post'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ http_receive
|
|
||||||
fun_str equ 'receive'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ http_send
|
|
||||||
fun_str equ 'send'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ InputBox
|
|
||||||
fun_str equ 'InputBox'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,9 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include '__lib__.inc'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
public lib_name
|
|
||||||
|
|
||||||
lib_name db 0x55, 0xAA, lib_name_str, 0
|
|
@ -1,2 +0,0 @@
|
|||||||
lib_name equ @inputbox.obj
|
|
||||||
lib_name_str equ '/sys/lib/inputbox.obj'
|
|
@ -1,5 +0,0 @@
|
|||||||
fasm __lib__.asm
|
|
||||||
fasm InputBox.asm
|
|
||||||
kos32-ar -ru libinputbox.a *.o
|
|
||||||
del *.o
|
|
||||||
pause
|
|
@ -1,9 +0,0 @@
|
|||||||
all:
|
|
||||||
fasm loadlibimg.asm
|
|
||||||
ar -csr libimg.a loadlibimg.o
|
|
||||||
|
|
||||||
install:
|
|
||||||
mv libimg.a ../../bin/lib/libimg.a
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f *.o *.a
|
|
@ -1,88 +0,0 @@
|
|||||||
format elf
|
|
||||||
use32 ; Tell compiler to use 32 bit instructions
|
|
||||||
|
|
||||||
; ELF section
|
|
||||||
section '.text' executable
|
|
||||||
|
|
||||||
|
|
||||||
include '../../../../../proc32.inc'
|
|
||||||
include '../../../../../macros.inc'
|
|
||||||
purge section,mov,add,sub
|
|
||||||
|
|
||||||
include '../../../../../dll.inc'
|
|
||||||
|
|
||||||
|
|
||||||
public init_libimg as 'kolibri_libimg_init'
|
|
||||||
;;; Returns 0 on success. -1 on failure.
|
|
||||||
|
|
||||||
proc init_libimg
|
|
||||||
local retval dd ?
|
|
||||||
mov [retval], eax
|
|
||||||
pusha
|
|
||||||
mcall 68, 11
|
|
||||||
test eax, eax
|
|
||||||
jnz @f
|
|
||||||
mov [retval], -1
|
|
||||||
jmp exit_init_libimg
|
|
||||||
@@:
|
|
||||||
stdcall dll.Load, @IMPORT
|
|
||||||
test eax, eax
|
|
||||||
jz exit_init_libimg
|
|
||||||
mov [retval], -1
|
|
||||||
exit_init_libimg:
|
|
||||||
popa
|
|
||||||
mov eax, [retval]
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
; ELF section
|
|
||||||
section '.data' writeable
|
|
||||||
|
|
||||||
@IMPORT:
|
|
||||||
library lib_libimg, 'libimg.obj'
|
|
||||||
|
|
||||||
import lib_libimg, \
|
|
||||||
libimg_init, 'lib_init' , \
|
|
||||||
img_is_img, 'img_is_img' , \
|
|
||||||
img_info, 'img_info' , \
|
|
||||||
img_from_file, 'img_from_file', \
|
|
||||||
img_to_file, 'img_to_file', \
|
|
||||||
img_from_rgb, 'img_from_rgb', \
|
|
||||||
img_to_rgb, 'img_to_rgb', \
|
|
||||||
img_to_rgb2, 'img_to_rgb2', \
|
|
||||||
img_decode, 'img_decode', \
|
|
||||||
img_encode, 'img_encode', \
|
|
||||||
img_create, 'img_create', \
|
|
||||||
img_destroy, 'img_destroy', \
|
|
||||||
img_destroy_layer, 'img_destroy_layer', \
|
|
||||||
img_count, 'img_count', \
|
|
||||||
img_lock_bits, 'img_lock_bits', \
|
|
||||||
img_unlock_bits, 'img_unlock_bits', \
|
|
||||||
img_flip, 'img_flip', \
|
|
||||||
img_flip_layer, 'img_flip_layer', \
|
|
||||||
img_rotate, 'img_rotate', \
|
|
||||||
img_rotate_layer, 'img_rotate_layer', \
|
|
||||||
img_draw, 'img_draw', \
|
|
||||||
img_blend, 'img_blend', \
|
|
||||||
img_convert, 'img_convert', \
|
|
||||||
img_resize_data, 'img_resize_data', \
|
|
||||||
img_scale, 'img_scale'
|
|
||||||
|
|
||||||
public libimg_init as 'libimg_init'
|
|
||||||
public img_to_rgb as 'img_to_rgb'
|
|
||||||
public img_to_rgb2 as 'img_to_rgb2'
|
|
||||||
public img_decode as 'img_decode'
|
|
||||||
public img_encode as 'img_encode'
|
|
||||||
public img_create as 'img_create'
|
|
||||||
public img_destroy as 'img_destroy'
|
|
||||||
public img_destroy_layer as 'img_destroy_layer'
|
|
||||||
public img_count as 'img_count'
|
|
||||||
public img_flip as 'img_flip'
|
|
||||||
public img_flip_layer as 'img_flip_layer'
|
|
||||||
public img_rotate as 'img_rotate'
|
|
||||||
public img_rotate_layer as 'img_rotate_layer'
|
|
||||||
public img_draw as 'img_draw'
|
|
||||||
public img_blend as 'img_blend'
|
|
||||||
public img_convert as 'img_convert'
|
|
||||||
public img_resize_data as 'img_resize_data'
|
|
||||||
public img_scale as 'img_scale'
|
|
@ -1,7 +0,0 @@
|
|||||||
all:
|
|
||||||
fasm network.asm
|
|
||||||
ar -csr libnetwork.a network.o
|
|
||||||
clean:
|
|
||||||
rm -f *.o *.a
|
|
||||||
install:
|
|
||||||
cp libnetwork.a ../../bin/lib
|
|
@ -1,50 +0,0 @@
|
|||||||
format elf
|
|
||||||
use32 ; Tell compiler to use 32 bit instructions
|
|
||||||
; ELF section
|
|
||||||
section '.text' executable
|
|
||||||
|
|
||||||
|
|
||||||
include '../../../../../proc32.inc'
|
|
||||||
include '../../../../../macros.inc'
|
|
||||||
purge section,mov,add,sub
|
|
||||||
|
|
||||||
include '../../../../../dll.inc'
|
|
||||||
|
|
||||||
|
|
||||||
public lib_init as 'networklib_init'
|
|
||||||
|
|
||||||
|
|
||||||
proc lib_init
|
|
||||||
local retval dd ?
|
|
||||||
mov [retval], eax
|
|
||||||
pusha
|
|
||||||
mcall 68, 11
|
|
||||||
test eax, eax
|
|
||||||
jnz @f
|
|
||||||
mov [retval], -1
|
|
||||||
jmp exit_init_networklib
|
|
||||||
@@:
|
|
||||||
stdcall dll.Load, @IMPORT
|
|
||||||
test eax, eax
|
|
||||||
jz exit_init_networklib
|
|
||||||
mov [retval], -1
|
|
||||||
exit_init_networklib:
|
|
||||||
popa
|
|
||||||
mov eax, [retval]
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
section '.data' writeable
|
|
||||||
@IMPORT:
|
|
||||||
library networklib, 'network.obj'
|
|
||||||
|
|
||||||
import networklib, \
|
|
||||||
inet_addr, 'inet_addr', \
|
|
||||||
inet_ntoa, 'inet_ntoa', \
|
|
||||||
getaddrinfo, 'getaddrinfo', \
|
|
||||||
freeaddrinfo, 'freeaddrinfo'
|
|
||||||
|
|
||||||
public inet_addr as 'inet_addr'
|
|
||||||
public inet_ntoa as 'inet_ntoa'
|
|
||||||
public getaddrinfo as 'getaddrinfo'
|
|
||||||
public freeaddrinfo as 'freeaddrinfo'
|
|
@ -1,9 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include '__lib__.inc'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
public lib_name
|
|
||||||
|
|
||||||
lib_name db 0x55, 0xAA, lib_name_str, 0
|
|
@ -1,2 +0,0 @@
|
|||||||
lib_name equ @RASTERWORKS.OBJ
|
|
||||||
lib_name_str equ '/sys/lib/RASTERWORKS.OBJ'
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ charsFit
|
|
||||||
fun_str equ 'charsFit'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ countUTF8Z
|
|
||||||
fun_str equ 'cntUTF-8'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ drawText
|
|
||||||
fun_str equ 'drawText'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,7 +0,0 @@
|
|||||||
fasm __lib__.asm
|
|
||||||
fasm mb_create.asm
|
|
||||||
fasm mb_reinit.asm
|
|
||||||
fasm mb_setfunctions.asm
|
|
||||||
kos32-ar -ru libmsgbox.a *.o
|
|
||||||
del *.o
|
|
||||||
pause
|
|
@ -1,9 +0,0 @@
|
|||||||
all:
|
|
||||||
fasm __lib__.asm
|
|
||||||
fasm charsFit.asm
|
|
||||||
fasm cntUTF-8.asm
|
|
||||||
fasm drawText.asm
|
|
||||||
fasm strWidth.asm
|
|
||||||
ar -crs librasterworks.a *.o
|
|
||||||
clean:
|
|
||||||
rm -f *.o
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ strWidth
|
|
||||||
fun_str equ 'strWidth'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,9 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include '__lib__.inc'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
public lib_name
|
|
||||||
|
|
||||||
lib_name db 0x55, 0xAA, lib_name_str, 0
|
|
@ -1,2 +0,0 @@
|
|||||||
lib_name equ @msgbox.obj
|
|
||||||
lib_name_str equ '/sys/lib/msgbox.obj'
|
|
@ -1,7 +0,0 @@
|
|||||||
fasm __lib__.asm
|
|
||||||
fasm mb_create.asm
|
|
||||||
fasm mb_reinit.asm
|
|
||||||
fasm mb_setfunctions.asm
|
|
||||||
kos32-ar -ru libmsgbox.a *.o
|
|
||||||
del *.o
|
|
||||||
pause
|
|
@ -1,8 +0,0 @@
|
|||||||
all:
|
|
||||||
fasm __lib__.asm
|
|
||||||
fasm mb_create.asm
|
|
||||||
fasm mb_reinit.asm
|
|
||||||
fasm mb_setfunctions.asm
|
|
||||||
kos32-ar -ru libmsgbox.a *.o
|
|
||||||
clean:
|
|
||||||
rm -f *.o
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ msgbox_create
|
|
||||||
fun_str equ 'mb_create'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ msgbox_reinit
|
|
||||||
fun_str equ 'mb_reinit'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ msgbox_setfunctions
|
|
||||||
fun_str equ 'mb_setfunctions'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,7 +0,0 @@
|
|||||||
all:
|
|
||||||
fasm loadproclib.asm
|
|
||||||
ar -csr libdialog.a loadproclib.o
|
|
||||||
install:
|
|
||||||
mv libdialog.a ../../bin/lib
|
|
||||||
clean:
|
|
||||||
rm -f *.o *.a
|
|
@ -1,39 +0,0 @@
|
|||||||
|
|
||||||
format elf
|
|
||||||
use32 ; Tell compiler to use 32 bit instructions
|
|
||||||
|
|
||||||
section '.text' executable ; Keep this line before includes or GCC messes up call addresses
|
|
||||||
|
|
||||||
include '../../../../../proc32.inc'
|
|
||||||
include '../../../../../macros.inc'
|
|
||||||
purge section,mov,add,sub
|
|
||||||
|
|
||||||
include '../../../../../dll.inc'
|
|
||||||
|
|
||||||
public init_proclib as 'kolibri_dialog_init'
|
|
||||||
;;; Returns 0 on success. -1 on failure.
|
|
||||||
|
|
||||||
proc init_proclib
|
|
||||||
pusha
|
|
||||||
mcall 68,11
|
|
||||||
stdcall dll.Load, @IMPORT
|
|
||||||
popa
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
section '.data' writeable
|
|
||||||
|
|
||||||
@IMPORT:
|
|
||||||
library lib_boxlib, 'proc_lib.obj'
|
|
||||||
|
|
||||||
import lib_boxlib, \
|
|
||||||
OpenDialog_init, 'OpenDialog_init' , \
|
|
||||||
OpenDialog_start, 'OpenDialog_start' , \
|
|
||||||
ColorDialog_init, 'ColorDialog_init' , \
|
|
||||||
ColorDialog_start, 'ColorDialog_start'
|
|
||||||
|
|
||||||
public OpenDialog_init as 'OpenDialog_init'
|
|
||||||
public OpenDialog_start as 'OpenDialog_start'
|
|
||||||
|
|
||||||
public ColorDialog_init as 'ColorDialog_init'
|
|
||||||
public ColorDialog_start as 'ColorDialog_start'
|
|
@ -1,9 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include '__lib__.inc'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
public lib_name
|
|
||||||
|
|
||||||
lib_name db 0x55, 0xAA, lib_name_str, 0
|
|
@ -1,2 +0,0 @@
|
|||||||
lib_name equ @sample.obj
|
|
||||||
lib_name_str equ '/sys/lib/sample.obj'
|
|
@ -1,13 +0,0 @@
|
|||||||
Create new library wrapper
|
|
||||||
|
|
||||||
1. Redefine lib_name and lib_name_str in __lib__.inc
|
|
||||||
2. Create file for each symbol, basing on sample_symbol.asm and for each:
|
|
||||||
2.1. Redefine fun to *your_symbol_name*
|
|
||||||
2.2. Redefine fun_name to '*your_symbol_name*' (with quotes, this is ASCII string, no trailing zero need)
|
|
||||||
3. Change make.bat as appropriate
|
|
||||||
|
|
||||||
ACHTUNG: lib_name need to be unique in project, this is why I started it with "@" and put "." into.
|
|
||||||
ACHTUNG: lib_name_str must be at least 5 symbols long, if is not, fix this adding padding to the path.
|
|
||||||
|
|
||||||
Now you can create header file and declare extern variables pointers-to-functions, and then link your app with -llibname (put .a file in lib folder).
|
|
||||||
For examples of such header files, look at include/kos/inputbox.h, include/kos/console.h and include/kos/http.h. IMO, first one is the simplest.
|
|
@ -1,5 +0,0 @@
|
|||||||
fasm __lib__.asm
|
|
||||||
fasm sample_symbol.asm
|
|
||||||
kos32-ar -ru libsample.a *.o
|
|
||||||
del *.o
|
|
||||||
pause
|
|
@ -1,18 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "__lib__.inc"
|
|
||||||
|
|
||||||
fun equ sample_symbol
|
|
||||||
fun_str equ 'sample_symbol'
|
|
||||||
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
fun_name db fun_str, 0
|
|
||||||
|
|
||||||
section '.data'
|
|
||||||
|
|
||||||
extrn lib_name
|
|
||||||
public fun
|
|
||||||
|
|
||||||
fun dd fun_name
|
|
||||||
lib dd lib_name
|
|
@ -1,292 +0,0 @@
|
|||||||
|
|
||||||
; KolibriOS system functions:
|
|
||||||
+SF_TERMINATE_PROCESS=-1 // kos_exit()
|
|
||||||
+SF_CREATE_WINDOW=0 ; define and draw the window //sys_create_window()
|
|
||||||
SF_PUT_PIXEL=1 ; draw pixel to the window
|
|
||||||
+SF_GET_KEY=2 ; get code of the pressed key
|
|
||||||
SF_GET_SYS_TIME=3
|
|
||||||
+SF_DRAW_TEXT=4 //draw_text_sys()
|
|
||||||
+SF_SLEEP=5 ; pause process // delay()
|
|
||||||
+SF_PUT_IMAGE=7 ; draw image to the window //draw_bitmap()
|
|
||||||
+SF_DEFINE_BUTTON=8 ; define/delete the button
|
|
||||||
+SF_THREAD_INFO=9 ; information on execution thread // get_proc_info()
|
|
||||||
+SF_WAIT_EVENT=10 ; wait for event // get_os_event()
|
|
||||||
+SF_CHECK_EVENT=11 ; check for event and return // check_os_event()
|
|
||||||
SF_REDRAW=12
|
|
||||||
+ SSF_BEGIN_DRAW=1
|
|
||||||
+ SSF_END_DRAW=2
|
|
||||||
+SF_DRAW_RECT=13 ; draw rectangle to the window // draw_bar()
|
|
||||||
SF_GET_SCREEN_SIZE=14 ; get screen resolution
|
|
||||||
SF_BACKGROUND_SET=15
|
|
||||||
SSF_SIZE_BG=1
|
|
||||||
SSF_PIXEL_BG=2
|
|
||||||
SSF_REDRAW_BG=3
|
|
||||||
SSF_MODE_BG=4
|
|
||||||
SSF_IMAGE_BG=5
|
|
||||||
SSF_MAP_BG=6 ; map background image to the address space of the process
|
|
||||||
SSF_UNMAP_BG=7
|
|
||||||
SSF_LAST_DRAW=8 ; get coordinates of the last draw to the background
|
|
||||||
SSF_REDRAW_RECT=9 ; redraws a rectangular part of the background
|
|
||||||
SF_RD_TO_FLOPPY=16 ; save ramdisk on the floppy
|
|
||||||
+SF_GET_BUTTON=17 ; get ID of the pressed button // get_os_button()
|
|
||||||
SF_SYSTEM=18
|
|
||||||
SSF_UNFOCUS_WINDOW=1 ; take focus from the window of the given thread
|
|
||||||
SSF_TERMINATE_THREAD=2 ; terminate process/thread by the slot number
|
|
||||||
+ SSF_FOCUS_WINDOW=3 ; give focus to the window of the given thread
|
|
||||||
SSF_GET_IDLE_COUNT=4 ; get counter of idle cycles per second
|
|
||||||
SSF_GET_CPU_REQUENCY=5 ; get CPU clock rate
|
|
||||||
SSF_RD_TO_HDD=6 ; save ramdisk to the file on hard disk
|
|
||||||
SSF_GET_ACTIVE_WINDOW=7 ; get slot number of the active window
|
|
||||||
SSF_SPEAKER=8
|
|
||||||
SSSF_GET_STATE=1
|
|
||||||
SSSF_TOGGLE=2
|
|
||||||
SSF_SHUTDOWN=9 ; system shutdown/reboot
|
|
||||||
SSF_MINIMIZE_WINDOW=10 ; minimize active window
|
|
||||||
SSF_INFO_DISC_SYS=11 ; get disk subsystem information
|
|
||||||
SSF_KERNEL_VERSION=13 ; get kernel version
|
|
||||||
SSF_WAIT_RETRACE=14 ; wait for screen retrace
|
|
||||||
SSF_CURSOR_CENTER=15 ; center mouse cursor on the screen
|
|
||||||
SSF_GET_FREE_RAM=16 ; get size of free RAM
|
|
||||||
SSF_GET_TOTAL_RAM=17 ; get total amount of RAM
|
|
||||||
SSF_TERMINATE_THREAD_ID=18 ; Terminate process/thread by the ID
|
|
||||||
SSF_MOUSE_SETTINGS=19
|
|
||||||
SSSF_GET_SPEED=0
|
|
||||||
SSSF_SET_SPEED=1
|
|
||||||
SSSF_GET_SPEEDUP=2
|
|
||||||
SSSF_SET_SPEEDUP=3 ; set mouse acceleration
|
|
||||||
SSSF_SET_POS=4 ; set mouse pointer position
|
|
||||||
SSSF_SET_BUTTON=5 ; simulate state of mouse buttons
|
|
||||||
SSSF_GET_DOUBLE_CLICK_DELAY=6
|
|
||||||
SSSF_SET_DOUBLE_CLICK_DELAY=7
|
|
||||||
SSF_GET_RAM_INFO=20 ; get information on RAM
|
|
||||||
+ SSF_GET_THREAD_SLOT=21 ; get slot number of process/thread by the ID
|
|
||||||
SSF_FOREIGN_WINDOW=22 ; operations with window of another thread by slot/ID
|
|
||||||
SSSF_MINIMIZE=0
|
|
||||||
SSSF_MINIMIZE_ID=1
|
|
||||||
SSSF_RESTORE=2
|
|
||||||
SSSF_RESTORE_ID=3
|
|
||||||
SSF_MINIMIZE_ALL=23
|
|
||||||
SSF_SET_SCREEN_LIMITS=24
|
|
||||||
SSF_WINDOW_BEHAVIOR=25 ; window focus relation with other windows
|
|
||||||
SSSF_GET_WB=1
|
|
||||||
SSSF_SET_WB=2
|
|
||||||
SF_MIDI=20
|
|
||||||
SSF_RESET=1
|
|
||||||
SSF_OUTPUT=2
|
|
||||||
SF_SYSTEM_SET=21
|
|
||||||
SSF_MPU_MIDI_BASE=1
|
|
||||||
SSF_KEYBOARD_LAYOUT=2
|
|
||||||
SSF_SYS_LANG=5
|
|
||||||
SSF_ACCESS_HD_LBA=11 ; setting of low-level access to HD
|
|
||||||
SSF_ACCESS_PCI=12 ; setting of low-level access to PCI
|
|
||||||
SF_SET_TIME_DATE=22
|
|
||||||
+SF_WAIT_EVENT_TIMEOUT=23; wait for event with timeout // wait_for_event()
|
|
||||||
SF_CD=24
|
|
||||||
SSF_EJECT_TRAY=4
|
|
||||||
SSF_INSERT_TRAY=5
|
|
||||||
SF_SCREEN_PUT_IMAGE=25 ; put image on the background layer
|
|
||||||
SF_SYSTEM_GET=26
|
|
||||||
; Same as SF_SYSTEM_SET, plus:
|
|
||||||
+ SSF_TIME_COUNT=9 // get_tick_count()
|
|
||||||
+ SSF_TIME_COUNT_PRO=10 ; get value of the high precision time counter // get_ns_count()
|
|
||||||
SF_GET_SYS_DATE=29
|
|
||||||
SF_CURRENT_FOLDER=30
|
|
||||||
+ SSF_SET_CF=1 ; set current folder for the thread // set_current_folder()
|
|
||||||
+ SSF_GET_CF=2 // get_current_folder()
|
|
||||||
SSF_ADD_SYS_FOLDER=3 ; install the add.system directory for the kernel
|
|
||||||
SF_GET_PIXEL_OWNER=34 ; get slot number of the screen pixel owner
|
|
||||||
SF_GET_PIXEL=35 ; read the screen pixel color
|
|
||||||
SF_GET_IMAGE=36 ; read the screen area
|
|
||||||
SF_MOUSE_GET=37
|
|
||||||
+ SSF_SCREEN_POSITION=0 // get_mouse_pos(POS_SCREEN)
|
|
||||||
+ SSF_WINDOW_POSITION=1 // get_mouse_pos(POS_WINDOW)
|
|
||||||
+ SSF_BUTTON=2 ; states of the mouse buttons //get_mouse_buttons()
|
|
||||||
+ SSF_BUTTON_EXT=3 ; states and events of the mouse buttons // get_mouse_eventstate()
|
|
||||||
+ SSF_LOAD_CURSOR=4
|
|
||||||
+ SSF_SET_CURSOR=5
|
|
||||||
+ SSF_DEL_CURSOR=6 // destroy_cursor()
|
|
||||||
+ SSF_SCROLL_DATA=7 //get_mouse_wheels()
|
|
||||||
+SF_DRAW_LINE=38
|
|
||||||
SF_BACKGROUND_GET=39
|
|
||||||
;SSF_SIZE_BG=1
|
|
||||||
;SSF_PIXEL_BG=2
|
|
||||||
;SSF_MODE_BG=4
|
|
||||||
+SF_SET_EVENTS_MASK=40 ; turn on/off desired events
|
|
||||||
SF_PORT_IN_OUT=43 ; input/output to a port
|
|
||||||
SF_SET_PORTS=46 ; reserve/free a group of input/output ports
|
|
||||||
+SF_DRAW_NUMBER=47 ; draw number to the window // draw_number_sys()
|
|
||||||
SF_STYLE_SETTINGS=48
|
|
||||||
SSF_APPLY=0 ; apply screen settings
|
|
||||||
SSF_SET_BUTTON_STYLE=1
|
|
||||||
SSF_SET_COLORS=2
|
|
||||||
+ SSF_GET_COLORS=3 ; get standard window colors // get_system_colors()
|
|
||||||
+ SSF_GET_SKIN_HEIGHT=4
|
|
||||||
SSF_GET_SCREEN_AREA=5 ; get screen working area
|
|
||||||
SSF_SET_SCREEN_AREA=6
|
|
||||||
SSF_GET_SKIN_MARGINS=7
|
|
||||||
SSF_SET_SKIN=8
|
|
||||||
SSF_GET_FONT_SMOOTH=9
|
|
||||||
SSF_SET_FONT_SMOOTH=10
|
|
||||||
SSF_GET_FONT_SIZE=11
|
|
||||||
SSF_SET_FONT_SIZE=12
|
|
||||||
SF_APM=49
|
|
||||||
SF_SET_WINDOW_SHAPE=50
|
|
||||||
+SF_CREATE_THREAD=51 // start_thread()
|
|
||||||
SF_CLIPBOARD=54
|
|
||||||
+ SSF_GET_SLOT_COUNT=0 ; get the number of slots in the clipboard // kol_clip_num()
|
|
||||||
+ SSF_READ_CB=1 // kol_clip_get()
|
|
||||||
+ SSF_WRITE_CB=2 // kol_clip_set()
|
|
||||||
+ SSF_DEL_SLOT=3 ; delete the last slot in the clipboard // kol_clip_pop()
|
|
||||||
+ SSF_UNLOCK_BUFFER=4 ; emergency buffer unlock // kol_clip_unlock()
|
|
||||||
SF_SPEAKER_PLAY=55
|
|
||||||
SF_PCI_BIOS=57
|
|
||||||
SF_IPC=60 ; Inter Process Communication
|
|
||||||
+ SSF_SET_AREA=1 ; set area for IPC receiving // ipc_set_area()
|
|
||||||
+ SSF_SEND_MESSAGE=2 // ipc_send_message()
|
|
||||||
SF_GET_GRAPHICAL_PARAMS=61
|
|
||||||
+ SSF_SCREEN_SIZE=1 // GetScreenSize()
|
|
||||||
SSF_BITS_PER_PIXEL=2
|
|
||||||
SSF_BYTES_PER_LINE=3
|
|
||||||
SF_PCI=62
|
|
||||||
SSF_GET_VERSION=0 ; get version of PCI-interface
|
|
||||||
SSF_GET_LAST_BUS=1 ; get number of the last PCI-bus
|
|
||||||
SSF_GET_ADRR_MODE=2 ; get addressing mode of the PCI configuration space
|
|
||||||
SSF_READ_BYTE=4
|
|
||||||
SSF_READ_WORD=5
|
|
||||||
SSF_READ_DWORD=6
|
|
||||||
SSF_WRITE_BYTE=8
|
|
||||||
SSF_WRITE_WORD=9
|
|
||||||
SSF_WRITE_DWORD=10
|
|
||||||
SF_BOARD=63
|
|
||||||
+ SSF_DEBUG_WRITE=1 // debug_board_write_byte()
|
|
||||||
SSF_DEBUG_READ=2
|
|
||||||
SF_MEMORY_RESIZE=64 ; resize total application memory
|
|
||||||
SF_PUT_IMAGE_EXT=65 ; draw image with palette to the window
|
|
||||||
SF_KEYBOARD=66
|
|
||||||
SSF_SET_INPUT_MODE=1
|
|
||||||
SSF_GET_INPUT_MODE=2
|
|
||||||
SSF_GET_CONTROL_KEYS=3; get status of control keys
|
|
||||||
SSF_SET_SYS_HOTKEY=4
|
|
||||||
SSF_DEL_SYS_HOTKEY=5
|
|
||||||
SSF_LOCK_INPUT=6 ; block normal input
|
|
||||||
SSF_UNLOCK_INPUT=7 ; restore normal input
|
|
||||||
SF_CHANGE_WINDOW=67 ; change position/sizes of the window
|
|
||||||
SF_SYS_MISC=68
|
|
||||||
SSF_GET_TASK_SWITCH_COUNT=0
|
|
||||||
+ SSF_SWITCH_TASK=1 //yield()
|
|
||||||
SSF_PERFORMANCE=2
|
|
||||||
SSSF_ALLOW_RDPMC=0
|
|
||||||
SSSF_CACHE_STATUS=1
|
|
||||||
SSSF_CACHE_ON=2
|
|
||||||
SSSF_CACHE_OFF=3
|
|
||||||
SSF_READ_MSR=3
|
|
||||||
SSF_WRITE_MSR=4
|
|
||||||
SSF_HEAP_INIT=11
|
|
||||||
+ SSF_MEM_ALLOC=12 // user_alloc()
|
|
||||||
+ SSF_MEM_FREE=13 // user_free()
|
|
||||||
SSF_WAIT_SIGNAL=14 ; wait for signal from another program/driver
|
|
||||||
+ SSF_LOAD_DRIVER=16 // get_service()
|
|
||||||
+ SSF_CONTROL_DRIVER=17 // call_service()
|
|
||||||
SSF_LOAD_DLL=19
|
|
||||||
+ SSF_MEM_REALLOC=20 //user_realloc()
|
|
||||||
SSF_LOAD_DRIVER_PE=21
|
|
||||||
+ SSF_MEM_OPEN=22 ; open named memory area // shm_open()
|
|
||||||
+ SSF_MEM_CLOSE=23 // shm_close()
|
|
||||||
SSF_SET_EXCEPTION_HANDLER=24
|
|
||||||
SSF_SET_EXCEPTION_STATE=25
|
|
||||||
+ SSF_MEM_FREE_EXT=26 // user_unmap()
|
|
||||||
+ SSF_LOAD_FILE=27
|
|
||||||
SF_DEBUG=69
|
|
||||||
SSF_SET_MESSAGE_AREA=0
|
|
||||||
SSF_GET_REGISTERS=1
|
|
||||||
SSF_SET_REGISTERS=2
|
|
||||||
SSF_DETACH=3
|
|
||||||
SSF_SUSPEND=4
|
|
||||||
SSF_RESUME=5
|
|
||||||
SSF_READ_MEMORY=6
|
|
||||||
SSF_WRITE_MEMORY=7
|
|
||||||
SSF_TERMINATE=8
|
|
||||||
SSF_DEFINE_BREAKPOINT=9
|
|
||||||
SF_FILE=70
|
|
||||||
SSF_READ_FILE=0
|
|
||||||
SSF_READ_FOLDER=1
|
|
||||||
SSF_CREATE_FILE=2
|
|
||||||
SSF_WRITE_FILE=3
|
|
||||||
SSF_SET_END=4
|
|
||||||
SSF_GET_INFO=5
|
|
||||||
SSF_SET_INFO=6
|
|
||||||
+ SSF_START_APP=7
|
|
||||||
SSF_DELETE=8
|
|
||||||
SSF_CREATE_FOLDER=9
|
|
||||||
SF_SET_CAPTION=71
|
|
||||||
SF_SEND_MESSAGE=72
|
|
||||||
+SF_BLITTER=73 //Blit()
|
|
||||||
SF_NETWORK_GET=74
|
|
||||||
SSF_DEVICE_COUNT=255 ; get number of active network devices
|
|
||||||
SSF_DEVICE_TYPE=0
|
|
||||||
SSF_DEVICE_NAME=1
|
|
||||||
SSF_RESET_DEVICE=2
|
|
||||||
SSF_STOP_DEVICE=3
|
|
||||||
SSF_DEVICE_POINER=4
|
|
||||||
SSF_TX_PACKET_COUNT=6
|
|
||||||
SSF_RX_PACKET_COUNT=7
|
|
||||||
SSF_TX_BYTE_COUNT=8
|
|
||||||
SSF_RX_BYTE_COUNT=9
|
|
||||||
SSF_LINK_STATUS=10
|
|
||||||
SF_NETWORK_SOCKET=75
|
|
||||||
SSF_OPEN=0
|
|
||||||
SSF_CLOSE=1
|
|
||||||
SSF_BIND=2
|
|
||||||
SSF_LISTEN=3
|
|
||||||
SSF_CONNECT=4
|
|
||||||
SSF_ACCEPT=5
|
|
||||||
SSF_SEND=6
|
|
||||||
SSF_RECEIVE=7
|
|
||||||
SSF_SET_OPTIONS=8
|
|
||||||
SSF_GET_OPTIONS=9
|
|
||||||
SSF_GET_PAIR=10
|
|
||||||
SF_NETWORK_PROTOCOL=76
|
|
||||||
SSF_ETHERNET_READ_MAC=0
|
|
||||||
SSF_IP4_PACKETS_SENT=10000h
|
|
||||||
SSF_IP4_PACKETS_RECEIVED=10001h
|
|
||||||
SSF_IP4_READ_IP=10002h
|
|
||||||
SSF_IP4_WRITE_IP=10003h
|
|
||||||
SSF_IP4_READ_DNS=10004h
|
|
||||||
SSF_IP4_WRITE_DNS=10005h
|
|
||||||
SSF_IP4_READ_SUBNET=10006h
|
|
||||||
SSF_IP4_WRITE_SUBNET=10007h
|
|
||||||
SSF_IP4_READ_GATEWAY=10008h
|
|
||||||
SSF_IP4_WRITE_GATEWAY=10009h
|
|
||||||
SSF_ICMP_PACKETS_SENT=20000h
|
|
||||||
SSF_ICMP_PACKETS_RECEIVED=20001h
|
|
||||||
SSF_ICMP_ECHO_REPLY=20003h
|
|
||||||
SSF_UDP_PACKETS_SENT=30000h
|
|
||||||
SSF_UDP_PACKETS_RECEIVED=30001h
|
|
||||||
SSF_TCP_PACKETS_SENT=40000h
|
|
||||||
SSF_TCP_PACKETS_RECEIVED=40001h
|
|
||||||
SSF_ARP_PACKETS_SENT=50000h
|
|
||||||
SSF_ARP_PACKETS_RECEIVED=50001h
|
|
||||||
SSF_ARP_GET_ENTRY_COUNT=50002h
|
|
||||||
SSF_ARP_READ_ENTRY=50003h
|
|
||||||
SSF_ARP_ADD_STATIC_ENTRY=50004h
|
|
||||||
SSF_ARP_DEL_ENTRY=50005h
|
|
||||||
SSF_ARP_SEND_ANNOUNCE=50006h
|
|
||||||
SSF_ARP_CONFLICTS_COUNT=50007h
|
|
||||||
SF_FUTEX=77
|
|
||||||
SSF_CREATE=0
|
|
||||||
SSF_DESTROY=1
|
|
||||||
SSF_WAIT=2
|
|
||||||
SSF_WAKE=3
|
|
||||||
|
|
||||||
; File system errors:
|
|
||||||
FSERR_SUCCESS=0
|
|
||||||
FSERR_UNSUPPORTED=2
|
|
||||||
FSERR_UNKNOWN=3
|
|
||||||
FSERR_FILE_NOT_FOUND=5
|
|
||||||
FSERR_END_OF_FILE=6
|
|
||||||
FSERR_INVALID_BUFFER=7
|
|
||||||
FSERR_DISK_FULL=8
|
|
||||||
FSERR_FAIL=9
|
|
||||||
FSERR_ACCESS_DENIED=10
|
|
||||||
FSERR_DEVICE_FAIL=11
|
|
||||||
FSERR_OUT_OF_MEMORY=12
|
|
@ -1,33 +0,0 @@
|
|||||||
INCLUDE = include
|
|
||||||
LIBSFORBUILD = math
|
|
||||||
LIBNAME = libck.a
|
|
||||||
CC = ../bin/kos32-tcc
|
|
||||||
CFLAGS = -I$(INCLUDE) -m32 -nostdinc -nostdlib -DGNUC
|
|
||||||
DIRS := stdio memory kolibrisys string stdlib math dlfcn libgen fs net
|
|
||||||
|
|
||||||
##############################################################
|
|
||||||
#files := $(foreach dir,$(DIRS),$(dir)/$(wildcard $(dir)/*))
|
|
||||||
asmfiles := $(foreach dir,$(DIRS),$(patsubst %.asm, %.o, $(wildcard $(dir)/*.asm)))
|
|
||||||
cfiles := $(foreach dir,$(DIRS),$(patsubst %.c, %.o, $(wildcard $(dir)/*.c)))
|
|
||||||
|
|
||||||
.PHONY: clean all
|
|
||||||
|
|
||||||
ifdef windir
|
|
||||||
doClean = del /F /Q $(subst /,\,$(cfiles)) $(subst /,\,$(asmfiles))
|
|
||||||
else
|
|
||||||
doClean = rm $(cfiles) $(asmfiles)
|
|
||||||
endif
|
|
||||||
|
|
||||||
all: $(cfiles) $(asmfiles)
|
|
||||||
ar -rcs $(LIBNAME) $^
|
|
||||||
|
|
||||||
$(cfiles): $(INCLUDE)/*.h
|
|
||||||
|
|
||||||
$(asmfiles):
|
|
||||||
fasm $*.asm $*.o
|
|
||||||
|
|
||||||
clean:
|
|
||||||
$(doClean)
|
|
||||||
|
|
||||||
install:
|
|
||||||
cp $(LIBNAME) ../bin/lib
|
|
@ -1,71 +0,0 @@
|
|||||||
@echo off
|
|
||||||
echo ####################################################
|
|
||||||
echo # Melibc builder #
|
|
||||||
echo # usage: build [clean] #
|
|
||||||
echo ####################################################
|
|
||||||
rem #### CONFIG SECTION ####
|
|
||||||
set LIBNAME=libck.a
|
|
||||||
set INCLUDE=include
|
|
||||||
set CC=kos32-tcc
|
|
||||||
set CFLAGS=-c -nostdinc -DGNUC -I"%cd%\%INCLUDE%" -Wall
|
|
||||||
set AR=kos32-ar
|
|
||||||
set ASM=fasm
|
|
||||||
set dirs=stdio memory kolibrisys string stdlib math dlfcn libgen fs net
|
|
||||||
rem #### END OF CONFIG SECTION ####
|
|
||||||
|
|
||||||
set objs=
|
|
||||||
set target=%1
|
|
||||||
if not "%1"=="clean" set target=all
|
|
||||||
|
|
||||||
set INCLUDE="%cd%"
|
|
||||||
call :Target_%target%
|
|
||||||
|
|
||||||
if ERRORLEVEL 0 goto Exit_OK
|
|
||||||
|
|
||||||
echo Probably at runing has been created error
|
|
||||||
echo For help send a report...
|
|
||||||
pause
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:Compile_C
|
|
||||||
echo compile .c %1
|
|
||||||
%CC% %CFLAGS% %1 -o "%~dpn1.o"
|
|
||||||
if not %errorlevel%==0 goto Error_Failed
|
|
||||||
set objs=%objs% "%~dpn1.o"
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:Compile_Asm
|
|
||||||
echo compile .asm %1
|
|
||||||
%ASM% %1 "%~dpn1.o"
|
|
||||||
if not %errorlevel%==0 goto Error_Failed
|
|
||||||
set objs=%objs% "%~dpn1.o"
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:Target_clean
|
|
||||||
echo cleaning ...
|
|
||||||
for %%a in (%dirs%) do del /Q "%%a\*.o"
|
|
||||||
goto :Exit_OK
|
|
||||||
|
|
||||||
:Target_all
|
|
||||||
echo building all ...
|
|
||||||
for %%a in (%dirs%) do (
|
|
||||||
for %%f in ("%%a\*.asm") do call :Compile_Asm "%%f"
|
|
||||||
for %%f in ("%%a\*.c") do call :Compile_C "%%f"
|
|
||||||
)
|
|
||||||
echo calling AR
|
|
||||||
%AR% -ru %LIBNAME% %objs%
|
|
||||||
if not %errorlevel%==0 goto Error_Failed
|
|
||||||
goto Exit_OK
|
|
||||||
|
|
||||||
:Error_Failed
|
|
||||||
echo error: execution failed
|
|
||||||
pause
|
|
||||||
exit 1
|
|
||||||
|
|
||||||
:Exit_OK
|
|
||||||
echo ####################################################
|
|
||||||
echo # All operations has been done... #
|
|
||||||
echo # For cleaning run this script with param " clean" #
|
|
||||||
echo ####################################################
|
|
||||||
pause
|
|
||||||
exit 0
|
|
@ -1,91 +0,0 @@
|
|||||||
#include <kos32sys1.h>
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <dlfcn.h>
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
char *name;
|
|
||||||
void *ptr;
|
|
||||||
} KosExp;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
void **importNames;
|
|
||||||
char * libraryName;
|
|
||||||
} KosImp;
|
|
||||||
|
|
||||||
static int stdcall dll_Load(KosImp *importTableEntry);
|
|
||||||
|
|
||||||
static const char *__error;
|
|
||||||
|
|
||||||
static int stdcall dll_Load(KosImp *importTableEntry) {
|
|
||||||
for (; importTableEntry->importNames; importTableEntry++) {
|
|
||||||
char libPath[256] = "/sys/lib/";
|
|
||||||
KosExp *exports = NULL;
|
|
||||||
void **libImports = importTableEntry->importNames;
|
|
||||||
|
|
||||||
strcat(libPath, importTableEntry->libraryName);
|
|
||||||
if (!(exports = dlopen(libPath, 0))) { return 1; }
|
|
||||||
for (; *libImports; libImports++) {
|
|
||||||
if (!(*libImports = dlsym(exports, *libImports))) { return 1; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://pubs.opengroup.org/onlinepubs/007908799/xsh/dlopen.html
|
|
||||||
// Current implementation fully ignores "mode" parameter
|
|
||||||
void *dlopen(const char *name, int mode) {
|
|
||||||
KosExp *exports = NULL;
|
|
||||||
|
|
||||||
// load library using syscall
|
|
||||||
asm volatile ("int $0x40":"=a"(exports):"a"(68), "b"(19), "c"(name));
|
|
||||||
if (!exports) {
|
|
||||||
char libPath[256] = "/sys/lib/";
|
|
||||||
|
|
||||||
strcat(libPath, name);
|
|
||||||
asm volatile ("int $0x40":"=a"(exports):"a"(68), "b"(19), "c"(libPath));
|
|
||||||
if (!exports) {
|
|
||||||
__error = "Library not found in \"/sys/lib/\" nor current folder";
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// call anything starting with "lib_"
|
|
||||||
for (KosExp *export = exports; export->name; export++) {
|
|
||||||
if (!memcmp(export->name, "lib_", 4)) {
|
|
||||||
asm volatile (
|
|
||||||
"call *%4" ::
|
|
||||||
"a"(sysmalloc),
|
|
||||||
"b"(sysfree),
|
|
||||||
"c"(sysrealloc),
|
|
||||||
"d"(dll_Load),
|
|
||||||
"r"(export->ptr));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return exports;
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://pubs.opengroup.org/onlinepubs/007908799/xsh/dlsym.html
|
|
||||||
void *dlsym(void *handle, const char *name) {
|
|
||||||
KosExp *exp = handle;
|
|
||||||
|
|
||||||
for (; exp->name; exp++) {
|
|
||||||
if (!strcmp(exp->name, name)) {
|
|
||||||
return exp->ptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
__error = "Symbol not found";
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://pubs.opengroup.org/onlinepubs/007908799/xsh/dlclose.html
|
|
||||||
int dlclose(void *handle) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://pubs.opengroup.org/onlinepubs/007908799/xsh/dlerror.html
|
|
||||||
char *dlerror(void) {
|
|
||||||
char *ret = __error ? strdup(__error) : NULL;
|
|
||||||
__error = NULL;
|
|
||||||
return ret;
|
|
||||||
}
|
|
@ -1,108 +0,0 @@
|
|||||||
/* Copyright (C) 2019-2021 Logaev Maxim (turbocat2001), GPLv3 */
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <dir.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
#pragma pack(push,1)
|
|
||||||
typedef struct {
|
|
||||||
unsigned p00;
|
|
||||||
unsigned long long p04;
|
|
||||||
unsigned p12;
|
|
||||||
unsigned p16;
|
|
||||||
char p20;
|
|
||||||
char *p21;
|
|
||||||
} kol_struct70;
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
int kol_file_70(kol_struct70 *k)
|
|
||||||
{
|
|
||||||
asm volatile ("int $0x40"::"a"(70), "b"(k));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool dir_operations(unsigned char fun_num, char *path)
|
|
||||||
{
|
|
||||||
kol_struct70 inf;
|
|
||||||
inf.p00 = fun_num;
|
|
||||||
inf.p04 = 0;
|
|
||||||
inf.p12 = 0;
|
|
||||||
inf.p16 = 0;
|
|
||||||
inf.p20 = 0;
|
|
||||||
inf.p21 = path;
|
|
||||||
if(!kol_file_70(&inf)){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int lsdir(const char* dir, short_file_info **list)
|
|
||||||
{
|
|
||||||
int num_of_file=0;
|
|
||||||
kol_struct70 inf;
|
|
||||||
|
|
||||||
inf.p00 = 1;
|
|
||||||
inf.p04 = 0;
|
|
||||||
inf.p12 = 2;
|
|
||||||
inf.p16 = (unsigned) malloc(32+inf.p12*560);
|
|
||||||
inf.p20 = 0;
|
|
||||||
inf.p21 = (char*)dir;
|
|
||||||
|
|
||||||
if(kol_file_70(&inf))
|
|
||||||
{
|
|
||||||
free((void*)inf.p16);
|
|
||||||
return FS_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
num_of_file = *(unsigned*)(inf.p16+8);
|
|
||||||
inf.p12 = num_of_file;
|
|
||||||
free((void*)inf.p16);
|
|
||||||
inf.p16 = (unsigned) malloc(32+inf.p12*560);
|
|
||||||
*list = (short_file_info*)malloc(num_of_file*sizeof(short_file_info));
|
|
||||||
|
|
||||||
if(kol_file_70(&inf))
|
|
||||||
{
|
|
||||||
free((void*)inf.p16);
|
|
||||||
return FS_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i=0; i<num_of_file; i++)
|
|
||||||
{
|
|
||||||
(*list)[i].type = *(unsigned*)(inf.p16+32+(264+40)*i);
|
|
||||||
(*list)[i].name =(char*)(inf.p16+32+40+(264+40)*i);
|
|
||||||
}
|
|
||||||
return num_of_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
char *getcwd(char *buf, unsigned size)
|
|
||||||
{
|
|
||||||
if(buf == NULL){
|
|
||||||
if((buf = malloc(size))==NULL)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"int $0x40"
|
|
||||||
::"a"(30),"b"(2),"c"(buf), "d"(size));
|
|
||||||
return(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
void setcwd(const char* cwd)
|
|
||||||
{
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"int $0x40"
|
|
||||||
::"a"(30),"b"(1),"c"(cwd));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool rmdir(const char* dir)
|
|
||||||
{
|
|
||||||
return dir_operations(8, (char*)dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool mkdir(const char* dir)
|
|
||||||
{
|
|
||||||
return dir_operations(9, (char*)dir);
|
|
||||||
}
|
|
@ -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
|
|
@ -1,265 +0,0 @@
|
|||||||
// writed by maxcodehack and superturbocat2001
|
|
||||||
// adaptation of clayer for ktcc
|
|
||||||
#ifndef KOLIBRI_BOXLIB_H
|
|
||||||
#define KOLIBRI_BOXLIB_H
|
|
||||||
|
|
||||||
typedef unsigned color_t;
|
|
||||||
|
|
||||||
extern int kolibri_boxlib_init(void);
|
|
||||||
|
|
||||||
/* flags meaning */
|
|
||||||
#define ed_figure_only 0b1000000000000000 // одни символы
|
|
||||||
#define ed_always_focus 0b100000000000000 // всегда с курсором (фокусом)
|
|
||||||
#define ed_focus 0b10 // фокус ввода приложения, мышится самостоятельно
|
|
||||||
#define ed_pass 0b1 // поле с паролем
|
|
||||||
#define ed_shift_on 0b1000 // если не установлен -значит впервые нажат shift,если был установлен, значит мы уже что - то делали удерживая //shift
|
|
||||||
#define ed_shift_on_off 0b1111111111110111
|
|
||||||
#define ed_shift 0b100 //включается при нажатии на shift т.е. если нажимаю
|
|
||||||
#define ed_shift_off 0b1111111111111011
|
|
||||||
#define ed_shift_bac 0b10000 //бит для очистки выделеного shift т.е. при установке говорит что есть выделение
|
|
||||||
#define ed_shift_bac_cl 0b1111111111101111 //очистка при удалении выделения
|
|
||||||
#define ed_shift_cl 0b1111111111100011
|
|
||||||
#define ed_shift_mcl 0b1111111111111011
|
|
||||||
#define ed_left_fl 0b100000
|
|
||||||
#define ed_right_fl 0b1111111111011111
|
|
||||||
#define ed_offset_fl 0b1000000
|
|
||||||
#define ed_offset_cl 0b1111111110111111
|
|
||||||
#define ed_insert 0b10000000
|
|
||||||
#define ed_insert_cl 0b1111111101111111
|
|
||||||
#define ed_mouse_on 0b100000000
|
|
||||||
#define ed_mous_adn_b 0b100011000
|
|
||||||
#define ed_mouse_off ~ed_mouse_on
|
|
||||||
#define ed_ctrl_on 0b1000000000
|
|
||||||
#define ed_ctrl_off ~ed_ctrl_on
|
|
||||||
#define ed_alt_on 0b10000000000
|
|
||||||
#define ed_alt_off ~ed_alt_on
|
|
||||||
#define ed_disabled 0b100000000000
|
|
||||||
|
|
||||||
// SCROLLBAR
|
|
||||||
typedef struct {
|
|
||||||
uint16_t xsize;
|
|
||||||
uint16_t xpos;
|
|
||||||
uint16_t ysize;
|
|
||||||
uint16_t ypos;
|
|
||||||
uint32_t btn_height;
|
|
||||||
uint32_t type; // type 1 - stylish frame, type 2 - ?, type 0 - ?
|
|
||||||
uint32_t max_area;
|
|
||||||
uint32_t cur_area;
|
|
||||||
uint32_t position;
|
|
||||||
uint32_t back_color;
|
|
||||||
uint32_t front_color;
|
|
||||||
uint32_t line_color;
|
|
||||||
uint32_t redraw;
|
|
||||||
uint16_t delta;
|
|
||||||
uint16_t delta2;
|
|
||||||
uint16_t r_size_x;
|
|
||||||
uint16_t r_start_x;
|
|
||||||
uint16_t r_size_y;
|
|
||||||
uint16_t r_start_y;
|
|
||||||
uint32_t m_pos;
|
|
||||||
uint32_t m_pos2;
|
|
||||||
uint32_t m_keys;
|
|
||||||
uint32_t run_size;
|
|
||||||
uint32_t position2;
|
|
||||||
uint32_t work_size;
|
|
||||||
uint32_t all_redraw; // need to be set =1 before each redraw
|
|
||||||
uint32_t ar_offset;
|
|
||||||
} __attribute__ ((__packed__)) scrollbar;
|
|
||||||
|
|
||||||
extern void (*scrollbar_h_draw __attribute__((__stdcall__)))(scrollbar*);
|
|
||||||
extern void (*scrollbar_h_mouse __attribute__((__stdcall__)))(scrollbar*);
|
|
||||||
extern void (*scrollbar_v_draw __attribute__((__stdcall__)))(scrollbar*);
|
|
||||||
extern void (*scrollbar_v_mouse __attribute__((__stdcall__)))(scrollbar*);
|
|
||||||
|
|
||||||
// CHECKBOX
|
|
||||||
typedef struct {
|
|
||||||
unsigned int left_s;
|
|
||||||
unsigned int top_s;
|
|
||||||
unsigned int ch_text_margin;
|
|
||||||
unsigned int color;
|
|
||||||
unsigned int border_color;
|
|
||||||
unsigned int text_color;
|
|
||||||
char *text;
|
|
||||||
unsigned int flags;
|
|
||||||
|
|
||||||
/* Users can use members above this */
|
|
||||||
unsigned int size_of_str;
|
|
||||||
}check_box;
|
|
||||||
|
|
||||||
extern void (*check_box_draw2 __attribute__((__stdcall__)))(check_box *);
|
|
||||||
extern void (*check_box_mouse2 __attribute__((__stdcall__)))(check_box *);
|
|
||||||
extern void (*init_checkbox2 __attribute__((__stdcall__)))(check_box *);
|
|
||||||
|
|
||||||
// DBUTTON
|
|
||||||
typedef struct {
|
|
||||||
uint32_t type;
|
|
||||||
uint32_t x_w;
|
|
||||||
uint32_t y_h;
|
|
||||||
uint32_t mouse_pos;
|
|
||||||
uint32_t mouse_keys;
|
|
||||||
uint32_t mouse_keys_old;
|
|
||||||
void* active_raw; //active bitmap
|
|
||||||
void* passive_raw; //passive bitmap
|
|
||||||
void* click_raw; //pressed bitmap
|
|
||||||
uint32_t resolution_raw; // bpp, as esi fn65
|
|
||||||
void* palette_raw; // palette, as edi fn65
|
|
||||||
uint32_t offset_raw; // width as ebp fn65
|
|
||||||
uint32_t select; // internal state: 0 - passive, 2 - pressed, 1 - clicked
|
|
||||||
uint32_t click; // clicked - 1, zero it after tested
|
|
||||||
} pict_button;
|
|
||||||
|
|
||||||
extern void (*dynamic_button_draw __attribute__((__stdcall__)))(pict_button *);
|
|
||||||
extern void (*dynamic_button_mouse __attribute__((__stdcall__)))(pict_button *);
|
|
||||||
|
|
||||||
// EDITBOX
|
|
||||||
|
|
||||||
#pragma pack(push,1)
|
|
||||||
typedef struct edit_box_t {
|
|
||||||
unsigned int width;
|
|
||||||
unsigned int left;
|
|
||||||
unsigned int top;
|
|
||||||
unsigned int color;
|
|
||||||
unsigned int shift_color; // selected text color
|
|
||||||
unsigned int focus_border_color;
|
|
||||||
unsigned int blur_border_color;
|
|
||||||
unsigned int text_color;
|
|
||||||
unsigned int max;
|
|
||||||
char *text;
|
|
||||||
void *mouse_variable; // must be pointer edit_box** to save focused editbox
|
|
||||||
unsigned int flags;
|
|
||||||
|
|
||||||
unsigned int size; // used symbols in buffer without trailing zero
|
|
||||||
unsigned int pos; // cursor position
|
|
||||||
/* The following struct members are not used by the users of API */
|
|
||||||
unsigned int offset;
|
|
||||||
unsigned int cl_curs_x;
|
|
||||||
unsigned int cl_curs_y;
|
|
||||||
unsigned int shift;
|
|
||||||
unsigned int shift_old;
|
|
||||||
unsigned int height;
|
|
||||||
unsigned int char_width;
|
|
||||||
}edit_box;
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
extern void (*edit_box_draw __attribute__((__stdcall__)))(edit_box *);
|
|
||||||
extern void edit_box_key (edit_box *, unsigned int key_val)__attribute__((__stdcall__));
|
|
||||||
extern void (*edit_box_mouse __attribute__((__stdcall__)))(edit_box *);
|
|
||||||
extern void (*edit_box_set_text __attribute__((__stdcall__)))(edit_box *, char *);
|
|
||||||
|
|
||||||
// FRAME
|
|
||||||
typedef struct {
|
|
||||||
uint32_t type;
|
|
||||||
uint32_t x_w;
|
|
||||||
uint32_t y_h;
|
|
||||||
color_t ext_col;
|
|
||||||
color_t int_col;
|
|
||||||
uint32_t flags;
|
|
||||||
char *text_pointer;
|
|
||||||
uint32_t text_position;
|
|
||||||
uint32_t font_number;
|
|
||||||
uint32_t font_size_y;
|
|
||||||
color_t font_color;
|
|
||||||
color_t font_bg_color;
|
|
||||||
}frame;
|
|
||||||
|
|
||||||
extern void (*frame_draw)(frame *);
|
|
||||||
|
|
||||||
// MENUBAR
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uint32_t type; // 1 åñëè íåò ïîäìåíþ, ïðîñòî ïóíêò
|
|
||||||
|
|
||||||
uint32_t x_w; // âåðõíèé ïóíêò
|
|
||||||
uint32_t y_h;
|
|
||||||
|
|
||||||
char* text_pointer;
|
|
||||||
char* pos_pointer;
|
|
||||||
char* text_end;
|
|
||||||
uint32_t mouse_pos;
|
|
||||||
uint32_t mouse_keys;
|
|
||||||
|
|
||||||
uint32_t x_w1; // ïîäìåíþ
|
|
||||||
uint32_t y_h1;
|
|
||||||
|
|
||||||
color_t bckg_col; // ôîí âåðõíåãî ïóêòà
|
|
||||||
color_t frnt_col; // ôîí âûáðàííîãî âåðõíåãî ïóíêòà
|
|
||||||
color_t menu_col; // ôîí âûïàäàþùåé ÷àñòè (ïîäïóêòû)
|
|
||||||
uint32_t select;
|
|
||||||
uint32_t out_select;
|
|
||||||
char* buf_adress;
|
|
||||||
char* procinfo;
|
|
||||||
uint32_t click;
|
|
||||||
uint32_t cursor;
|
|
||||||
uint32_t cursor_old;
|
|
||||||
uint32_t interval;
|
|
||||||
uint32_t cursor_max;
|
|
||||||
uint32_t extended_key;
|
|
||||||
color_t menu_sel_col; // öâåò ôîíà âûáðàííîãî ïîäïóíêòà
|
|
||||||
color_t bckg_text_col; // öâåò øðèôòà íåâûáðàííîãî ïóíêòà
|
|
||||||
color_t frnt_text_col; // öâåò øðèôòà âûáðàííîãî ïóíêòà
|
|
||||||
uint32_t mouse_keys_old;
|
|
||||||
uint32_t font_height;
|
|
||||||
uint32_t cursor_out;
|
|
||||||
uint32_t get_mouse_flag;
|
|
||||||
} menubar;
|
|
||||||
|
|
||||||
extern void (*menu_bar_draw)(menubar *);
|
|
||||||
extern void (*menu_bar_mouse)(menubar *);
|
|
||||||
extern void (*menu_bar_activate)(menubar *);
|
|
||||||
|
|
||||||
// OPTIONBOX
|
|
||||||
typedef struct option_box_t {
|
|
||||||
struct option_box_t **selected;
|
|
||||||
uint16_t posx;
|
|
||||||
uint16_t posy;
|
|
||||||
uint32_t text_margin; // = 4 ðàññòîÿíèå îò ïðÿìîóãîëüíèêà ÷åê áîêñà äî íàäïèñè
|
|
||||||
uint32_t size; // 12 ðàçìåð êâàäðàòà ÷åê áîêñà
|
|
||||||
color_t color;
|
|
||||||
color_t border_color; // individual border
|
|
||||||
color_t text_color;
|
|
||||||
char *text;
|
|
||||||
uint32_t text_len;
|
|
||||||
uint32_t flags;
|
|
||||||
} __attribute__ ((__packed__)) option_box;
|
|
||||||
|
|
||||||
extern void (*option_box_draw __attribute__((__stdcall__)))(option_box **);
|
|
||||||
extern void (*option_box_mouse __attribute__((__stdcall__)))(option_box **);
|
|
||||||
|
|
||||||
// PATHSHOW
|
|
||||||
typedef struct {
|
|
||||||
uint32_t type;
|
|
||||||
uint32_t x_y;
|
|
||||||
uint16_t font_size_x; // 6 - for font 0, 8 - for font 1
|
|
||||||
uint16_t area_size_x;
|
|
||||||
uint32_t font_number; // 0 - monospace, 1 - variable, as fn4 (2bit only 0-3)
|
|
||||||
uint32_t background_flag; // as fn4, if 0, bk_color unneeded
|
|
||||||
color_t font_color; // as fn4
|
|
||||||
color_t background_color; // as fn4
|
|
||||||
char* text_pointer; // 4096 ?
|
|
||||||
char* work_area_pointer; // 4096 ?
|
|
||||||
uint32_t temp_text_length;
|
|
||||||
} __attribute__ ((__packed__)) pathview;
|
|
||||||
|
|
||||||
extern void (*path_show_prepare __attribute__((__stdcall__)))(pathview *);
|
|
||||||
extern void (*path_show_draw __attribute__((__stdcall__)))(pathview *);
|
|
||||||
|
|
||||||
// PROGRESSBAR
|
|
||||||
typedef struct {
|
|
||||||
unsigned int value;
|
|
||||||
unsigned int left;
|
|
||||||
unsigned int top;
|
|
||||||
unsigned int width;
|
|
||||||
unsigned int height;
|
|
||||||
unsigned int style;
|
|
||||||
unsigned int min;
|
|
||||||
unsigned int max;
|
|
||||||
unsigned int back_color;
|
|
||||||
unsigned int progress_color;
|
|
||||||
unsigned int frame_color;
|
|
||||||
} progressbar;
|
|
||||||
|
|
||||||
extern void (*progressbar_draw __attribute__((__stdcall__)))(progressbar *);
|
|
||||||
extern void (*progressbar_progress __attribute__((__stdcall__)))(progressbar *);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* KOLIBRI_BOXLIB_H */
|
|
@ -1,83 +0,0 @@
|
|||||||
#ifndef KOLIBRI_BUF2D_H
|
|
||||||
#define KOLIBRI_BUF2D_H
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
/*ToDo
|
|
||||||
* voxel function
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern int kolibri_buf2d_init(void);
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
unsigned int *buf_pointer;
|
|
||||||
uint16_t left;
|
|
||||||
uint16_t top;
|
|
||||||
unsigned int width;
|
|
||||||
unsigned int height;
|
|
||||||
unsigned int bgcolor;
|
|
||||||
uint8_t color_bit;
|
|
||||||
} __attribute__ ((__packed__))buf2d_struct;
|
|
||||||
|
|
||||||
enum BUF2D_ALGORITM_FILTR {
|
|
||||||
SIERRA_LITE,
|
|
||||||
FLOYD_STEINBERG,
|
|
||||||
BURKERS,
|
|
||||||
HEAVYIRON_MOD,
|
|
||||||
ATKINSON
|
|
||||||
};
|
|
||||||
|
|
||||||
enum BUF2D_OPT_CROP {
|
|
||||||
BUF2D_OPT_CROP_TOP = 1,
|
|
||||||
BUF2D_OPT_CROP_LEFT = 2,
|
|
||||||
BUF2D_OPT_CROP_BOTTOM = 4,
|
|
||||||
BUF2D_OPT_CROP_RIGHT = 8
|
|
||||||
};
|
|
||||||
|
|
||||||
extern void (*buf2d_create_asm __attribute__((__stdcall__)))(buf2d_struct *);
|
|
||||||
extern void (*buf2d_curve_bezier_asm __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int);
|
|
||||||
|
|
||||||
buf2d_struct* buf2d_create(uint16_t tlx, uint16_t tly, unsigned int sizex, unsigned int sizey, unsigned int font_bgcolor, uint8_t color_bit)
|
|
||||||
{
|
|
||||||
buf2d_struct *new_buf2d_struct = (buf2d_struct *)malloc(sizeof(buf2d_struct));
|
|
||||||
new_buf2d_struct -> left = tlx;
|
|
||||||
new_buf2d_struct -> top = tly;
|
|
||||||
new_buf2d_struct -> width = sizex;
|
|
||||||
new_buf2d_struct -> height = sizey;
|
|
||||||
new_buf2d_struct -> bgcolor = font_bgcolor;
|
|
||||||
new_buf2d_struct -> color_bit = color_bit;
|
|
||||||
buf2d_create_asm(new_buf2d_struct);
|
|
||||||
return new_buf2d_struct;
|
|
||||||
}
|
|
||||||
|
|
||||||
void buf2d_curve_bezier(buf2d_struct *buf, unsigned int p0_x, unsigned int p0_y, unsigned int p1_x, unsigned int p1_y, unsigned int p2_x, unsigned int p2_y, unsigned int color)
|
|
||||||
{
|
|
||||||
buf2d_curve_bezier_asm(buf, (p0_x<<16)+p0_y, (p1_x<<16)+p1_y, (p2_x<<16)+p2_y, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern void (*buf2d_draw __attribute__((__stdcall__)))(buf2d_struct *);
|
|
||||||
extern void (*buf2d_clear __attribute__((__stdcall__)))(buf2d_struct *, unsigned int);
|
|
||||||
extern void (*buf2d_delete __attribute__((__stdcall__)))(buf2d_struct *);
|
|
||||||
extern void (*buf2d_rotate __attribute__((__stdcall__)))(buf2d_struct *, unsigned int);
|
|
||||||
extern void (*buf2d_resize __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int, unsigned int);
|
|
||||||
extern void (*buf2d_line __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
|
|
||||||
extern void (*buf2d_line_sm __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int);
|
|
||||||
extern void (*buf2d_rect_by_size __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
|
|
||||||
extern void (*buf2d_filled_rect_by_size __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
|
|
||||||
extern void (*buf2d_circle __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int);
|
|
||||||
extern void (*buf2d_img_hdiv2 __attribute__((__stdcall__)))(buf2d_struct *);
|
|
||||||
extern void (*buf2d_img_wdiv2 __attribute__((__stdcall__)))(buf2d_struct *);
|
|
||||||
extern void (*buf2d_conv_24_to_8 __attribute__((__stdcall__)))(buf2d_struct *, unsigned int);
|
|
||||||
extern void (*buf2d_conv_24_to_32 __attribute__((__stdcall__)))(buf2d_struct *, unsigned int);
|
|
||||||
extern void (*buf2d_bit_blt_transp __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int, buf2d_struct *);
|
|
||||||
extern void (*buf2d_bit_blt_alpha __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int, buf2d_struct *);
|
|
||||||
extern void (*buf2d_convert_text_matrix __attribute__((__stdcall__)))(buf2d_struct *);
|
|
||||||
extern void (*buf2d_draw_text __attribute__((__stdcall__)))(buf2d_struct *, buf2d_struct *, const char *, unsigned int, unsigned int);
|
|
||||||
extern void (*buf2d_crop_color __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int);
|
|
||||||
extern void (*buf2d_offset_h __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int, unsigned int);
|
|
||||||
extern void (*buf2d_flood_fill __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int);
|
|
||||||
extern void (*buf2d_set_pixel __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int, unsigned int);
|
|
||||||
extern unsigned int (*buf2d_get_pixel __attribute__((__stdcall__)))(buf2d_struct *, unsigned int, unsigned int);
|
|
||||||
extern void (*buf2d_flip_h __attribute__((__stdcall__)))(buf2d_struct *);
|
|
||||||
extern void (*buf2d_flip_v __attribute__((__stdcall__)))(buf2d_struct *);
|
|
||||||
extern void (*buf2d_filter_dither __attribute__((__stdcall__)))(buf2d_struct *, unsigned int);
|
|
||||||
#endif /* KOLIBRI_BUF2D_H */
|
|
@ -1,126 +0,0 @@
|
|||||||
#ifndef KOLIBRI_DIALOG_H
|
|
||||||
#define KOLIBRI_DIALOG_H
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#define NOT_SUCCESS 0
|
|
||||||
#define SUCCESS 1
|
|
||||||
|
|
||||||
char sz_com_area_name[] = "FFFFFFFF_open_dialog";
|
|
||||||
char sz_dir_default_path[] = "/sys";
|
|
||||||
char sz_start_path[] = "/sys/File managers/opendial";
|
|
||||||
|
|
||||||
char cd_com_area_name[] = "FFFFFFFF_color_dialog";
|
|
||||||
char cd_start_path[] = "/sys/colrdial";
|
|
||||||
|
|
||||||
enum open_dialog_mode {
|
|
||||||
OPEN,
|
|
||||||
SAVE,
|
|
||||||
SELECT
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
unsigned int size;
|
|
||||||
unsigned char end;
|
|
||||||
}od_filter __attribute__ ((__packed__));
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
unsigned int mode;
|
|
||||||
char* procinfo;
|
|
||||||
char* com_area_name;
|
|
||||||
unsigned int com_area;
|
|
||||||
char* opendir_path;
|
|
||||||
char* dir_default_path;
|
|
||||||
char* start_path;
|
|
||||||
void (*draw_window)();
|
|
||||||
unsigned int status;
|
|
||||||
char* openfile_path;
|
|
||||||
char* filename_area;
|
|
||||||
od_filter* filter_area;
|
|
||||||
unsigned short x_size;
|
|
||||||
unsigned short x_start;
|
|
||||||
unsigned short y_size;
|
|
||||||
unsigned short y_start;
|
|
||||||
}open_dialog __attribute__ ((__packed__));
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct{
|
|
||||||
unsigned int type;
|
|
||||||
char* procinfo;
|
|
||||||
char* com_area_name;
|
|
||||||
unsigned int com_area;
|
|
||||||
char* start_path;
|
|
||||||
void (*draw_window)(void);
|
|
||||||
unsigned int status;
|
|
||||||
unsigned short x_size;
|
|
||||||
unsigned short x_start;
|
|
||||||
unsigned short y_size;
|
|
||||||
unsigned short y_start;
|
|
||||||
unsigned int color_type;
|
|
||||||
unsigned int color;
|
|
||||||
}color_dialog __attribute__ ((__packed__));
|
|
||||||
|
|
||||||
void fake_on_redraw(void) {}
|
|
||||||
|
|
||||||
open_dialog* kolibri_new_open_dialog(unsigned int mode, unsigned short tlx, unsigned short tly, unsigned short x_size, unsigned short y_size)
|
|
||||||
{
|
|
||||||
open_dialog *new_opendialog = (open_dialog *)malloc(sizeof(open_dialog));
|
|
||||||
od_filter *new_od_filter = (od_filter *)malloc(sizeof(od_filter));
|
|
||||||
char *plugin_path = (char *)calloc(4096, sizeof(char));
|
|
||||||
char *openfile_path = (char *)calloc(4096, sizeof(char));
|
|
||||||
char *proc_info = (char *)calloc(1024, sizeof(char));
|
|
||||||
char *filename_area = (char *)calloc(256, sizeof(char));
|
|
||||||
|
|
||||||
new_od_filter -> size = 0;
|
|
||||||
new_od_filter -> end = 0;
|
|
||||||
|
|
||||||
new_opendialog -> mode = mode;
|
|
||||||
new_opendialog -> procinfo = proc_info;
|
|
||||||
new_opendialog -> com_area_name = sz_com_area_name;
|
|
||||||
new_opendialog -> com_area = 0;
|
|
||||||
new_opendialog -> opendir_path = plugin_path;
|
|
||||||
new_opendialog -> dir_default_path = sz_dir_default_path;
|
|
||||||
new_opendialog -> start_path = sz_start_path;
|
|
||||||
new_opendialog -> draw_window = &fake_on_redraw;
|
|
||||||
new_opendialog -> status = 0;
|
|
||||||
new_opendialog -> openfile_path = openfile_path;
|
|
||||||
new_opendialog -> filename_area = filename_area;
|
|
||||||
new_opendialog -> filter_area = new_od_filter;
|
|
||||||
new_opendialog -> x_size = x_size;
|
|
||||||
new_opendialog -> x_start = tlx;
|
|
||||||
new_opendialog -> y_size = y_size;
|
|
||||||
new_opendialog -> y_start = tly;
|
|
||||||
return new_opendialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
void cd_fake_on_redraw(void) {}
|
|
||||||
|
|
||||||
color_dialog* kolibri_new_color_dialog(unsigned int type, unsigned short tlx, unsigned short tly, unsigned short x_size, unsigned short y_size)
|
|
||||||
{
|
|
||||||
color_dialog *new_colordialog = (color_dialog *)malloc(sizeof(color_dialog));
|
|
||||||
char *proc_info = (char *)calloc(1024, sizeof(char));
|
|
||||||
|
|
||||||
new_colordialog -> type = type;
|
|
||||||
new_colordialog -> procinfo = proc_info;
|
|
||||||
new_colordialog -> com_area_name = cd_com_area_name;
|
|
||||||
new_colordialog -> com_area = 0;
|
|
||||||
new_colordialog -> start_path = cd_start_path;
|
|
||||||
new_colordialog -> draw_window = &cd_fake_on_redraw;
|
|
||||||
new_colordialog -> status = 0;
|
|
||||||
new_colordialog -> x_size = x_size;
|
|
||||||
new_colordialog -> x_start = tlx;
|
|
||||||
new_colordialog -> y_size = y_size;
|
|
||||||
new_colordialog -> y_start = tly;
|
|
||||||
new_colordialog -> color_type = 0;
|
|
||||||
new_colordialog -> color = 0;
|
|
||||||
return new_colordialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
extern void kolibri_dialog_init();
|
|
||||||
|
|
||||||
extern void (*OpenDialog_init __attribute__((__stdcall__)))(open_dialog *);
|
|
||||||
extern void (*OpenDialog_start __attribute__((__stdcall__)))(open_dialog *);
|
|
||||||
|
|
||||||
extern void (*ColorDialog_init __attribute__((__stdcall__)))(color_dialog *);
|
|
||||||
extern void (*ColorDialog_start __attribute__((__stdcall__)))(color_dialog *);
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,19 +0,0 @@
|
|||||||
|
|
||||||
#pragma pack(push, 1)
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int w;
|
|
||||||
int h;
|
|
||||||
char *bmp;
|
|
||||||
char *alpha;
|
|
||||||
} GB_BMP;
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
void gb_pixel_set(GB_BMP *b, int x, int y, unsigned c);
|
|
||||||
int gb_pixel_get(GB_BMP *b, int x, int y, unsigned *c);
|
|
||||||
void gb_line(GB_BMP *b, int x1, int y1, int x2, int y2, unsigned c);
|
|
||||||
void gb_rect(GB_BMP *b, int x, int y, int w, int h, unsigned c);
|
|
||||||
void gb_bar(GB_BMP *b, int x, int y, int w, int h, unsigned c);
|
|
||||||
void gb_circle(GB_BMP *b, int x, int y, int r, unsigned c);
|
|
||||||
void gb_image_set(GB_BMP *b_dest, int x_d, int y_d, GB_BMP *b_src, int x_s, int y_s, int w, int h);
|
|
||||||
void gb_image_set_t(GB_BMP *b_dest, int x_d, int y_d, GB_BMP *b_src, int x_s, int y_s, int w, int h, unsigned c);
|
|
@ -1,153 +0,0 @@
|
|||||||
/*
|
|
||||||
This is adapded thunk for http.obj sys library
|
|
||||||
.h is equal to svn:\\programs\develop\libraries\http\http_en.txt
|
|
||||||
|
|
||||||
Adapted for TCC's dynamic API by Magomed Kostoev, 2020
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _HTTP_H_
|
|
||||||
#define _HTTP_H_
|
|
||||||
|
|
||||||
#define cdecl __attribute__ ((cdecl))
|
|
||||||
#define stdcall __attribute__ ((stdcall))
|
|
||||||
|
|
||||||
// Bitflags for http_msg.flags
|
|
||||||
// status
|
|
||||||
|
|
||||||
#define HTTP_FLAG_HTTP11 1 << 0
|
|
||||||
#define HTTP_FLAG_GOT_HEADER 1 << 1
|
|
||||||
#define HTTP_FLAG_GOT_ALL_DATA 1 << 2
|
|
||||||
#define HTTP_FLAG_CONTENT_LENGTH 1 << 3
|
|
||||||
#define HTTP_FLAG_CHUNKED 1 << 4
|
|
||||||
#define HTTP_FLAG_CONNECTED 1 << 5
|
|
||||||
|
|
||||||
// user options
|
|
||||||
#define HTTP_FLAG_KEEPALIVE 1 << 8
|
|
||||||
#define HTTP_FLAG_STREAM 1 << 9
|
|
||||||
#define HTTP_FLAG_REUSE_BUFFER 1 << 10
|
|
||||||
#define HTTP_FLAG_BLOCK 1 << 11
|
|
||||||
|
|
||||||
// error
|
|
||||||
#define HTTP_FLAG_INVALID_HEADER 1 << 16
|
|
||||||
#define HTTP_FLAG_NO_RAM 1 << 17
|
|
||||||
#define HTTP_FLAG_SOCKET_ERROR 1 << 18
|
|
||||||
#define HTTP_FLAG_TIMEOUT_ERROR 1 << 19
|
|
||||||
#define HTTP_FLAG_TRANSFER_FAILED 1 << 20
|
|
||||||
|
|
||||||
/*
|
|
||||||
User flags:
|
|
||||||
|
|
||||||
For the flag codes themselves, see http.inc file.
|
|
||||||
|
|
||||||
FLAG_KEEPALIVE will keep the connection open after first GET/POST/.. so you can send a second request on the same TCP session.
|
|
||||||
In this case, the session must be closed manually when done by using the exported disconnect() function.
|
|
||||||
|
|
||||||
FLAG_STREAM will force receive() to put the received content in a series of fixed size buffers, instead of everything in one big buffer.
|
|
||||||
This can be used for example to receive an internet radio stream,
|
|
||||||
but also to download larger files for which it does not make sense to put them completely in RAM first.
|
|
||||||
|
|
||||||
FLAG_REUSE_BUFFER is to be used in combination with FLAG_STREAM and will make receive() function re-use the same buffer.
|
|
||||||
This, for example, can be used when downloading a file straight to disk.
|
|
||||||
|
|
||||||
FLAG_BLOCK will make receive() function blocking. This is only to be used when receiving one file from a thread that has no other work.
|
|
||||||
If however, you want to receive multiple files, or do other things in the program mainloop, you should call the receive function periodically.
|
|
||||||
You may use system function 10 or 23 to wait for network event before calling one or more receive() functions.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma pack(push,1)
|
|
||||||
typedef struct http_msg_s {
|
|
||||||
unsigned socket; // socket on which the actual transfer happens
|
|
||||||
unsigned flags; // flags, reflects status of the transfer using bitflags
|
|
||||||
unsigned write_ptr; // internal use only (where to write new data in buffer)
|
|
||||||
unsigned buffer_length; // internal use only (number of available bytes in buffer)
|
|
||||||
unsigned chunk_ptr; // internal use only (where the next chunk begins)
|
|
||||||
unsigned timestamp; // internal use only (when last data was received)
|
|
||||||
unsigned status; // HTTP status
|
|
||||||
unsigned header_length; // length of HTTP header
|
|
||||||
void * content_ptr; // ptr to content
|
|
||||||
unsigned content_length; // total length of HTTP content
|
|
||||||
unsigned content_received; // number of currently received content bytes
|
|
||||||
char * http_header;
|
|
||||||
} http_msg;
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
/*
|
|
||||||
url = pointer to ASCIIZ URL
|
|
||||||
identifier = identifier of previously opened connection (keep-alive), or 0 to open a new one.
|
|
||||||
flags = bit flags (see end of this document).
|
|
||||||
add_header = pointer to ASCIIZ additional header parameters, or null for none.
|
|
||||||
Every additional parameter must end with CR LF bytes, including the last line.
|
|
||||||
Initiates a HTTP connection, using 'GET' method.
|
|
||||||
Returns NULL on error, identifier otherwise.
|
|
||||||
*/
|
|
||||||
extern http_msg * stdcall (*http_get)(const char *url, http_msg *identifier, unsigned flags, const char *add_header);
|
|
||||||
|
|
||||||
/*
|
|
||||||
url = pointer to ASCIIZ URL
|
|
||||||
identifier = identifier of previously opened connection (keep-alive), or 0 to open a new one.
|
|
||||||
flags = bit flags (see end of this document).
|
|
||||||
add_header = pointer to ASCIIZ additional header parameters, or null for none.
|
|
||||||
Every additional parameter must end with CR LF bytes, including the last line.
|
|
||||||
Initiate a HTTP connection, using 'HEAD' method.
|
|
||||||
Returns NULL on error, identifier otherwise.
|
|
||||||
*/
|
|
||||||
extern http_msg * stdcall (*http_head)(const char *url, http_msg *identifier, unsigned flags, const char *add_header);
|
|
||||||
|
|
||||||
/*
|
|
||||||
url = pointer to ASCIIZ URL
|
|
||||||
identifier = identifier of previously opened connection (keep-alive), or 0 to open a new one.
|
|
||||||
flags = bit flags (see end of this document).
|
|
||||||
add_header = pointer to ASCIIZ additional header parameters, or null for none.
|
|
||||||
Every additional parameter must end with CR LF bytes, including the last line.
|
|
||||||
content-type = pointer to ASCIIZ string containing content type.
|
|
||||||
content-length = length of the content (in bytes).
|
|
||||||
Initiate a HTTP connection, using 'POST' method.
|
|
||||||
The content itself must be send to the socket (which you can find in the structure),
|
|
||||||
using system function 75, 6.
|
|
||||||
Returns 0 on error, identifier otherwise
|
|
||||||
*/
|
|
||||||
extern http_msg * stdcall (*http_post)(const char *url, http_msg *identifier, unsigned flags, const char *add_header,
|
|
||||||
const char *content_type, unsigned content_length);
|
|
||||||
|
|
||||||
/*
|
|
||||||
identifier = identifier which one of the previous functions returned
|
|
||||||
This procedure will handle all incoming data for a connection and place it in the buffer.
|
|
||||||
As long as the procedure expects more data, -1 is returned and the procedure must be called again.
|
|
||||||
When transfer is done, the procedure will return 0.
|
|
||||||
The receive procedure is non-blocking by default, but can be made to block by setting FLAG_BLOCK.
|
|
||||||
|
|
||||||
The HTTP header is placed together with some flags and other attributes in the http_msg structure.
|
|
||||||
This structure is defined in http.inc (and not copied here because it might still change.)
|
|
||||||
The identifier used by the functions is actually a pointer to this structure.
|
|
||||||
In the dword named .flags, the library will set various bit-flags indicating the status of the process.
|
|
||||||
(When a transfer is done, one should check these bit-flags to find out if the transfer was error-free.)
|
|
||||||
The HTTP header is placed at the end of this structure. The content is placed in another buffer.
|
|
||||||
The dword .status contains the status code received from the server (e.g. 200 for OK).
|
|
||||||
In header_length you'll find the length of the header as soon as it has been received.
|
|
||||||
In content_ptr you'll find a pointer to the actual content.
|
|
||||||
In content_length you'll find the length of the content.
|
|
||||||
In content_received, you'll find the number of content bytes already received.
|
|
||||||
*/
|
|
||||||
extern int stdcall (*http_receive)(http_msg *identifier);
|
|
||||||
|
|
||||||
/*
|
|
||||||
identifier = identifier which one of the previous functions returned
|
|
||||||
dataptr = pointer to the data you want to send
|
|
||||||
datalength = length of the data to send (in bytes)
|
|
||||||
This procedure can be used to send data to the server (POST)
|
|
||||||
Returns number of bytes sent, -1 on error
|
|
||||||
*/
|
|
||||||
extern int stdcall (*http_send)(http_msg *identifier, void *dataptr, unsigned datalength);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Sometimes the http_receive function receives incomplete data. If you have the same problem then a macro can help you:
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern int stdcall (*http_free)(http_msg *identifier);
|
|
||||||
/*
|
|
||||||
Free unused data
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define http_long_receive(x) while(http_receive(x)){};
|
|
||||||
|
|
||||||
#endif // _HTTP_H_
|
|
@ -1,17 +0,0 @@
|
|||||||
/*
|
|
||||||
This is wrapper for Inputbox.obj sys library
|
|
||||||
https://board.kolibrios.org/viewtopic.php?f=24&t=3767&sid=fd2ca95b24eec430db0c61d977f5d8ba#p71585
|
|
||||||
|
|
||||||
Adapted for TCC's dynamic API by Magomed Kostoev, 2020
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __KOS__INPUTBOX__H________
|
|
||||||
#define __KOS__INPUTBOX__H________
|
|
||||||
|
|
||||||
#define cdecl __attribute__ ((cdecl))
|
|
||||||
#define stdcall __attribute__ ((stdcall))
|
|
||||||
|
|
||||||
extern unsigned stdcall (*InputBox)(void* Buffer, char* Caption, char* Prompt, char* Default,
|
|
||||||
unsigned long Flags, unsigned long BufferSize, void* RedrawProc);
|
|
||||||
|
|
||||||
#endif // __KOS__INPUTBOX__H________
|
|
@ -1,126 +0,0 @@
|
|||||||
/* Written by turbocat2001 (Logaev Maxim) */
|
|
||||||
|
|
||||||
#ifndef KOLIBRI_LIBIMG_H
|
|
||||||
#define KOLIBRI_LIBIMG_H
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
extern int kolibri_libimg_init(void);
|
|
||||||
|
|
||||||
#define _stdcall __attribute__((__stdcall__))
|
|
||||||
|
|
||||||
//list of format id's
|
|
||||||
#define LIBIMG_FORMAT_BMP 1
|
|
||||||
#define LIBIMG_FORMAT_ICO 2
|
|
||||||
#define LIBIMG_FORMAT_CUR 3
|
|
||||||
#define LIBIMG_FORMAT_GIF 4
|
|
||||||
#define LIBIMG_FORMAT_PNG 5
|
|
||||||
#define LIBIMG_FORMAT_JPEG 6
|
|
||||||
#define LIBIMG_FORMAT_TGA 7
|
|
||||||
#define LIBIMG_FORMAT_PCX 8
|
|
||||||
#define LIBIMG_FORMAT_XCF 9
|
|
||||||
#define LIBIMG_FORMAT_TIFF 10
|
|
||||||
#define LIBIMG_FORMAT_PNM 11
|
|
||||||
#define LIBIMG_FORMAT_WBMP 12
|
|
||||||
#define LIBIMG_FORMAT_XBM 13
|
|
||||||
#define LIBIMG_FORMAT_Z80 14
|
|
||||||
|
|
||||||
#pragma pack(push, 1)
|
|
||||||
typedef struct{
|
|
||||||
uint32_t Checksum; // ((Width ROL 16) OR Height) XOR Data[0] ; ignored so far
|
|
||||||
uint32_t Width;
|
|
||||||
uint32_t Height;
|
|
||||||
uint32_t Next;
|
|
||||||
uint32_t Previous;
|
|
||||||
uint32_t Type; // one of Image.bppN
|
|
||||||
uint32_t* Data;
|
|
||||||
uint32_t Palette; // used iff Type eq Image.bpp1, Image.bpp2, Image.bpp4 or Image.bpp8i
|
|
||||||
uint32_t Extended;
|
|
||||||
uint32_t Flags; // bitfield
|
|
||||||
uint32_t Delay; // used iff Image.IsAnimated is set in Flags
|
|
||||||
} Image;
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
#define IMAGE_BPP8i 1 // indexed
|
|
||||||
#define IMAGE_BPP24 2
|
|
||||||
#define IMAGE_BPP32 3
|
|
||||||
#define IMAGE_BPP15 4
|
|
||||||
#define IMAGE_BPP16 5
|
|
||||||
#define IMAGE_BPP1 6
|
|
||||||
#define IMAGE_BPP8g 7 // grayscale
|
|
||||||
#define IMAGE_BPP2i 8
|
|
||||||
#define IMAGE_BPP4i 9
|
|
||||||
#define IMAGE_BPP8a 10
|
|
||||||
|
|
||||||
// scale type
|
|
||||||
#define LIBIMG_SCALE_NONE 0
|
|
||||||
#define LIBIMG_SCALE_INTEGER 1
|
|
||||||
#define LIBIMG_SCALE_TILE 2
|
|
||||||
#define LIBIMG_SCALE_STRETCH 3
|
|
||||||
#define LIBIMG_SCALE_FIT_BOTH LIBIMG_SCALE_STRETCH
|
|
||||||
#define LIBIMG_SCALE_FIT_MIN 4
|
|
||||||
#define LIBIMG_SCALE_FIT_RECT LIBIMG_SCALE_FIT_MIN
|
|
||||||
#define LIBIMG_SCALE_FIT_WIDTH 5
|
|
||||||
#define LIBIMG_SCALE_FIT_HEIGHT 6
|
|
||||||
#define LIBIMG_SCALE_FIT_MAX 7
|
|
||||||
|
|
||||||
// interpolation algorithm
|
|
||||||
#define LIBIMG_INTER_NONE 0 // use it with LIBIMG_SCALE_INTEGER, LIBIMG_SCALE_TILE, etc
|
|
||||||
#define LIBIMG_INTER_BILINEAR 1
|
|
||||||
#define LIBIMG_INTER_BICUBIC 2
|
|
||||||
#define LIBIMG_INTER_LANCZOS 3
|
|
||||||
#define LIBIMG_INTER_DEFAULT LIBIMG_INTER_BILINEAR
|
|
||||||
|
|
||||||
//error codes
|
|
||||||
#define LIBIMG_ERROR_OUT_OF_MEMORY 1
|
|
||||||
#define LIBIMG_ERROR_FORMAT 2
|
|
||||||
#define LIBIMG_ERROR_CONDITIONS 3
|
|
||||||
#define LIBIMG_ERROR_BIT_DEPTH 4
|
|
||||||
#define LIBIMG_ERROR_ENCODER 5
|
|
||||||
#define LIBIMG_ERROR_SRC_TYPE 6
|
|
||||||
#define LIBIMG_ERROR_SCALE 7
|
|
||||||
#define LIBIMG_ERROR_INTER 8
|
|
||||||
#define LIBIMG_ERROR_NOT_INPLEMENTED 9
|
|
||||||
#define LIBIMG_ERROR_INVALID_INPUT 10
|
|
||||||
|
|
||||||
//encode flags (byte 0x02 of _common option)
|
|
||||||
#define LIBIMG_ENCODE_STRICT_SPECIFIC 0x01
|
|
||||||
#define LIBIMG_ENCODE_STRICT_BIT_DEPTH 0x02
|
|
||||||
#define LIBIMG_ENCODE_DELETE_ALPHA 0x08
|
|
||||||
#define LIBIMG_ENCODE_FLUSH_ALPHA 0x10
|
|
||||||
|
|
||||||
#define FLIP_VERTICAL 0x01
|
|
||||||
#define FLIP_HORIZONTAL 0x02
|
|
||||||
|
|
||||||
#define ROTATE_90_CW 0x01
|
|
||||||
#define ROTATE_180 0x02
|
|
||||||
#define ROTATE_270_CW 0x03
|
|
||||||
#define ROTATE_90_CCW ROTATE_270_CW
|
|
||||||
#define ROTATE_270_CCW ROTATE_90_CW
|
|
||||||
|
|
||||||
extern Image* (*img_decode _stdcall)(void* file_data, uint32_t size, uint32_t b_color);
|
|
||||||
extern Image* (*img_encode _stdcall)(Image* img, uint32_t length, uint32_t option);
|
|
||||||
extern Image* (*img_create _stdcall)(uint32_t width, uint32_t height, uint32_t type);
|
|
||||||
extern void (*img_to_rgb2 _stdcall)(Image* img, void *rgb_data);
|
|
||||||
extern Image* (*img_to_rgb _stdcall)(Image* img);
|
|
||||||
extern bool (*img_flip _stdcall)(Image* img, uint32_t flip);
|
|
||||||
extern bool (*img_flip_layer _stdcall)(Image *img, uint32_t flip);
|
|
||||||
extern bool (*img_rotate _stdcall)(Image *img, uint32_t rotate);
|
|
||||||
extern bool (*img_rotate_layer _stdcall)(Image* data, uint32_t rotate);
|
|
||||||
extern void (*img_draw _stdcall)(Image *img, uint32_t x, uint32_t y, uint32_t w, uint32_t h, uint32_t xoff, uint32_t yoff);
|
|
||||||
extern int32_t (*img_count _stdcall)(Image *img);
|
|
||||||
extern bool (*img_destroy _stdcall)(Image *img);
|
|
||||||
extern bool (*img_destroy_layer _stdcall)(Image* img);
|
|
||||||
extern Image* (*img_blend _stdcall)(Image* dst, Image* src, uint32_t out_x, uint32_t out_y, uint32_t in_x, uint32_t in_y, uint32_t width, uint32_t height);
|
|
||||||
extern Image* (*img_convert _stdcall)(Image *src, Image *dst, uint32_t dst_type, uint32_t, uint32_t);
|
|
||||||
extern Image* (*img_resize_data _stdcall)(Image *src, uint32_t width, uint32_t height);
|
|
||||||
extern Image* (*img_scale _stdcall)(Image* src, uint32_t crop_x, uint32_t crop_y, uint32_t crop_width, uint32_t crop_height, Image* dst, uint32_t scale_type, uint32_t inter, uint32_t new_width, uint32_t new_height);
|
|
||||||
|
|
||||||
void img_fill_color(Image* img, uint32_t width, uint32_t height, uint32_t color){
|
|
||||||
for (uint32_t i = 0; i < width*height; i++) {
|
|
||||||
img->Data[i] = color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* KOLIBRI_LIBIMG_H */
|
|
@ -1,55 +0,0 @@
|
|||||||
#ifndef KOLIBRI_MSGBOX_H
|
|
||||||
#define KOLIBRI_MSGBOX_H
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint8_t retval; // 0 - win closed, 1 to n - button num, also default button on start
|
|
||||||
uint8_t reserv;
|
|
||||||
char texts[2048]; // must be enough ;-)
|
|
||||||
char msgbox_stack[1024];
|
|
||||||
uint32_t top_stack;
|
|
||||||
}__attribute__((packed)) msgbox;
|
|
||||||
|
|
||||||
typedef void (*msgbox_callback)(void);
|
|
||||||
|
|
||||||
extern void (*msgbox_create __attribute__((__stdcall__)))(msgbox *, void *thread); // clears callbacks, ! if fix lib, we can return eax as of Fn51
|
|
||||||
extern void (*msgbox_setfunctions __attribute__((__stdcall__)))(msgbox_callback*); // must be called immediately after create, zero-ended array
|
|
||||||
extern void (*msgbox_reinit __attribute__((__stdcall__)))(msgbox *) ; // recalc sizes when structure changes, called auto when MsgBoxCreate
|
|
||||||
|
|
||||||
static inline msgbox* kolibri_new_msgbox(char* title, char* text, int def_but, ...)
|
|
||||||
/// text can be multilined by code 13 = "\r"
|
|
||||||
/// def_but - highlighted and used on Enter (if zero - default is [X]), user may use Tabs or Arrows
|
|
||||||
/// last params are buttons text, max 8. last must set as NULL
|
|
||||||
{
|
|
||||||
va_list vl=0;
|
|
||||||
va_start(vl, def_but);
|
|
||||||
msgbox* box = calloc(sizeof(msgbox), 1);
|
|
||||||
box->retval = (uint8_t)def_but;
|
|
||||||
char *pc = box->texts;
|
|
||||||
strcpy(pc, title);
|
|
||||||
pc += strlen(title) + 1;
|
|
||||||
strcpy(pc, text);
|
|
||||||
pc += strlen(text) + 1;
|
|
||||||
char *but_text = va_arg(vl, char*);
|
|
||||||
while (but_text)
|
|
||||||
{
|
|
||||||
strcpy(pc, but_text);
|
|
||||||
pc += strlen(but_text) + 1;
|
|
||||||
but_text = va_arg(vl, char*);
|
|
||||||
}
|
|
||||||
|
|
||||||
va_end(vl);
|
|
||||||
return box;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void kolibri_start_msgbox(msgbox* box, msgbox_callback cb[])
|
|
||||||
{
|
|
||||||
(*msgbox_create)(box, &box->top_stack);
|
|
||||||
if (cb) (*msgbox_setfunctions)(cb);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,11 +0,0 @@
|
|||||||
#ifndef KOLIBRI_RASTERWORKS_H
|
|
||||||
#define KOLIBRI_RASTERWORKS_H
|
|
||||||
|
|
||||||
//extern int kolibri_rasterworks_init(void);
|
|
||||||
|
|
||||||
extern void (*drawText __attribute__((__stdcall__)))(void *canvas, int x, int y, const char *string, int charQuantity, int fontColor, int params);
|
|
||||||
extern int (*countUTF8Z __attribute__((__stdcall__)))(const char *string, int byteQuantity);
|
|
||||||
extern int (*charsFit __attribute__((__stdcall__)))(int areaWidth, int charHeight);
|
|
||||||
extern int (*strWidth __attribute__((__stdcall__)))(int charQuantity, int charHeight);
|
|
||||||
|
|
||||||
#endif /* KOLIBRI_RASTERWORKS_H */
|
|
@ -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[<number1>;<number2>;<number3>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[<number1>;<number2>H = Esc[<number1>;<number2>f -
|
|
||||||
move cursor to <number1>,<number2>
|
|
||||||
Esc[<number>A - move cursor to <number> lines up
|
|
||||||
Esc[<number>B - move cursor to <number> lines down
|
|
||||||
Esc[<number>C - move cursor to <number> positions right
|
|
||||||
Esc[<number>D - move cursor to <number> 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
|
|
@ -1,123 +0,0 @@
|
|||||||
/*********************************************************************
|
|
||||||
* Filename: aes.h
|
|
||||||
* Author: Brad Conte (brad AT bradconte.com)
|
|
||||||
* Copyright:
|
|
||||||
* Disclaimer: This code is presented "as is" without any guarantees.
|
|
||||||
* Details: Defines the API for the corresponding AES implementation.
|
|
||||||
*********************************************************************/
|
|
||||||
|
|
||||||
#ifndef AES_H
|
|
||||||
#define AES_H
|
|
||||||
|
|
||||||
/*************************** HEADER FILES ***************************/
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
/****************************** MACROS ******************************/
|
|
||||||
#define AES_BLOCK_SIZE 16 // AES operates on 16 bytes at a time
|
|
||||||
|
|
||||||
/**************************** DATA TYPES ****************************/
|
|
||||||
typedef unsigned char BYTE; // 8-bit byte
|
|
||||||
typedef unsigned int WORD; // 32-bit word, change to "long" for 16-bit machines
|
|
||||||
|
|
||||||
/*********************** FUNCTION DECLARATIONS **********************/
|
|
||||||
///////////////////
|
|
||||||
// AES
|
|
||||||
///////////////////
|
|
||||||
// Key setup must be done before any AES en/de-cryption functions can be used.
|
|
||||||
void aes_key_setup(const BYTE key[], // The key, must be 128, 192, or 256 bits
|
|
||||||
WORD w[], // Output key schedule to be used later
|
|
||||||
int keysize); // Bit length of the key, 128, 192, or 256
|
|
||||||
|
|
||||||
void aes_encrypt(const BYTE in[], // 16 bytes of plaintext
|
|
||||||
BYTE out[], // 16 bytes of ciphertext
|
|
||||||
const WORD key[], // From the key setup
|
|
||||||
int keysize); // Bit length of the key, 128, 192, or 256
|
|
||||||
|
|
||||||
void aes_decrypt(const BYTE in[], // 16 bytes of ciphertext
|
|
||||||
BYTE out[], // 16 bytes of plaintext
|
|
||||||
const WORD key[], // From the key setup
|
|
||||||
int keysize); // Bit length of the key, 128, 192, or 256
|
|
||||||
|
|
||||||
///////////////////
|
|
||||||
// AES - CBC
|
|
||||||
///////////////////
|
|
||||||
int aes_encrypt_cbc(const BYTE in[], // Plaintext
|
|
||||||
size_t in_len, // Must be a multiple of AES_BLOCK_SIZE
|
|
||||||
BYTE out[], // Ciphertext, same length as plaintext
|
|
||||||
const WORD key[], // From the key setup
|
|
||||||
int keysize, // Bit length of the key, 128, 192, or 256
|
|
||||||
const BYTE iv[]); // IV, must be AES_BLOCK_SIZE bytes long
|
|
||||||
|
|
||||||
// Only output the CBC-MAC of the input.
|
|
||||||
int aes_encrypt_cbc_mac(const BYTE in[], // plaintext
|
|
||||||
size_t in_len, // Must be a multiple of AES_BLOCK_SIZE
|
|
||||||
BYTE out[], // Output MAC
|
|
||||||
const WORD key[], // From the key setup
|
|
||||||
int keysize, // Bit length of the key, 128, 192, or 256
|
|
||||||
const BYTE iv[]); // IV, must be AES_BLOCK_SIZE bytes long
|
|
||||||
|
|
||||||
///////////////////
|
|
||||||
// AES - CTR
|
|
||||||
///////////////////
|
|
||||||
void increment_iv(BYTE iv[], // Must be a multiple of AES_BLOCK_SIZE
|
|
||||||
int counter_size); // Bytes of the IV used for counting (low end)
|
|
||||||
|
|
||||||
void aes_encrypt_ctr(const BYTE in[], // Plaintext
|
|
||||||
size_t in_len, // Any byte length
|
|
||||||
BYTE out[], // Ciphertext, same length as plaintext
|
|
||||||
const WORD key[], // From the key setup
|
|
||||||
int keysize, // Bit length of the key, 128, 192, or 256
|
|
||||||
const BYTE iv[]); // IV, must be AES_BLOCK_SIZE bytes long
|
|
||||||
|
|
||||||
void aes_decrypt_ctr(const BYTE in[], // Ciphertext
|
|
||||||
size_t in_len, // Any byte length
|
|
||||||
BYTE out[], // Plaintext, same length as ciphertext
|
|
||||||
const WORD key[], // From the key setup
|
|
||||||
int keysize, // Bit length of the key, 128, 192, or 256
|
|
||||||
const BYTE iv[]); // IV, must be AES_BLOCK_SIZE bytes long
|
|
||||||
|
|
||||||
///////////////////
|
|
||||||
// AES - CCM
|
|
||||||
///////////////////
|
|
||||||
// Returns True if the input parameters do not violate any constraint.
|
|
||||||
int aes_encrypt_ccm(const BYTE plaintext[], // IN - Plaintext.
|
|
||||||
WORD plaintext_len, // IN - Plaintext length.
|
|
||||||
const BYTE associated_data[], // IN - Associated Data included in authentication, but not encryption.
|
|
||||||
unsigned short associated_data_len, // IN - Associated Data length in bytes.
|
|
||||||
const BYTE nonce[], // IN - The Nonce to be used for encryption.
|
|
||||||
unsigned short nonce_len, // IN - Nonce length in bytes.
|
|
||||||
BYTE ciphertext[], // OUT - Ciphertext, a concatination of the plaintext and the MAC.
|
|
||||||
WORD *ciphertext_len, // OUT - The length of the ciphertext, always plaintext_len + mac_len.
|
|
||||||
WORD mac_len, // IN - The desired length of the MAC, must be 4, 6, 8, 10, 12, 14, or 16.
|
|
||||||
const BYTE key[], // IN - The AES key for encryption.
|
|
||||||
int keysize); // IN - The length of the key in bits. Valid values are 128, 192, 256.
|
|
||||||
|
|
||||||
// Returns True if the input parameters do not violate any constraint.
|
|
||||||
// Use mac_auth to ensure decryption/validation was preformed correctly.
|
|
||||||
// If authentication does not succeed, the plaintext is zeroed out. To overwride
|
|
||||||
// this, call with mac_auth = NULL. The proper proceedure is to decrypt with
|
|
||||||
// authentication enabled (mac_auth != NULL) and make a second call to that
|
|
||||||
// ignores authentication explicitly if the first call failes.
|
|
||||||
int aes_decrypt_ccm(const BYTE ciphertext[], // IN - Ciphertext, the concatination of encrypted plaintext and MAC.
|
|
||||||
WORD ciphertext_len, // IN - Ciphertext length in bytes.
|
|
||||||
const BYTE assoc[], // IN - The Associated Data, required for authentication.
|
|
||||||
unsigned short assoc_len, // IN - Associated Data length in bytes.
|
|
||||||
const BYTE nonce[], // IN - The Nonce to use for decryption, same one as for encryption.
|
|
||||||
unsigned short nonce_len, // IN - Nonce length in bytes.
|
|
||||||
BYTE plaintext[], // OUT - The plaintext that was decrypted. Will need to be large enough to hold ciphertext_len - mac_len.
|
|
||||||
WORD *plaintext_len, // OUT - Length in bytes of the output plaintext, always ciphertext_len - mac_len .
|
|
||||||
WORD mac_len, // IN - The length of the MAC that was calculated.
|
|
||||||
int *mac_auth, // OUT - TRUE if authentication succeeded, FALSE if it did not. NULL pointer will ignore the authentication.
|
|
||||||
const BYTE key[], // IN - The AES key for decryption.
|
|
||||||
int keysize); // IN - The length of the key in BITS. Valid values are 128, 192, 256.
|
|
||||||
|
|
||||||
///////////////////
|
|
||||||
// Test functions
|
|
||||||
///////////////////
|
|
||||||
int aes_test();
|
|
||||||
int aes_ecb_test();
|
|
||||||
int aes_cbc_test();
|
|
||||||
int aes_ctr_test();
|
|
||||||
int aes_ccm_test();
|
|
||||||
|
|
||||||
#endif // AES_H
|
|
@ -1,30 +0,0 @@
|
|||||||
/*********************************************************************
|
|
||||||
* Filename: arcfour.h
|
|
||||||
* Author: Brad Conte (brad AT bradconte.com)
|
|
||||||
* Copyright:
|
|
||||||
* Disclaimer: This code is presented "as is" without any guarantees.
|
|
||||||
* Details: Defines the API for the corresponding ARCFOUR implementation.
|
|
||||||
*********************************************************************/
|
|
||||||
|
|
||||||
#ifndef ARCFOUR_H
|
|
||||||
#define ARCFOUR_H
|
|
||||||
|
|
||||||
/*************************** HEADER FILES ***************************/
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
/**************************** DATA TYPES ****************************/
|
|
||||||
typedef unsigned char BYTE; // 8-bit byte
|
|
||||||
|
|
||||||
/*********************** FUNCTION DECLARATIONS **********************/
|
|
||||||
// Input: state - the state used to generate the keystream
|
|
||||||
// key - Key to use to initialize the state
|
|
||||||
// len - length of key in bytes (valid lenth is 1 to 256)
|
|
||||||
void arcfour_key_setup(BYTE state[], const BYTE key[], int len);
|
|
||||||
|
|
||||||
// Pseudo-Random Generator Algorithm
|
|
||||||
// Input: state - the state used to generate the keystream
|
|
||||||
// out - Must be allocated to be of at least "len" length
|
|
||||||
// len - number of bytes to generate
|
|
||||||
void arcfour_generate_stream(BYTE state[], BYTE out[], size_t len);
|
|
||||||
|
|
||||||
#endif // ARCFOUR_H
|
|
@ -1,27 +0,0 @@
|
|||||||
/*********************************************************************
|
|
||||||
* Filename: base64.h
|
|
||||||
* Author: Brad Conte (brad AT bradconte.com)
|
|
||||||
* Copyright:
|
|
||||||
* Disclaimer: This code is presented "as is" without any guarantees.
|
|
||||||
* Details: Defines the API for the corresponding Base64 implementation.
|
|
||||||
*********************************************************************/
|
|
||||||
|
|
||||||
#ifndef BASE64_H
|
|
||||||
#define BASE64_H
|
|
||||||
|
|
||||||
/*************************** HEADER FILES ***************************/
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
/**************************** DATA TYPES ****************************/
|
|
||||||
typedef unsigned char BYTE; // 8-bit byte
|
|
||||||
|
|
||||||
/*********************** FUNCTION DECLARATIONS **********************/
|
|
||||||
// Returns the size of the output. If called with out = NULL, will just return
|
|
||||||
// the size of what the output would have been (without a terminating NULL).
|
|
||||||
size_t base64_encode(const BYTE in[], BYTE out[], size_t len, int newline_flag);
|
|
||||||
|
|
||||||
// Returns the size of the output. If called with out = NULL, will just return
|
|
||||||
// the size of what the output would have been (without a terminating NULL).
|
|
||||||
size_t base64_decode(const BYTE in[], BYTE out[], size_t len);
|
|
||||||
|
|
||||||
#endif // BASE64_H
|
|
@ -1,32 +0,0 @@
|
|||||||
/*********************************************************************
|
|
||||||
* Filename: blowfish.h
|
|
||||||
* Author: Brad Conte (brad AT bradconte.com)
|
|
||||||
* Copyright:
|
|
||||||
* Disclaimer: This code is presented "as is" without any guarantees.
|
|
||||||
* Details: Defines the API for the corresponding Blowfish implementation.
|
|
||||||
*********************************************************************/
|
|
||||||
|
|
||||||
#ifndef BLOWFISH_H
|
|
||||||
#define BLOWFISH_H
|
|
||||||
|
|
||||||
/*************************** HEADER FILES ***************************/
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
/****************************** MACROS ******************************/
|
|
||||||
#define BLOWFISH_BLOCK_SIZE 8 // Blowfish operates on 8 bytes at a time
|
|
||||||
|
|
||||||
/**************************** DATA TYPES ****************************/
|
|
||||||
typedef unsigned char BYTE; // 8-bit byte
|
|
||||||
typedef unsigned int WORD; // 32-bit word, change to "long" for 16-bit machines
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
WORD p[18];
|
|
||||||
WORD s[4][256];
|
|
||||||
} BLOWFISH_KEY;
|
|
||||||
|
|
||||||
/*********************** FUNCTION DECLARATIONS **********************/
|
|
||||||
void blowfish_key_setup(const BYTE user_key[], BLOWFISH_KEY *keystruct, size_t len);
|
|
||||||
void blowfish_encrypt(const BYTE in[], BYTE out[], const BLOWFISH_KEY *keystruct);
|
|
||||||
void blowfish_decrypt(const BYTE in[], BYTE out[], const BLOWFISH_KEY *keystruct);
|
|
||||||
|
|
||||||
#endif // BLOWFISH_H
|
|
@ -1,37 +0,0 @@
|
|||||||
/*********************************************************************
|
|
||||||
* Filename: des.h
|
|
||||||
* Author: Brad Conte (brad AT bradconte.com)
|
|
||||||
* Copyright:
|
|
||||||
* Disclaimer: This code is presented "as is" without any guarantees.
|
|
||||||
* Details: Defines the API for the corresponding DES implementation.
|
|
||||||
Note that encryption and decryption are defined by how
|
|
||||||
the key setup is performed, the actual en/de-cryption is
|
|
||||||
performed by the same function.
|
|
||||||
*********************************************************************/
|
|
||||||
|
|
||||||
#ifndef DES_H
|
|
||||||
#define DESH
|
|
||||||
|
|
||||||
/*************************** HEADER FILES ***************************/
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
/****************************** MACROS ******************************/
|
|
||||||
#define DES_BLOCK_SIZE 8 // DES operates on 8 bytes at a time
|
|
||||||
|
|
||||||
/**************************** DATA TYPES ****************************/
|
|
||||||
typedef unsigned char BYTE; // 8-bit byte
|
|
||||||
typedef unsigned int WORD; // 32-bit word, change to "long" for 16-bit machines
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
DES_ENCRYPT,
|
|
||||||
DES_DECRYPT
|
|
||||||
} DES_MODE;
|
|
||||||
|
|
||||||
/*********************** FUNCTION DECLARATIONS **********************/
|
|
||||||
void des_key_setup(const BYTE key[], BYTE schedule[][6], DES_MODE mode);
|
|
||||||
void des_crypt(const BYTE in[], BYTE out[], const BYTE key[][6]);
|
|
||||||
|
|
||||||
void three_des_key_setup(const BYTE key[], BYTE schedule[][16][6], DES_MODE mode);
|
|
||||||
void three_des_crypt(const BYTE in[], BYTE out[], const BYTE key[][16][6]);
|
|
||||||
|
|
||||||
#endif // DES_H
|
|
@ -1,33 +0,0 @@
|
|||||||
/*********************************************************************
|
|
||||||
* Filename: md2.h
|
|
||||||
* Author: Brad Conte (brad AT bradconte.com)
|
|
||||||
* Copyright:
|
|
||||||
* Disclaimer: This code is presented "as is" without any guarantees.
|
|
||||||
* Details: Defines the API for the corresponding MD2 implementation.
|
|
||||||
*********************************************************************/
|
|
||||||
|
|
||||||
#ifndef MD2_H
|
|
||||||
#define MD2_H
|
|
||||||
|
|
||||||
/*************************** HEADER FILES ***************************/
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
/****************************** MACROS ******************************/
|
|
||||||
#define MD2_BLOCK_SIZE 16
|
|
||||||
|
|
||||||
/**************************** DATA TYPES ****************************/
|
|
||||||
typedef unsigned char BYTE; // 8-bit byte
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
BYTE data[16];
|
|
||||||
BYTE state[48];
|
|
||||||
BYTE checksum[16];
|
|
||||||
int len;
|
|
||||||
} MD2_CTX;
|
|
||||||
|
|
||||||
/*********************** FUNCTION DECLARATIONS **********************/
|
|
||||||
void md2_init(MD2_CTX *ctx);
|
|
||||||
void md2_update(MD2_CTX *ctx, const BYTE data[], size_t len);
|
|
||||||
void md2_final(MD2_CTX *ctx, BYTE hash[]); // size of hash must be MD2_BLOCK_SIZE
|
|
||||||
|
|
||||||
#endif // MD2_H
|
|
@ -1,34 +0,0 @@
|
|||||||
/*********************************************************************
|
|
||||||
* Filename: md5.h
|
|
||||||
* Author: Brad Conte (brad AT bradconte.com)
|
|
||||||
* Copyright:
|
|
||||||
* Disclaimer: This code is presented "as is" without any guarantees.
|
|
||||||
* Details: Defines the API for the corresponding MD5 implementation.
|
|
||||||
*********************************************************************/
|
|
||||||
|
|
||||||
#ifndef MD5_H
|
|
||||||
#define MD5_H
|
|
||||||
|
|
||||||
/*************************** HEADER FILES ***************************/
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
/****************************** MACROS ******************************/
|
|
||||||
#define MD5_BLOCK_SIZE 16 // MD5 outputs a 16 byte digest
|
|
||||||
|
|
||||||
/**************************** DATA TYPES ****************************/
|
|
||||||
typedef unsigned char BYTE; // 8-bit byte
|
|
||||||
typedef unsigned int WORD; // 32-bit word, change to "long" for 16-bit machines
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
BYTE data[64];
|
|
||||||
WORD datalen;
|
|
||||||
unsigned long long bitlen;
|
|
||||||
WORD state[4];
|
|
||||||
} MD5_CTX;
|
|
||||||
|
|
||||||
/*********************** FUNCTION DECLARATIONS **********************/
|
|
||||||
void md5_init(MD5_CTX *ctx);
|
|
||||||
void md5_update(MD5_CTX *ctx, const BYTE data[], size_t len);
|
|
||||||
void md5_final(MD5_CTX *ctx, BYTE hash[]);
|
|
||||||
|
|
||||||
#endif // MD5_H
|
|
@ -1,20 +0,0 @@
|
|||||||
/*********************************************************************
|
|
||||||
* Filename: rot-13.h
|
|
||||||
* Author: Brad Conte (brad AT bradconte.com)
|
|
||||||
* Copyright:
|
|
||||||
* Disclaimer: This code is presented "as is" without any guarantees.
|
|
||||||
* Details: Defines the API for the corresponding ROT-13 implementation.
|
|
||||||
*********************************************************************/
|
|
||||||
|
|
||||||
#ifndef ROT13_H
|
|
||||||
#define ROT13_H
|
|
||||||
|
|
||||||
/*************************** HEADER FILES ***************************/
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
/*********************** FUNCTION DECLARATIONS **********************/
|
|
||||||
// Performs IN PLACE rotation of the input. Assumes input is NULL terminated.
|
|
||||||
// Preserves each charcter's case. Ignores non alphabetic characters.
|
|
||||||
void rot13(char str[]);
|
|
||||||
|
|
||||||
#endif // ROT13_H
|
|
@ -1,35 +0,0 @@
|
|||||||
/*********************************************************************
|
|
||||||
* Filename: sha1.h
|
|
||||||
* Author: Brad Conte (brad AT bradconte.com)
|
|
||||||
* Copyright:
|
|
||||||
* Disclaimer: This code is presented "as is" without any guarantees.
|
|
||||||
* Details: Defines the API for the corresponding SHA1 implementation.
|
|
||||||
*********************************************************************/
|
|
||||||
|
|
||||||
#ifndef SHA1_H
|
|
||||||
#define SHA1_H
|
|
||||||
|
|
||||||
/*************************** HEADER FILES ***************************/
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
/****************************** MACROS ******************************/
|
|
||||||
#define SHA1_BLOCK_SIZE 20 // SHA1 outputs a 20 byte digest
|
|
||||||
|
|
||||||
/**************************** DATA TYPES ****************************/
|
|
||||||
typedef unsigned char BYTE; // 8-bit byte
|
|
||||||
typedef unsigned int WORD; // 32-bit word, change to "long" for 16-bit machines
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
BYTE data[64];
|
|
||||||
WORD datalen;
|
|
||||||
unsigned long long bitlen;
|
|
||||||
WORD state[5];
|
|
||||||
WORD k[4];
|
|
||||||
} SHA1_CTX;
|
|
||||||
|
|
||||||
/*********************** FUNCTION DECLARATIONS **********************/
|
|
||||||
void sha1_init(SHA1_CTX *ctx);
|
|
||||||
void sha1_update(SHA1_CTX *ctx, const BYTE data[], size_t len);
|
|
||||||
void sha1_final(SHA1_CTX *ctx, BYTE hash[]);
|
|
||||||
|
|
||||||
#endif // SHA1_H
|
|
@ -1,34 +0,0 @@
|
|||||||
/*********************************************************************
|
|
||||||
* Filename: sha256.h
|
|
||||||
* Author: Brad Conte (brad AT bradconte.com)
|
|
||||||
* Copyright:
|
|
||||||
* Disclaimer: This code is presented "as is" without any guarantees.
|
|
||||||
* Details: Defines the API for the corresponding SHA1 implementation.
|
|
||||||
*********************************************************************/
|
|
||||||
|
|
||||||
#ifndef SHA256_H
|
|
||||||
#define SHA256_H
|
|
||||||
|
|
||||||
/*************************** HEADER FILES ***************************/
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
/****************************** MACROS ******************************/
|
|
||||||
#define SHA256_BLOCK_SIZE 32 // SHA256 outputs a 32 byte digest
|
|
||||||
|
|
||||||
/**************************** DATA TYPES ****************************/
|
|
||||||
typedef unsigned char BYTE; // 8-bit byte
|
|
||||||
typedef unsigned int WORD; // 32-bit word, change to "long" for 16-bit machines
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
BYTE data[64];
|
|
||||||
WORD datalen;
|
|
||||||
unsigned long long bitlen;
|
|
||||||
WORD state[8];
|
|
||||||
} SHA256_CTX;
|
|
||||||
|
|
||||||
/*********************** FUNCTION DECLARATIONS **********************/
|
|
||||||
void sha256_init(SHA256_CTX *ctx);
|
|
||||||
void sha256_update(SHA256_CTX *ctx, const BYTE data[], size_t len);
|
|
||||||
void sha256_final(SHA256_CTX *ctx, BYTE hash[]);
|
|
||||||
|
|
||||||
#endif // SHA256_H
|
|
@ -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
|
|
@ -1,35 +0,0 @@
|
|||||||
#ifndef _DIR_H
|
|
||||||
#define _DIR_H
|
|
||||||
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
#define rmfile(obj) rmdir(obj)
|
|
||||||
#define PATH_MAX 4096
|
|
||||||
#define T_FOLDER 16
|
|
||||||
#define T_FILE 0
|
|
||||||
#define FS_ERROR -1
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
unsigned type;
|
|
||||||
char *name;
|
|
||||||
} short_file_info;
|
|
||||||
|
|
||||||
//Writes information about files in the "dir" folder to an struct array"list". Returns the number of files.
|
|
||||||
int lsdir(const char* dir, short_file_info **list);
|
|
||||||
|
|
||||||
// Get the path to the working directory(if buf is NULL, then memory will be allocated automatically)
|
|
||||||
char *getcwd(char *buf, unsigned size);
|
|
||||||
|
|
||||||
// Set path to working directory
|
|
||||||
void setcwd(const char* cwd);
|
|
||||||
|
|
||||||
// Delete empty folder (returns "true" if successful)
|
|
||||||
bool rmdir(const char* dir);
|
|
||||||
|
|
||||||
// Delete a file (returns "true" if successful)
|
|
||||||
bool rmfile(const char* name);
|
|
||||||
|
|
||||||
// Create a foldery (returns "true" if successful)
|
|
||||||
bool mkdir(const char* dir);
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,14 +0,0 @@
|
|||||||
#ifndef _DLFCN_H
|
|
||||||
#define _DLFCN_H
|
|
||||||
|
|
||||||
#define RTLD_LAZY 0x00001
|
|
||||||
#define RTLD_NOW 0x00002
|
|
||||||
#define RTLD_GLOBAL 0x00100
|
|
||||||
#define RTLD_LOCAL 0
|
|
||||||
|
|
||||||
int dlclose(void *handle);
|
|
||||||
char *dlerror(void);
|
|
||||||
void *dlopen(const char *name, int mode);
|
|
||||||
void *dlsym(void *restrict handle, const char *restrict name);
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,42 +0,0 @@
|
|||||||
#ifndef _ERRNO_H
|
|
||||||
#define _ERRNO_H
|
|
||||||
|
|
||||||
extern int errno;
|
|
||||||
/* errors codes from KOS, but minus */
|
|
||||||
# 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)
|
|
||||||
/* socket error codes*/
|
|
||||||
#define ENOBUFS 1
|
|
||||||
#define EINPROGRESS 2
|
|
||||||
#define EOPNOTSUPP 4
|
|
||||||
#define EWOULDBLOCK 6
|
|
||||||
#define ENOTCONN 9
|
|
||||||
#define EALREADY 10
|
|
||||||
#define EINVALUE 11
|
|
||||||
#define EMSGSIZE 12
|
|
||||||
#define ENOMEM 18
|
|
||||||
#define EADDRINUSE 20
|
|
||||||
#define ECONNREFUSED 61
|
|
||||||
#define ECONNRESET 52
|
|
||||||
#define EISCONN 56
|
|
||||||
#define ETIMEDOUT 60
|
|
||||||
#define ECONNABORTED 53
|
|
||||||
|
|
||||||
#endif
|
|
@ -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_ */
|
|
@ -1,9 +0,0 @@
|
|||||||
#ifndef GETOPT_H
|
|
||||||
#define GETOPT_H
|
|
||||||
|
|
||||||
extern int optind, opterr;
|
|
||||||
extern char *optarg;
|
|
||||||
|
|
||||||
int getopt(int argc, char *argv[], char *optstring);
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,197 +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 void* func_ptr;
|
|
||||||
typedef unsigned int dword;
|
|
||||||
typedef unsigned char byte;
|
|
||||||
typedef unsigned short word;
|
|
||||||
|
|
||||||
typedef unsigned int fpos_t;
|
|
||||||
typedef unsigned int size_t;
|
|
||||||
#pragma pack(push,1)
|
|
||||||
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
|
|
||||||
};
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------
|
|
||||||
//------------------------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);
|
|
||||||
//--------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
//------------------------Working with processes--------------------------------------
|
|
||||||
extern int stdcall _ksys_get_process_table(struct process_table_entry *proctab,int pid); //if pid=-1 than get info about him.
|
|
||||||
extern int stdcall _ksys_kill_process(int pid); // if it returns -1 then an error.
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
//-----------------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 func_ptr stdcall _ksys_cofflib_getproc(void* exp,char* sz_name);
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,815 +0,0 @@
|
|||||||
#ifndef __KOS_32_SYS_H__
|
|
||||||
#define __KOS_32_SYS_H__
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
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
|
|
||||||
|
|
||||||
#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
|
|
||||||
|
|
||||||
// for clipboard funtions
|
|
||||||
#define CLIP_UTF 0
|
|
||||||
#define CLIP_CP866 1
|
|
||||||
#define CLIP_CP1251 2
|
|
||||||
#define CLIP_TEXT 0
|
|
||||||
#define CLIP_IMAGE 1
|
|
||||||
#define CLIP_RAW 2
|
|
||||||
|
|
||||||
//Read/Write data as type (int char, etc.) at address "addr" with offset "offset". eg DATA(int, buff, 8);
|
|
||||||
#define DATA(type, addr, offset) *((type*)((uint8_t*)addr+offset))
|
|
||||||
#define X_W(X, W) ((X<<16)+W)
|
|
||||||
#define Y_H X_W
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint8_t blue;
|
|
||||||
uint8_t green;
|
|
||||||
uint8_t red;
|
|
||||||
}RGB;
|
|
||||||
|
|
||||||
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 sys_change_window(int new_x, int new_y, int new_w, int new_h)
|
|
||||||
{
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"int $0x40"
|
|
||||||
::"a"(67), "b"(new_x), "c"(new_y), "d"(new_w),"S"(new_h)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
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
|
|
||||||
void draw_text_sys_bg(const char *text, int x, int y, int len, color_t color, color_t bg)
|
|
||||||
{
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"int $0x40"
|
|
||||||
::"a"(4),"d"(text),
|
|
||||||
"b"((x << 16) | y),
|
|
||||||
"S"(len),"c"(color), "D"(bg)
|
|
||||||
:"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 void draw_number_sys_bg(int32_t number, int x, int y, int len, color_t color, color_t bg){
|
|
||||||
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), "D"(bg));
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TinyC don't support aliasing of static inline funcs, but support #define :)
|
|
||||||
#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")));
|
|
||||||
#else
|
|
||||||
#define BeginDraw begin_draw
|
|
||||||
#define EndDraw end_draw
|
|
||||||
#define DrawWindow sys_create_window
|
|
||||||
#define DefineButton define_button
|
|
||||||
#define DrawLine draw_line
|
|
||||||
#define DrawBar draw_bar
|
|
||||||
#define DrawBitmap draw_bitmap
|
|
||||||
#define GetSkinHeight get_skin_height
|
|
||||||
#define GetMousePos get_mouse_pos
|
|
||||||
#define GetMouseButtons get_mouse_buttons
|
|
||||||
#define GetMouseWheels get_mouse_wheels
|
|
||||||
#define LoadCursor load_cursor
|
|
||||||
#define SetCursor set_cursor
|
|
||||||
#define DestroyCursor destroy_cursor
|
|
||||||
#define GetOsEvent get_os_event
|
|
||||||
#define UserAlloc user_alloc
|
|
||||||
#define UserFree user_free
|
|
||||||
#define UserRealloc user_realloc
|
|
||||||
#define UserUnmap user_unmap
|
|
||||||
#define LoadFile load_file
|
|
||||||
#define GetProcInfo get_proc_info
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
|||||||
#ifndef __KTCC_LIBGEN_H__
|
|
||||||
#define __KTCC_LIBGEN_H__
|
|
||||||
|
|
||||||
char *basename(char *path);
|
|
||||||
char *dirname(char *path);
|
|
||||||
|
|
||||||
#endif // __KTCC_LIBGEN_H__
|
|
@ -1,55 +0,0 @@
|
|||||||
/* Copyright (C) 1999 DJ Delorie, see http://www.delorie.com/copyright.html for details */
|
|
||||||
/* Copyright (C) 1998 DJ Delorie, see http://www.delorie.com/copyright.html for details */
|
|
||||||
/* Copyright (C) 1995 DJ Delorie, see http://www.delorie.com/copyright.html for details */
|
|
||||||
|
|
||||||
#ifndef _MATH_H
|
|
||||||
#define _MATH_H
|
|
||||||
|
|
||||||
extern double acos(double _x);
|
|
||||||
extern double asin(double _x);
|
|
||||||
extern double atan(double _x);
|
|
||||||
extern double atan2(double _y, double _x);
|
|
||||||
extern float ceilf(float);
|
|
||||||
extern double ceil(double _x);
|
|
||||||
extern double cos(double _x);
|
|
||||||
extern double cosh(double _x);
|
|
||||||
extern double exp(double _x);
|
|
||||||
extern double exp2(double _x);
|
|
||||||
extern double fabs(double _x);
|
|
||||||
extern float fabsf(float);
|
|
||||||
extern double floor(double _x);
|
|
||||||
extern float floorf(float);
|
|
||||||
extern double fmod(double _x, double _y);
|
|
||||||
extern double frexp(double _x, int *_pexp);
|
|
||||||
extern double ldexp(double _x, int _exp);
|
|
||||||
extern double remainder(double, double);
|
|
||||||
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 float sqrtf(float);
|
|
||||||
extern double tan(double _x);
|
|
||||||
extern double tanh(double _x);
|
|
||||||
extern double round(double x);
|
|
||||||
extern long double roundl (long double x);
|
|
||||||
|
|
||||||
#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
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,8 +0,0 @@
|
|||||||
#ifndef _MEMORY_H
|
|
||||||
#define _MEMORY_H
|
|
||||||
|
|
||||||
#ifndef _STRING_H
|
|
||||||
#include <string.h>
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
|||||||
#ifndef __NETWORK_H
|
|
||||||
#define __NETWORK_H
|
|
||||||
|
|
||||||
#include <net/socket.h>
|
|
||||||
|
|
||||||
#define EAI_ADDRFAMILY 1
|
|
||||||
#define EAI_AGAIN 2
|
|
||||||
#define EAI_BADFLAGS 3
|
|
||||||
#define EAI_FAIL 4
|
|
||||||
#define EAI_FAMILY 5
|
|
||||||
#define EAI_MEMORY 6
|
|
||||||
#define EAI_NONAME 8
|
|
||||||
#define EAI_SERVICE 9
|
|
||||||
#define EAI_SOCKTYPE 10
|
|
||||||
#define EAI_BADHINTS 12
|
|
||||||
#define EAI_PROTOCOL 13
|
|
||||||
#define EAI_OVERFLOW 14
|
|
||||||
|
|
||||||
// Flags for addrinfo
|
|
||||||
#define AI_PASSIVE 1
|
|
||||||
#define AI_CANONNAME 2
|
|
||||||
#define AI_NUMERICHOST 4
|
|
||||||
#define AI_NUMERICSERV 8
|
|
||||||
#define AI_ADDRCONFIG 0x400
|
|
||||||
|
|
||||||
#pragma pack(push, 1)
|
|
||||||
struct ARP_entry{
|
|
||||||
unsigned int IP;
|
|
||||||
unsigned char MAC[6];
|
|
||||||
unsigned short status;
|
|
||||||
unsigned short TTL;
|
|
||||||
};
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
#pragma pack(push, 1)
|
|
||||||
struct addrinfo {
|
|
||||||
int ai_flags;
|
|
||||||
int ai_family;
|
|
||||||
int ai_socktype;
|
|
||||||
int ai_protocol;
|
|
||||||
int ai_addrlen;
|
|
||||||
char *ai_canonname;
|
|
||||||
struct sockaddr *ai_addr;
|
|
||||||
struct addrinfo *ai_next;
|
|
||||||
};
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
extern int networklib_init ();
|
|
||||||
extern int (*inet_addr __attribute__ ((stdcall)))(const char* hostname);
|
|
||||||
extern char* (*inet_ntoa __attribute__ ((stdcall)))(int ip_addr);
|
|
||||||
extern int (*getaddrinfo __attribute__ ((stdcall)))(const char* hostname, const char* servname, const struct addrinfo* hints, struct addrinfo** res);
|
|
||||||
extern void (*freeaddrinfo __attribute__ ((stdcall)))(struct addrinfo* ai);
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,89 +0,0 @@
|
|||||||
#ifndef __SOCKET_H
|
|
||||||
#define __SOCKET_H
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
// Socket Types
|
|
||||||
#define SOCK_STREAM 1
|
|
||||||
#define SOCK_DGRAM 2
|
|
||||||
#define SOCK_RAW 3
|
|
||||||
|
|
||||||
// IP protocols
|
|
||||||
#define IPPROTO_IP 0
|
|
||||||
#define IPPROTO_ICMP 1
|
|
||||||
#define IPPROTO_TCP 6
|
|
||||||
#define IPPROTO_UDP 17
|
|
||||||
#define IPPROTO_RAW 255
|
|
||||||
|
|
||||||
// IP options
|
|
||||||
#define IP_TTL 2
|
|
||||||
|
|
||||||
// Address families
|
|
||||||
#define AF_UNSPEC 0
|
|
||||||
#define AF_LOCAL 1
|
|
||||||
#define AF_INET 2
|
|
||||||
#define AF_INET4 2 // IPv4
|
|
||||||
#define AF_INET6 10 // IPv6
|
|
||||||
|
|
||||||
#define PF_UNSPEC AF_UNSPEC
|
|
||||||
#define PF_LOCAL AF_LOCAL
|
|
||||||
#define PF_INET4 AF_INET4
|
|
||||||
#define PF_INET6 AF_INET6
|
|
||||||
|
|
||||||
// internal definition
|
|
||||||
#define AI_SUPPORTED 0x40F
|
|
||||||
|
|
||||||
// for system function 76
|
|
||||||
#define API_ETH (0<<16)
|
|
||||||
#define API_IPv4 (1<<16)
|
|
||||||
#define API_ICMP (2<<16)
|
|
||||||
#define API_UDP (3<<16)
|
|
||||||
#define API_TCP (4<<16)
|
|
||||||
#define API_ARP (5<<16)
|
|
||||||
#define API_PPPOE (6<<16)
|
|
||||||
|
|
||||||
// Socket flags for user calls
|
|
||||||
#define MSG_NOFLAG 0
|
|
||||||
#define MSG_PEEK 0x02
|
|
||||||
#define MSG_DONTWAIT 0x40
|
|
||||||
|
|
||||||
// Socket levels
|
|
||||||
#define SOL_SOCKET 0xffff
|
|
||||||
|
|
||||||
//Socket options
|
|
||||||
#define SO_BINDTODEVICE (1<<9)
|
|
||||||
#define SO_NONBLOCK (1<<31)
|
|
||||||
#define PORT(X) (X<<8)
|
|
||||||
|
|
||||||
#pragma pack(push,1)
|
|
||||||
struct sockaddr{
|
|
||||||
unsigned short sin_family;
|
|
||||||
unsigned short sin_port;
|
|
||||||
unsigned int sin_addr;
|
|
||||||
unsigned long long sin_zero;
|
|
||||||
};
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
#pragma pack(push,1)
|
|
||||||
typedef struct{
|
|
||||||
unsigned int level;
|
|
||||||
unsigned int optionname;
|
|
||||||
unsigned int optlenght;
|
|
||||||
unsigned char options;
|
|
||||||
}optstruct;
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
int socket(int domain, int type, int protocol);
|
|
||||||
int close(int socket);
|
|
||||||
int bind(int socket, const struct sockaddr *addres, int addres_len);
|
|
||||||
int listen(int socket, int backlog);
|
|
||||||
int connect(int socket, const struct sockaddr* address, int socket_len);
|
|
||||||
int accept(int socket, const struct sockaddr* address, int address_len);
|
|
||||||
int send(int socket, const void *message, size_t msg_len, int flag);
|
|
||||||
int recv(int socket, void *buffer, size_t buff_len, int flag);
|
|
||||||
int setsockopt(int socket,const optstruct* opt);
|
|
||||||
int getsockopt(int socket, optstruct* opt);
|
|
||||||
int socketpair(int *sock1, int *sock2);
|
|
||||||
|
|
||||||
#endif
|
|
@ -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 */
|
|
@ -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 */
|
|
@ -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 <stddef.h> (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
|
|
@ -1 +0,0 @@
|
|||||||
#include <stddef.h>
|
|
@ -1,105 +0,0 @@
|
|||||||
#ifndef stdio_h
|
|
||||||
#define stdio_h
|
|
||||||
|
|
||||||
#include "kolibrisys.h"
|
|
||||||
#include <errno.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
/* 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 );
|
|
||||||
|
|
||||||
//debug
|
|
||||||
void debug_printf(const char *format,...);
|
|
||||||
|
|
||||||
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
|
|
||||||
#endif
|
|
||||||
|
|
@ -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
|
|
@ -1,36 +0,0 @@
|
|||||||
#ifndef string_h
|
|
||||||
#define string_h
|
|
||||||
typedef unsigned int size_t;
|
|
||||||
|
|
||||||
|
|
||||||
extern void* memchr(const void*,int,size_t);
|
|
||||||
extern void* memrchr(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
|
|
@ -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
|
|
@ -1,838 +0,0 @@
|
|||||||
/*
|
|
||||||
* The following constants come from Mesa
|
|
||||||
*/
|
|
||||||
#ifndef GL_H
|
|
||||||
#define GL_H
|
|
||||||
|
|
||||||
#define GL_VERSION_1_1 1
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
enum {
|
|
||||||
/* Boolean values */
|
|
||||||
GL_FALSE = 0,
|
|
||||||
GL_TRUE = 1,
|
|
||||||
|
|
||||||
/* Data types */
|
|
||||||
GL_BYTE = 0x1400,
|
|
||||||
GL_UNSIGNED_BYTE = 0x1401,
|
|
||||||
GL_SHORT = 0x1402,
|
|
||||||
GL_UNSIGNED_SHORT = 0x1403,
|
|
||||||
GL_INT = 0x1404,
|
|
||||||
GL_UNSIGNED_INT = 0x1405,
|
|
||||||
GL_FLOAT = 0x1406,
|
|
||||||
GL_DOUBLE = 0x140A,
|
|
||||||
GL_2_BYTES = 0x1407,
|
|
||||||
GL_3_BYTES = 0x1408,
|
|
||||||
GL_4_BYTES = 0x1409,
|
|
||||||
|
|
||||||
/* Primitives */
|
|
||||||
GL_LINES = 0x0001,
|
|
||||||
GL_POINTS = 0x0000,
|
|
||||||
GL_LINE_STRIP = 0x0003,
|
|
||||||
GL_LINE_LOOP = 0x0002,
|
|
||||||
GL_TRIANGLES = 0x0004,
|
|
||||||
GL_TRIANGLE_STRIP = 0x0005,
|
|
||||||
GL_TRIANGLE_FAN = 0x0006,
|
|
||||||
GL_QUADS = 0x0007,
|
|
||||||
GL_QUAD_STRIP = 0x0008,
|
|
||||||
GL_POLYGON = 0x0009,
|
|
||||||
GL_EDGE_FLAG = 0x0B43,
|
|
||||||
|
|
||||||
/* Vertex Arrays */
|
|
||||||
GL_VERTEX_ARRAY = 0x8074,
|
|
||||||
GL_NORMAL_ARRAY = 0x8075,
|
|
||||||
GL_COLOR_ARRAY = 0x8076,
|
|
||||||
GL_INDEX_ARRAY = 0x8077,
|
|
||||||
GL_TEXTURE_COORD_ARRAY = 0x8078,
|
|
||||||
GL_EDGE_FLAG_ARRAY = 0x8079,
|
|
||||||
GL_VERTEX_ARRAY_SIZE = 0x807A,
|
|
||||||
GL_VERTEX_ARRAY_TYPE = 0x807B,
|
|
||||||
GL_VERTEX_ARRAY_STRIDE = 0x807C,
|
|
||||||
GL_VERTEX_ARRAY_COUNT = 0x807D,
|
|
||||||
GL_NORMAL_ARRAY_TYPE = 0x807E,
|
|
||||||
GL_NORMAL_ARRAY_STRIDE = 0x807F,
|
|
||||||
GL_NORMAL_ARRAY_COUNT = 0x8080,
|
|
||||||
GL_COLOR_ARRAY_SIZE = 0x8081,
|
|
||||||
GL_COLOR_ARRAY_TYPE = 0x8082,
|
|
||||||
GL_COLOR_ARRAY_STRIDE = 0x8083,
|
|
||||||
GL_COLOR_ARRAY_COUNT = 0x8084,
|
|
||||||
GL_INDEX_ARRAY_TYPE = 0x8085,
|
|
||||||
GL_INDEX_ARRAY_STRIDE = 0x8086,
|
|
||||||
GL_INDEX_ARRAY_COUNT = 0x8087,
|
|
||||||
GL_TEXTURE_COORD_ARRAY_SIZE = 0x8088,
|
|
||||||
GL_TEXTURE_COORD_ARRAY_TYPE = 0x8089,
|
|
||||||
GL_TEXTURE_COORD_ARRAY_STRIDE = 0x808A,
|
|
||||||
GL_TEXTURE_COORD_ARRAY_COUNT = 0x808B,
|
|
||||||
GL_EDGE_FLAG_ARRAY_STRIDE = 0x808C,
|
|
||||||
GL_EDGE_FLAG_ARRAY_COUNT = 0x808D,
|
|
||||||
GL_VERTEX_ARRAY_POINTER = 0x808E,
|
|
||||||
GL_NORMAL_ARRAY_POINTER = 0x808F,
|
|
||||||
GL_COLOR_ARRAY_POINTER = 0x8090,
|
|
||||||
GL_INDEX_ARRAY_POINTER = 0x8091,
|
|
||||||
GL_TEXTURE_COORD_ARRAY_POINTER = 0x8092,
|
|
||||||
GL_EDGE_FLAG_ARRAY_POINTER = 0x8093,
|
|
||||||
GL_V2F = 0x2A20,
|
|
||||||
GL_V3F = 0x2A21,
|
|
||||||
GL_C4UB_V2F = 0x2A22,
|
|
||||||
GL_C4UB_V3F = 0x2A23,
|
|
||||||
GL_C3F_V3F = 0x2A24,
|
|
||||||
GL_N3F_V3F = 0x2A25,
|
|
||||||
GL_C4F_N3F_V3F = 0x2A26,
|
|
||||||
GL_T2F_V3F = 0x2A27,
|
|
||||||
GL_T4F_V4F = 0x2A28,
|
|
||||||
GL_T2F_C4UB_V3F = 0x2A29,
|
|
||||||
GL_T2F_C3F_V3F = 0x2A2A,
|
|
||||||
GL_T2F_N3F_V3F = 0x2A2B,
|
|
||||||
GL_T2F_C4F_N3F_V3F = 0x2A2C,
|
|
||||||
GL_T4F_C4F_N3F_V4F = 0x2A2D,
|
|
||||||
|
|
||||||
/* Matrix Mode */
|
|
||||||
GL_MATRIX_MODE = 0x0BA0,
|
|
||||||
GL_MODELVIEW = 0x1700,
|
|
||||||
GL_PROJECTION = 0x1701,
|
|
||||||
GL_TEXTURE = 0x1702,
|
|
||||||
|
|
||||||
/* Points */
|
|
||||||
GL_POINT_SMOOTH = 0x0B10,
|
|
||||||
GL_POINT_SIZE = 0x0B11,
|
|
||||||
GL_POINT_SIZE_GRANULARITY = 0x0B13,
|
|
||||||
GL_POINT_SIZE_RANGE = 0x0B12,
|
|
||||||
|
|
||||||
/* Lines */
|
|
||||||
GL_LINE_SMOOTH = 0x0B20,
|
|
||||||
GL_LINE_STIPPLE = 0x0B24,
|
|
||||||
GL_LINE_STIPPLE_PATTERN = 0x0B25,
|
|
||||||
GL_LINE_STIPPLE_REPEAT = 0x0B26,
|
|
||||||
GL_LINE_WIDTH = 0x0B21,
|
|
||||||
GL_LINE_WIDTH_GRANULARITY = 0x0B23,
|
|
||||||
GL_LINE_WIDTH_RANGE = 0x0B22,
|
|
||||||
|
|
||||||
/* Polygons */
|
|
||||||
GL_POINT = 0x1B00,
|
|
||||||
GL_LINE = 0x1B01,
|
|
||||||
GL_FILL = 0x1B02,
|
|
||||||
GL_CCW = 0x0901,
|
|
||||||
GL_CW = 0x0900,
|
|
||||||
GL_FRONT = 0x0404,
|
|
||||||
GL_BACK = 0x0405,
|
|
||||||
GL_CULL_FACE = 0x0B44,
|
|
||||||
GL_CULL_FACE_MODE = 0x0B45,
|
|
||||||
GL_POLYGON_SMOOTH = 0x0B41,
|
|
||||||
GL_POLYGON_STIPPLE = 0x0B42,
|
|
||||||
GL_FRONT_FACE = 0x0B46,
|
|
||||||
GL_POLYGON_MODE = 0x0B40,
|
|
||||||
GL_POLYGON_OFFSET_FACTOR = 0x3038,
|
|
||||||
GL_POLYGON_OFFSET_UNITS = 0x2A00,
|
|
||||||
GL_POLYGON_OFFSET_POINT = 0x2A01,
|
|
||||||
GL_POLYGON_OFFSET_LINE = 0x2A02,
|
|
||||||
GL_POLYGON_OFFSET_FILL = 0x8037,
|
|
||||||
|
|
||||||
/* Display Lists */
|
|
||||||
GL_COMPILE = 0x1300,
|
|
||||||
GL_COMPILE_AND_EXECUTE = 0x1301,
|
|
||||||
GL_LIST_BASE = 0x0B32,
|
|
||||||
GL_LIST_INDEX = 0x0B33,
|
|
||||||
GL_LIST_MODE = 0x0B30,
|
|
||||||
|
|
||||||
/* Depth buffer */
|
|
||||||
GL_NEVER = 0x0200,
|
|
||||||
GL_LESS = 0x0201,
|
|
||||||
GL_GEQUAL = 0x0206,
|
|
||||||
GL_LEQUAL = 0x0203,
|
|
||||||
GL_GREATER = 0x0204,
|
|
||||||
GL_NOTEQUAL = 0x0205,
|
|
||||||
GL_EQUAL = 0x0202,
|
|
||||||
GL_ALWAYS = 0x0207,
|
|
||||||
GL_DEPTH_TEST = 0x0B71,
|
|
||||||
GL_DEPTH_BITS = 0x0D56,
|
|
||||||
GL_DEPTH_CLEAR_VALUE = 0x0B73,
|
|
||||||
GL_DEPTH_FUNC = 0x0B74,
|
|
||||||
GL_DEPTH_RANGE = 0x0B70,
|
|
||||||
GL_DEPTH_WRITEMASK = 0x0B72,
|
|
||||||
GL_DEPTH_COMPONENT = 0x1902,
|
|
||||||
|
|
||||||
/* Lighting */
|
|
||||||
GL_LIGHTING = 0x0B50,
|
|
||||||
GL_LIGHT0 = 0x4000,
|
|
||||||
GL_LIGHT1 = 0x4001,
|
|
||||||
GL_LIGHT2 = 0x4002,
|
|
||||||
GL_LIGHT3 = 0x4003,
|
|
||||||
GL_LIGHT4 = 0x4004,
|
|
||||||
GL_LIGHT5 = 0x4005,
|
|
||||||
GL_LIGHT6 = 0x4006,
|
|
||||||
GL_LIGHT7 = 0x4007,
|
|
||||||
GL_SPOT_EXPONENT = 0x1205,
|
|
||||||
GL_SPOT_CUTOFF = 0x1206,
|
|
||||||
GL_CONSTANT_ATTENUATION = 0x1207,
|
|
||||||
GL_LINEAR_ATTENUATION = 0x1208,
|
|
||||||
GL_QUADRATIC_ATTENUATION = 0x1209,
|
|
||||||
GL_AMBIENT = 0x1200,
|
|
||||||
GL_DIFFUSE = 0x1201,
|
|
||||||
GL_SPECULAR = 0x1202,
|
|
||||||
GL_SHININESS = 0x1601,
|
|
||||||
GL_EMISSION = 0x1600,
|
|
||||||
GL_POSITION = 0x1203,
|
|
||||||
GL_SPOT_DIRECTION = 0x1204,
|
|
||||||
GL_AMBIENT_AND_DIFFUSE = 0x1602,
|
|
||||||
GL_COLOR_INDEXES = 0x1603,
|
|
||||||
GL_LIGHT_MODEL_TWO_SIDE = 0x0B52,
|
|
||||||
GL_LIGHT_MODEL_LOCAL_VIEWER = 0x0B51,
|
|
||||||
GL_LIGHT_MODEL_AMBIENT = 0x0B53,
|
|
||||||
GL_FRONT_AND_BACK = 0x0408,
|
|
||||||
GL_SHADE_MODEL = 0x0B54,
|
|
||||||
GL_FLAT = 0x1D00,
|
|
||||||
GL_SMOOTH = 0x1D01,
|
|
||||||
GL_COLOR_MATERIAL = 0x0B57,
|
|
||||||
GL_COLOR_MATERIAL_FACE = 0x0B55,
|
|
||||||
GL_COLOR_MATERIAL_PARAMETER = 0x0B56,
|
|
||||||
GL_NORMALIZE = 0x0BA1,
|
|
||||||
|
|
||||||
/* User clipping planes */
|
|
||||||
GL_CLIP_PLANE0 = 0x3000,
|
|
||||||
GL_CLIP_PLANE1 = 0x3001,
|
|
||||||
GL_CLIP_PLANE2 = 0x3002,
|
|
||||||
GL_CLIP_PLANE3 = 0x3003,
|
|
||||||
GL_CLIP_PLANE4 = 0x3004,
|
|
||||||
GL_CLIP_PLANE5 = 0x3005,
|
|
||||||
|
|
||||||
/* Accumulation buffer */
|
|
||||||
GL_ACCUM_RED_BITS = 0x0D58,
|
|
||||||
GL_ACCUM_GREEN_BITS = 0x0D59,
|
|
||||||
GL_ACCUM_BLUE_BITS = 0x0D5A,
|
|
||||||
GL_ACCUM_ALPHA_BITS = 0x0D5B,
|
|
||||||
GL_ACCUM_CLEAR_VALUE = 0x0B80,
|
|
||||||
GL_ACCUM = 0x0100,
|
|
||||||
GL_ADD = 0x0104,
|
|
||||||
GL_LOAD = 0x0101,
|
|
||||||
GL_MULT = 0x0103,
|
|
||||||
GL_RETURN = 0x0102,
|
|
||||||
|
|
||||||
/* Alpha testing */
|
|
||||||
GL_ALPHA_TEST = 0x0BC0,
|
|
||||||
GL_ALPHA_TEST_REF = 0x0BC2,
|
|
||||||
GL_ALPHA_TEST_FUNC = 0x0BC1,
|
|
||||||
|
|
||||||
/* Blending */
|
|
||||||
GL_BLEND = 0x0BE2,
|
|
||||||
GL_BLEND_SRC = 0x0BE1,
|
|
||||||
GL_BLEND_DST = 0x0BE0,
|
|
||||||
GL_ZERO = 0,
|
|
||||||
GL_ONE = 1,
|
|
||||||
GL_SRC_COLOR = 0x0300,
|
|
||||||
GL_ONE_MINUS_SRC_COLOR = 0x0301,
|
|
||||||
GL_DST_COLOR = 0x0306,
|
|
||||||
GL_ONE_MINUS_DST_COLOR = 0x0307,
|
|
||||||
GL_SRC_ALPHA = 0x0302,
|
|
||||||
GL_ONE_MINUS_SRC_ALPHA = 0x0303,
|
|
||||||
GL_DST_ALPHA = 0x0304,
|
|
||||||
GL_ONE_MINUS_DST_ALPHA = 0x0305,
|
|
||||||
GL_SRC_ALPHA_SATURATE = 0x0308,
|
|
||||||
GL_CONSTANT_COLOR = 0x8001,
|
|
||||||
GL_ONE_MINUS_CONSTANT_COLOR = 0x8002,
|
|
||||||
GL_CONSTANT_ALPHA = 0x8003,
|
|
||||||
GL_ONE_MINUS_CONSTANT_ALPHA = 0x8004,
|
|
||||||
|
|
||||||
/* Render Mode */
|
|
||||||
GL_FEEDBACK = 0x1C01,
|
|
||||||
GL_RENDER = 0x1C00,
|
|
||||||
GL_SELECT = 0x1C02,
|
|
||||||
|
|
||||||
/* Feedback */
|
|
||||||
GL_2D = 0x0600,
|
|
||||||
GL_3D = 0x0601,
|
|
||||||
GL_3D_COLOR = 0x0602,
|
|
||||||
GL_3D_COLOR_TEXTURE = 0x0603,
|
|
||||||
GL_4D_COLOR_TEXTURE = 0x0604,
|
|
||||||
GL_POINT_TOKEN = 0x0701,
|
|
||||||
GL_LINE_TOKEN = 0x0702,
|
|
||||||
GL_LINE_RESET_TOKEN = 0x0707,
|
|
||||||
GL_POLYGON_TOKEN = 0x0703,
|
|
||||||
GL_BITMAP_TOKEN = 0x0704,
|
|
||||||
GL_DRAW_PIXEL_TOKEN = 0x0705,
|
|
||||||
GL_COPY_PIXEL_TOKEN = 0x0706,
|
|
||||||
GL_PASS_THROUGH_TOKEN = 0x0700,
|
|
||||||
|
|
||||||
/* Fog */
|
|
||||||
GL_FOG = 0x0B60,
|
|
||||||
GL_FOG_MODE = 0x0B65,
|
|
||||||
GL_FOG_DENSITY = 0x0B62,
|
|
||||||
GL_FOG_COLOR = 0x0B66,
|
|
||||||
GL_FOG_INDEX = 0x0B61,
|
|
||||||
GL_FOG_START = 0x0B63,
|
|
||||||
GL_FOG_END = 0x0B64,
|
|
||||||
GL_LINEAR = 0x2601,
|
|
||||||
GL_EXP = 0x0800,
|
|
||||||
GL_EXP2 = 0x0801,
|
|
||||||
|
|
||||||
/* Logic Ops */
|
|
||||||
GL_LOGIC_OP = 0x0BF1,
|
|
||||||
GL_LOGIC_OP_MODE = 0x0BF0,
|
|
||||||
GL_CLEAR = 0x1500,
|
|
||||||
GL_SET = 0x150F,
|
|
||||||
GL_COPY = 0x1503,
|
|
||||||
GL_COPY_INVERTED = 0x150C,
|
|
||||||
GL_NOOP = 0x1505,
|
|
||||||
GL_INVERT = 0x150A,
|
|
||||||
GL_AND = 0x1501,
|
|
||||||
GL_NAND = 0x150E,
|
|
||||||
GL_OR = 0x1507,
|
|
||||||
GL_NOR = 0x1508,
|
|
||||||
GL_XOR = 0x1506,
|
|
||||||
GL_EQUIV = 0x1509,
|
|
||||||
GL_AND_REVERSE = 0x1502,
|
|
||||||
GL_AND_INVERTED = 0x1504,
|
|
||||||
GL_OR_REVERSE = 0x150B,
|
|
||||||
GL_OR_INVERTED = 0x150D,
|
|
||||||
|
|
||||||
/* Stencil */
|
|
||||||
GL_STENCIL_TEST = 0x0B90,
|
|
||||||
GL_STENCIL_WRITEMASK = 0x0B98,
|
|
||||||
GL_STENCIL_BITS = 0x0D57,
|
|
||||||
GL_STENCIL_FUNC = 0x0B92,
|
|
||||||
GL_STENCIL_VALUE_MASK = 0x0B93,
|
|
||||||
GL_STENCIL_REF = 0x0B97,
|
|
||||||
GL_STENCIL_FAIL = 0x0B94,
|
|
||||||
GL_STENCIL_PASS_DEPTH_PASS = 0x0B96,
|
|
||||||
GL_STENCIL_PASS_DEPTH_FAIL = 0x0B95,
|
|
||||||
GL_STENCIL_CLEAR_VALUE = 0x0B91,
|
|
||||||
GL_STENCIL_INDEX = 0x1901,
|
|
||||||
GL_KEEP = 0x1E00,
|
|
||||||
GL_REPLACE = 0x1E01,
|
|
||||||
GL_INCR = 0x1E02,
|
|
||||||
GL_DECR = 0x1E03,
|
|
||||||
|
|
||||||
/* Buffers, Pixel Drawing/Reading */
|
|
||||||
GL_NONE = 0,
|
|
||||||
GL_LEFT = 0x0406,
|
|
||||||
GL_RIGHT = 0x0407,
|
|
||||||
/*GL_FRONT = 0x0404, */
|
|
||||||
/*GL_BACK = 0x0405, */
|
|
||||||
/*GL_FRONT_AND_BACK = 0x0408, */
|
|
||||||
GL_FRONT_LEFT = 0x0400,
|
|
||||||
GL_FRONT_RIGHT = 0x0401,
|
|
||||||
GL_BACK_LEFT = 0x0402,
|
|
||||||
GL_BACK_RIGHT = 0x0403,
|
|
||||||
GL_AUX0 = 0x0409,
|
|
||||||
GL_AUX1 = 0x040A,
|
|
||||||
GL_AUX2 = 0x040B,
|
|
||||||
GL_AUX3 = 0x040C,
|
|
||||||
GL_COLOR_INDEX = 0x1900,
|
|
||||||
GL_RED = 0x1903,
|
|
||||||
GL_GREEN = 0x1904,
|
|
||||||
GL_BLUE = 0x1905,
|
|
||||||
GL_ALPHA = 0x1906,
|
|
||||||
GL_LUMINANCE = 0x1909,
|
|
||||||
GL_LUMINANCE_ALPHA = 0x190A,
|
|
||||||
GL_ALPHA_BITS = 0x0D55,
|
|
||||||
GL_RED_BITS = 0x0D52,
|
|
||||||
GL_GREEN_BITS = 0x0D53,
|
|
||||||
GL_BLUE_BITS = 0x0D54,
|
|
||||||
GL_INDEX_BITS = 0x0D51,
|
|
||||||
GL_SUBPIXEL_BITS = 0x0D50,
|
|
||||||
GL_AUX_BUFFERS = 0x0C00,
|
|
||||||
GL_READ_BUFFER = 0x0C02,
|
|
||||||
GL_DRAW_BUFFER = 0x0C01,
|
|
||||||
GL_DOUBLEBUFFER = 0x0C32,
|
|
||||||
GL_STEREO = 0x0C33,
|
|
||||||
GL_BITMAP = 0x1A00,
|
|
||||||
GL_COLOR = 0x1800,
|
|
||||||
GL_DEPTH = 0x1801,
|
|
||||||
GL_STENCIL = 0x1802,
|
|
||||||
GL_DITHER = 0x0BD0,
|
|
||||||
GL_RGB = 0x1907,
|
|
||||||
GL_RGBA = 0x1908,
|
|
||||||
|
|
||||||
/* Implementation limits */
|
|
||||||
GL_MAX_LIST_NESTING = 0x0B31,
|
|
||||||
GL_MAX_ATTRIB_STACK_DEPTH = 0x0D35,
|
|
||||||
GL_MAX_MODELVIEW_STACK_DEPTH = 0x0D36,
|
|
||||||
GL_MAX_NAME_STACK_DEPTH = 0x0D37,
|
|
||||||
GL_MAX_PROJECTION_STACK_DEPTH = 0x0D38,
|
|
||||||
GL_MAX_TEXTURE_STACK_DEPTH = 0x0D39,
|
|
||||||
GL_MAX_EVAL_ORDER = 0x0D30,
|
|
||||||
GL_MAX_LIGHTS = 0x0D31,
|
|
||||||
GL_MAX_CLIP_PLANES = 0x0D32,
|
|
||||||
GL_MAX_TEXTURE_SIZE = 0x0D33,
|
|
||||||
GL_MAX_PIXEL_MAP_TABLE = 0x0D34,
|
|
||||||
GL_MAX_VIEWPORT_DIMS = 0x0D3A,
|
|
||||||
GL_MAX_CLIENT_ATTRIB_STACK_DEPTH= 0x0D3B,
|
|
||||||
|
|
||||||
/* Gets */
|
|
||||||
GL_ATTRIB_STACK_DEPTH = 0x0BB0,
|
|
||||||
GL_COLOR_CLEAR_VALUE = 0x0C22,
|
|
||||||
GL_COLOR_WRITEMASK = 0x0C23,
|
|
||||||
GL_CURRENT_INDEX = 0x0B01,
|
|
||||||
GL_CURRENT_COLOR = 0x0B00,
|
|
||||||
GL_CURRENT_NORMAL = 0x0B02,
|
|
||||||
GL_CURRENT_RASTER_COLOR = 0x0B04,
|
|
||||||
GL_CURRENT_RASTER_DISTANCE = 0x0B09,
|
|
||||||
GL_CURRENT_RASTER_INDEX = 0x0B05,
|
|
||||||
GL_CURRENT_RASTER_POSITION = 0x0B07,
|
|
||||||
GL_CURRENT_RASTER_TEXTURE_COORDS = 0x0B06,
|
|
||||||
GL_CURRENT_RASTER_POSITION_VALID = 0x0B08,
|
|
||||||
GL_CURRENT_TEXTURE_COORDS = 0x0B03,
|
|
||||||
GL_INDEX_CLEAR_VALUE = 0x0C20,
|
|
||||||
GL_INDEX_MODE = 0x0C30,
|
|
||||||
GL_INDEX_WRITEMASK = 0x0C21,
|
|
||||||
GL_MODELVIEW_MATRIX = 0x0BA6,
|
|
||||||
GL_MODELVIEW_STACK_DEPTH = 0x0BA3,
|
|
||||||
GL_NAME_STACK_DEPTH = 0x0D70,
|
|
||||||
GL_PROJECTION_MATRIX = 0x0BA7,
|
|
||||||
GL_PROJECTION_STACK_DEPTH = 0x0BA4,
|
|
||||||
GL_RENDER_MODE = 0x0C40,
|
|
||||||
GL_RGBA_MODE = 0x0C31,
|
|
||||||
GL_TEXTURE_MATRIX = 0x0BA8,
|
|
||||||
GL_TEXTURE_STACK_DEPTH = 0x0BA5,
|
|
||||||
GL_VIEWPORT = 0x0BA2,
|
|
||||||
|
|
||||||
|
|
||||||
/* Evaluators */
|
|
||||||
GL_AUTO_NORMAL = 0x0D80,
|
|
||||||
GL_MAP1_COLOR_4 = 0x0D90,
|
|
||||||
GL_MAP1_GRID_DOMAIN = 0x0DD0,
|
|
||||||
GL_MAP1_GRID_SEGMENTS = 0x0DD1,
|
|
||||||
GL_MAP1_INDEX = 0x0D91,
|
|
||||||
GL_MAP1_NORMAL = 0x0D92,
|
|
||||||
GL_MAP1_TEXTURE_COORD_1 = 0x0D93,
|
|
||||||
GL_MAP1_TEXTURE_COORD_2 = 0x0D94,
|
|
||||||
GL_MAP1_TEXTURE_COORD_3 = 0x0D95,
|
|
||||||
GL_MAP1_TEXTURE_COORD_4 = 0x0D96,
|
|
||||||
GL_MAP1_VERTEX_3 = 0x0D97,
|
|
||||||
GL_MAP1_VERTEX_4 = 0x0D98,
|
|
||||||
GL_MAP2_COLOR_4 = 0x0DB0,
|
|
||||||
GL_MAP2_GRID_DOMAIN = 0x0DD2,
|
|
||||||
GL_MAP2_GRID_SEGMENTS = 0x0DD3,
|
|
||||||
GL_MAP2_INDEX = 0x0DB1,
|
|
||||||
GL_MAP2_NORMAL = 0x0DB2,
|
|
||||||
GL_MAP2_TEXTURE_COORD_1 = 0x0DB3,
|
|
||||||
GL_MAP2_TEXTURE_COORD_2 = 0x0DB4,
|
|
||||||
GL_MAP2_TEXTURE_COORD_3 = 0x0DB5,
|
|
||||||
GL_MAP2_TEXTURE_COORD_4 = 0x0DB6,
|
|
||||||
GL_MAP2_VERTEX_3 = 0x0DB7,
|
|
||||||
GL_MAP2_VERTEX_4 = 0x0DB8,
|
|
||||||
GL_COEFF = 0x0A00,
|
|
||||||
GL_DOMAIN = 0x0A02,
|
|
||||||
GL_ORDER = 0x0A01,
|
|
||||||
|
|
||||||
/* Hints */
|
|
||||||
GL_FOG_HINT = 0x0C54,
|
|
||||||
GL_LINE_SMOOTH_HINT = 0x0C52,
|
|
||||||
GL_PERSPECTIVE_CORRECTION_HINT = 0x0C50,
|
|
||||||
GL_POINT_SMOOTH_HINT = 0x0C51,
|
|
||||||
GL_POLYGON_SMOOTH_HINT = 0x0C53,
|
|
||||||
GL_DONT_CARE = 0x1100,
|
|
||||||
GL_FASTEST = 0x1101,
|
|
||||||
GL_NICEST = 0x1102,
|
|
||||||
|
|
||||||
/* Scissor box */
|
|
||||||
GL_SCISSOR_TEST = 0x0C11,
|
|
||||||
GL_SCISSOR_BOX = 0x0C10,
|
|
||||||
|
|
||||||
/* Pixel Mode / Transfer */
|
|
||||||
GL_MAP_COLOR = 0x0D10,
|
|
||||||
GL_MAP_STENCIL = 0x0D11,
|
|
||||||
GL_INDEX_SHIFT = 0x0D12,
|
|
||||||
GL_INDEX_OFFSET = 0x0D13,
|
|
||||||
GL_RED_SCALE = 0x0D14,
|
|
||||||
GL_RED_BIAS = 0x0D15,
|
|
||||||
GL_GREEN_SCALE = 0x0D18,
|
|
||||||
GL_GREEN_BIAS = 0x0D19,
|
|
||||||
GL_BLUE_SCALE = 0x0D1A,
|
|
||||||
GL_BLUE_BIAS = 0x0D1B,
|
|
||||||
GL_ALPHA_SCALE = 0x0D1C,
|
|
||||||
GL_ALPHA_BIAS = 0x0D1D,
|
|
||||||
GL_DEPTH_SCALE = 0x0D1E,
|
|
||||||
GL_DEPTH_BIAS = 0x0D1F,
|
|
||||||
GL_PIXEL_MAP_S_TO_S_SIZE = 0x0CB1,
|
|
||||||
GL_PIXEL_MAP_I_TO_I_SIZE = 0x0CB0,
|
|
||||||
GL_PIXEL_MAP_I_TO_R_SIZE = 0x0CB2,
|
|
||||||
GL_PIXEL_MAP_I_TO_G_SIZE = 0x0CB3,
|
|
||||||
GL_PIXEL_MAP_I_TO_B_SIZE = 0x0CB4,
|
|
||||||
GL_PIXEL_MAP_I_TO_A_SIZE = 0x0CB5,
|
|
||||||
GL_PIXEL_MAP_R_TO_R_SIZE = 0x0CB6,
|
|
||||||
GL_PIXEL_MAP_G_TO_G_SIZE = 0x0CB7,
|
|
||||||
GL_PIXEL_MAP_B_TO_B_SIZE = 0x0CB8,
|
|
||||||
GL_PIXEL_MAP_A_TO_A_SIZE = 0x0CB9,
|
|
||||||
GL_PIXEL_MAP_S_TO_S = 0x0C71,
|
|
||||||
GL_PIXEL_MAP_I_TO_I = 0x0C70,
|
|
||||||
GL_PIXEL_MAP_I_TO_R = 0x0C72,
|
|
||||||
GL_PIXEL_MAP_I_TO_G = 0x0C73,
|
|
||||||
GL_PIXEL_MAP_I_TO_B = 0x0C74,
|
|
||||||
GL_PIXEL_MAP_I_TO_A = 0x0C75,
|
|
||||||
GL_PIXEL_MAP_R_TO_R = 0x0C76,
|
|
||||||
GL_PIXEL_MAP_G_TO_G = 0x0C77,
|
|
||||||
GL_PIXEL_MAP_B_TO_B = 0x0C78,
|
|
||||||
GL_PIXEL_MAP_A_TO_A = 0x0C79,
|
|
||||||
GL_PACK_ALIGNMENT = 0x0D05,
|
|
||||||
GL_PACK_LSB_FIRST = 0x0D01,
|
|
||||||
GL_PACK_ROW_LENGTH = 0x0D02,
|
|
||||||
GL_PACK_SKIP_PIXELS = 0x0D04,
|
|
||||||
GL_PACK_SKIP_ROWS = 0x0D03,
|
|
||||||
GL_PACK_SWAP_BYTES = 0x0D00,
|
|
||||||
GL_UNPACK_ALIGNMENT = 0x0CF5,
|
|
||||||
GL_UNPACK_LSB_FIRST = 0x0CF1,
|
|
||||||
GL_UNPACK_ROW_LENGTH = 0x0CF2,
|
|
||||||
GL_UNPACK_SKIP_PIXELS = 0x0CF4,
|
|
||||||
GL_UNPACK_SKIP_ROWS = 0x0CF3,
|
|
||||||
GL_UNPACK_SWAP_BYTES = 0x0CF0,
|
|
||||||
GL_ZOOM_X = 0x0D16,
|
|
||||||
GL_ZOOM_Y = 0x0D17,
|
|
||||||
|
|
||||||
/* Texture mapping */
|
|
||||||
GL_TEXTURE_ENV = 0x2300,
|
|
||||||
GL_TEXTURE_ENV_MODE = 0x2200,
|
|
||||||
GL_TEXTURE_1D = 0x0DE0,
|
|
||||||
GL_TEXTURE_2D = 0x0DE1,
|
|
||||||
GL_TEXTURE_WRAP_S = 0x2802,
|
|
||||||
GL_TEXTURE_WRAP_T = 0x2803,
|
|
||||||
GL_TEXTURE_MAG_FILTER = 0x2800,
|
|
||||||
GL_TEXTURE_MIN_FILTER = 0x2801,
|
|
||||||
GL_TEXTURE_ENV_COLOR = 0x2201,
|
|
||||||
GL_TEXTURE_GEN_S = 0x0C60,
|
|
||||||
GL_TEXTURE_GEN_T = 0x0C61,
|
|
||||||
GL_TEXTURE_GEN_MODE = 0x2500,
|
|
||||||
GL_TEXTURE_BORDER_COLOR = 0x1004,
|
|
||||||
GL_TEXTURE_WIDTH = 0x1000,
|
|
||||||
GL_TEXTURE_HEIGHT = 0x1001,
|
|
||||||
GL_TEXTURE_BORDER = 0x1005,
|
|
||||||
GL_TEXTURE_COMPONENTS = 0x1003,
|
|
||||||
GL_NEAREST_MIPMAP_NEAREST = 0x2700,
|
|
||||||
GL_NEAREST_MIPMAP_LINEAR = 0x2702,
|
|
||||||
GL_LINEAR_MIPMAP_NEAREST = 0x2701,
|
|
||||||
GL_LINEAR_MIPMAP_LINEAR = 0x2703,
|
|
||||||
GL_OBJECT_LINEAR = 0x2401,
|
|
||||||
GL_OBJECT_PLANE = 0x2501,
|
|
||||||
GL_EYE_LINEAR = 0x2400,
|
|
||||||
GL_EYE_PLANE = 0x2502,
|
|
||||||
GL_SPHERE_MAP = 0x2402,
|
|
||||||
GL_DECAL = 0x2101,
|
|
||||||
GL_MODULATE = 0x2100,
|
|
||||||
GL_NEAREST = 0x2600,
|
|
||||||
GL_REPEAT = 0x2901,
|
|
||||||
GL_CLAMP = 0x2900,
|
|
||||||
GL_S = 0x2000,
|
|
||||||
GL_T = 0x2001,
|
|
||||||
GL_R = 0x2002,
|
|
||||||
GL_Q = 0x2003,
|
|
||||||
GL_TEXTURE_GEN_R = 0x0C62,
|
|
||||||
GL_TEXTURE_GEN_Q = 0x0C63,
|
|
||||||
|
|
||||||
GL_PROXY_TEXTURE_1D = 0x8063,
|
|
||||||
GL_PROXY_TEXTURE_2D = 0x8064,
|
|
||||||
GL_TEXTURE_PRIORITY = 0x8066,
|
|
||||||
GL_TEXTURE_RESIDENT = 0x8067,
|
|
||||||
GL_TEXTURE_1D_BINDING = 0x8068,
|
|
||||||
GL_TEXTURE_2D_BINDING = 0x8069,
|
|
||||||
|
|
||||||
/* Internal texture formats */
|
|
||||||
GL_ALPHA4 = 0x803B,
|
|
||||||
GL_ALPHA8 = 0x803C,
|
|
||||||
GL_ALPHA12 = 0x803D,
|
|
||||||
GL_ALPHA16 = 0x803E,
|
|
||||||
GL_LUMINANCE4 = 0x803F,
|
|
||||||
GL_LUMINANCE8 = 0x8040,
|
|
||||||
GL_LUMINANCE12 = 0x8041,
|
|
||||||
GL_LUMINANCE16 = 0x8042,
|
|
||||||
GL_LUMINANCE4_ALPHA4 = 0x8043,
|
|
||||||
GL_LUMINANCE6_ALPHA2 = 0x8044,
|
|
||||||
GL_LUMINANCE8_ALPHA8 = 0x8045,
|
|
||||||
GL_LUMINANCE12_ALPHA4 = 0x8046,
|
|
||||||
GL_LUMINANCE12_ALPHA12 = 0x8047,
|
|
||||||
GL_LUMINANCE16_ALPHA16 = 0x8048,
|
|
||||||
GL_INTENSITY = 0x8049,
|
|
||||||
GL_INTENSITY4 = 0x804A,
|
|
||||||
GL_INTENSITY8 = 0x804B,
|
|
||||||
GL_INTENSITY12 = 0x804C,
|
|
||||||
GL_INTENSITY16 = 0x804D,
|
|
||||||
GL_R3_G3_B2 = 0x2A10,
|
|
||||||
GL_RGB4 = 0x804F,
|
|
||||||
GL_RGB5 = 0x8050,
|
|
||||||
GL_RGB8 = 0x8051,
|
|
||||||
GL_RGB10 = 0x8052,
|
|
||||||
GL_RGB12 = 0x8053,
|
|
||||||
GL_RGB16 = 0x8054,
|
|
||||||
GL_RGBA2 = 0x8055,
|
|
||||||
GL_RGBA4 = 0x8056,
|
|
||||||
GL_RGB5_A1 = 0x8057,
|
|
||||||
GL_RGBA8 = 0x8058,
|
|
||||||
GL_RGB10_A2 = 0x8059,
|
|
||||||
GL_RGBA12 = 0x805A,
|
|
||||||
GL_RGBA16 = 0x805B,
|
|
||||||
|
|
||||||
/* Utility */
|
|
||||||
GL_VENDOR = 0x1F00,
|
|
||||||
GL_RENDERER = 0x1F01,
|
|
||||||
GL_VERSION = 0x1F02,
|
|
||||||
GL_EXTENSIONS = 0x1F03,
|
|
||||||
|
|
||||||
/* Errors */
|
|
||||||
GL_INVALID_VALUE = 0x0501,
|
|
||||||
GL_INVALID_ENUM = 0x0500,
|
|
||||||
GL_INVALID_OPERATION = 0x0502,
|
|
||||||
GL_STACK_OVERFLOW = 0x0503,
|
|
||||||
GL_STACK_UNDERFLOW = 0x0504,
|
|
||||||
GL_OUT_OF_MEMORY = 0x0505,
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 1.0 Extensions
|
|
||||||
*/
|
|
||||||
/* GL_EXT_blend_minmax and GL_EXT_blend_color */
|
|
||||||
GL_CONSTANT_COLOR_EXT = 0x8001,
|
|
||||||
GL_ONE_MINUS_CONSTANT_COLOR_EXT = 0x8002,
|
|
||||||
GL_CONSTANT_ALPHA_EXT = 0x8003,
|
|
||||||
GL_ONE_MINUS_CONSTANT_ALPHA_EXT = 0x8004,
|
|
||||||
GL_BLEND_EQUATION_EXT = 0x8009,
|
|
||||||
GL_MIN_EXT = 0x8007,
|
|
||||||
GL_MAX_EXT = 0x8008,
|
|
||||||
GL_FUNC_ADD_EXT = 0x8006,
|
|
||||||
GL_FUNC_SUBTRACT_EXT = 0x800A,
|
|
||||||
GL_FUNC_REVERSE_SUBTRACT_EXT = 0x800B,
|
|
||||||
GL_BLEND_COLOR_EXT = 0x8005,
|
|
||||||
|
|
||||||
/* GL_EXT_polygon_offset */
|
|
||||||
GL_POLYGON_OFFSET_EXT = 0x8037,
|
|
||||||
GL_POLYGON_OFFSET_FACTOR_EXT = 0x8038,
|
|
||||||
GL_POLYGON_OFFSET_BIAS_EXT = 0x8039,
|
|
||||||
|
|
||||||
/* GL_EXT_vertex_array */
|
|
||||||
GL_VERTEX_ARRAY_EXT = 0x8074,
|
|
||||||
GL_NORMAL_ARRAY_EXT = 0x8075,
|
|
||||||
GL_COLOR_ARRAY_EXT = 0x8076,
|
|
||||||
GL_INDEX_ARRAY_EXT = 0x8077,
|
|
||||||
GL_TEXTURE_COORD_ARRAY_EXT = 0x8078,
|
|
||||||
GL_EDGE_FLAG_ARRAY_EXT = 0x8079,
|
|
||||||
GL_VERTEX_ARRAY_SIZE_EXT = 0x807A,
|
|
||||||
GL_VERTEX_ARRAY_TYPE_EXT = 0x807B,
|
|
||||||
GL_VERTEX_ARRAY_STRIDE_EXT = 0x807C,
|
|
||||||
GL_VERTEX_ARRAY_COUNT_EXT = 0x807D,
|
|
||||||
GL_NORMAL_ARRAY_TYPE_EXT = 0x807E,
|
|
||||||
GL_NORMAL_ARRAY_STRIDE_EXT = 0x807F,
|
|
||||||
GL_NORMAL_ARRAY_COUNT_EXT = 0x8080,
|
|
||||||
GL_COLOR_ARRAY_SIZE_EXT = 0x8081,
|
|
||||||
GL_COLOR_ARRAY_TYPE_EXT = 0x8082,
|
|
||||||
GL_COLOR_ARRAY_STRIDE_EXT = 0x8083,
|
|
||||||
GL_COLOR_ARRAY_COUNT_EXT = 0x8084,
|
|
||||||
GL_INDEX_ARRAY_TYPE_EXT = 0x8085,
|
|
||||||
GL_INDEX_ARRAY_STRIDE_EXT = 0x8086,
|
|
||||||
GL_INDEX_ARRAY_COUNT_EXT = 0x8087,
|
|
||||||
GL_TEXTURE_COORD_ARRAY_SIZE_EXT = 0x8088,
|
|
||||||
GL_TEXTURE_COORD_ARRAY_TYPE_EXT = 0x8089,
|
|
||||||
GL_TEXTURE_COORD_ARRAY_STRIDE_EXT= 0x808A,
|
|
||||||
GL_TEXTURE_COORD_ARRAY_COUNT_EXT= 0x808B,
|
|
||||||
GL_EDGE_FLAG_ARRAY_STRIDE_EXT = 0x808C,
|
|
||||||
GL_EDGE_FLAG_ARRAY_COUNT_EXT = 0x808D,
|
|
||||||
GL_VERTEX_ARRAY_POINTER_EXT = 0x808E,
|
|
||||||
GL_NORMAL_ARRAY_POINTER_EXT = 0x808F,
|
|
||||||
GL_COLOR_ARRAY_POINTER_EXT = 0x8090,
|
|
||||||
GL_INDEX_ARRAY_POINTER_EXT = 0x8091,
|
|
||||||
GL_TEXTURE_COORD_ARRAY_POINTER_EXT= 0x8092,
|
|
||||||
GL_EDGE_FLAG_ARRAY_POINTER_EXT = 0x8093
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
|
||||||
GL_CURRENT_BIT = 0x00000001,
|
|
||||||
GL_POINT_BIT = 0x00000002,
|
|
||||||
GL_LINE_BIT = 0x00000004,
|
|
||||||
GL_POLYGON_BIT = 0x00000008,
|
|
||||||
GL_POLYGON_STIPPLE_BIT = 0x00000010,
|
|
||||||
GL_PIXEL_MODE_BIT = 0x00000020,
|
|
||||||
GL_LIGHTING_BIT = 0x00000040,
|
|
||||||
GL_FOG_BIT = 0x00000080,
|
|
||||||
GL_DEPTH_BUFFER_BIT = 0x00000100,
|
|
||||||
GL_ACCUM_BUFFER_BIT = 0x00000200,
|
|
||||||
GL_STENCIL_BUFFER_BIT = 0x00000400,
|
|
||||||
GL_VIEWPORT_BIT = 0x00000800,
|
|
||||||
GL_TRANSFORM_BIT = 0x00001000,
|
|
||||||
GL_ENABLE_BIT = 0x00002000,
|
|
||||||
GL_COLOR_BUFFER_BIT = 0x00004000,
|
|
||||||
GL_HINT_BIT = 0x00008000,
|
|
||||||
GL_EVAL_BIT = 0x00010000,
|
|
||||||
GL_LIST_BIT = 0x00020000,
|
|
||||||
GL_TEXTURE_BIT = 0x00040000,
|
|
||||||
GL_SCISSOR_BIT = 0x00080000,
|
|
||||||
GL_ALL_ATTRIB_BITS = 0x000fffff
|
|
||||||
};
|
|
||||||
|
|
||||||
/* some types */
|
|
||||||
|
|
||||||
typedef int GLenum;
|
|
||||||
typedef void GLvoid;
|
|
||||||
typedef unsigned char GLboolean;
|
|
||||||
typedef signed char GLbyte; /* 1-byte signed */
|
|
||||||
typedef short GLshort; /* 2-byte signed */
|
|
||||||
typedef int GLint; /* 4-byte signed */
|
|
||||||
typedef unsigned char GLubyte; /* 1-byte unsigned */
|
|
||||||
typedef unsigned short GLushort; /* 2-byte unsigned */
|
|
||||||
typedef unsigned int GLuint; /* 4-byte unsigned */
|
|
||||||
typedef float GLfloat; /* single precision float */
|
|
||||||
typedef double GLdouble; /* double precision float */
|
|
||||||
typedef int GLsizei;
|
|
||||||
|
|
||||||
/* functions */
|
|
||||||
|
|
||||||
void glEnable(int code);
|
|
||||||
void glDisable(int code);
|
|
||||||
|
|
||||||
void glShadeModel(int mode);
|
|
||||||
void glCullFace(int mode);
|
|
||||||
void glPolygonMode(int face,int mode);
|
|
||||||
|
|
||||||
void glBegin(int type);
|
|
||||||
void glEnd(void);
|
|
||||||
|
|
||||||
#define PROTO_GL1(name) \
|
|
||||||
void gl ## name ## 1f(float); \
|
|
||||||
void gl ## name ## 1d(double); \
|
|
||||||
void gl ## name ## 1fv(float *); \
|
|
||||||
void gl ## name ## 1dv(double *);
|
|
||||||
|
|
||||||
#define PROTO_GL2(name) \
|
|
||||||
void gl ## name ## 2f(float ,float); \
|
|
||||||
void gl ## name ## 2d(double ,double); \
|
|
||||||
void gl ## name ## 2fv(float *); \
|
|
||||||
void gl ## name ## 2dv(double *);
|
|
||||||
|
|
||||||
#define PROTO_GL3(name) \
|
|
||||||
void gl ## name ## 3f(float ,float ,float); \
|
|
||||||
void gl ## name ## 3d(double ,double ,double); \
|
|
||||||
void gl ## name ## 3fv(float *); \
|
|
||||||
void gl ## name ## 3dv(double *);
|
|
||||||
|
|
||||||
#define PROTO_GL4(name) \
|
|
||||||
void gl ## name ## 4f(float ,float ,float, float ); \
|
|
||||||
void gl ## name ## 4d(double ,double ,double, double ); \
|
|
||||||
void gl ## name ## 4fv(float *); \
|
|
||||||
void gl ## name ## 4dv(double *);
|
|
||||||
|
|
||||||
PROTO_GL2(Vertex)
|
|
||||||
PROTO_GL3(Vertex)
|
|
||||||
PROTO_GL4(Vertex)
|
|
||||||
|
|
||||||
PROTO_GL3(Color)
|
|
||||||
PROTO_GL4(Color)
|
|
||||||
|
|
||||||
PROTO_GL3(Normal)
|
|
||||||
|
|
||||||
PROTO_GL1(TexCoord)
|
|
||||||
PROTO_GL2(TexCoord)
|
|
||||||
PROTO_GL3(TexCoord)
|
|
||||||
PROTO_GL4(TexCoord)
|
|
||||||
|
|
||||||
void glEdgeFlag(int flag);
|
|
||||||
|
|
||||||
/* matrix */
|
|
||||||
void glMatrixMode(int mode);
|
|
||||||
void glLoadMatrixf(const float *m);
|
|
||||||
void glLoadIdentity(void);
|
|
||||||
void glMultMatrixf(const float *m);
|
|
||||||
void glPushMatrix(void);
|
|
||||||
void glPopMatrix(void);
|
|
||||||
void glRotatef(float angle,float x,float y,float z);
|
|
||||||
void glTranslatef(float x,float y,float z);
|
|
||||||
void glScalef(float x,float y,float z);
|
|
||||||
|
|
||||||
void glViewport(int x,int y,int width,int height);
|
|
||||||
void glFrustum(double left,double right,double bottom,double top,
|
|
||||||
double near_,double far_);
|
|
||||||
|
|
||||||
/* lists */
|
|
||||||
unsigned int glGenLists(int range);
|
|
||||||
int glIsList(unsigned int list);
|
|
||||||
void glNewList(unsigned int list,int mode);
|
|
||||||
void glEndList(void);
|
|
||||||
void glCallList(unsigned int list);
|
|
||||||
|
|
||||||
/* clear */
|
|
||||||
void glClear(int mask);
|
|
||||||
void glClearColor(float r,float g,float b,float a);
|
|
||||||
void glClearDepth(double depth);
|
|
||||||
|
|
||||||
/* selection */
|
|
||||||
int glRenderMode(int mode);
|
|
||||||
void glSelectBuffer(int size,unsigned int *buf);
|
|
||||||
|
|
||||||
void glInitNames(void);
|
|
||||||
void glPushName(unsigned int name);
|
|
||||||
void glPopName(void);
|
|
||||||
void glLoadName(unsigned int name);
|
|
||||||
|
|
||||||
/* textures */
|
|
||||||
void glGenTextures(int n, unsigned int *textures);
|
|
||||||
void glDeleteTextures(int n, const unsigned int *textures);
|
|
||||||
void glBindTexture(int target,int texture);
|
|
||||||
void glTexImage2D( int target, int level, int components,
|
|
||||||
int width, int height, int border,
|
|
||||||
int format, int type, void *pixels);
|
|
||||||
void glTexEnvi(int target,int pname,int param);
|
|
||||||
void glTexParameteri(int target,int pname,int param);
|
|
||||||
void glPixelStorei(int pname,int param);
|
|
||||||
|
|
||||||
/* lighting */
|
|
||||||
|
|
||||||
void glMaterialfv(int mode,int type,float *v);
|
|
||||||
void glMaterialf(int mode,int type,float v);
|
|
||||||
void glColorMaterial(int mode,int type);
|
|
||||||
|
|
||||||
void glLightfv(int light,int type,float *v);
|
|
||||||
void glLightf(int light,int type,float v);
|
|
||||||
void glLightModeli(int pname,int param);
|
|
||||||
void glLightModelfv(int pname,float *param);
|
|
||||||
|
|
||||||
/* misc */
|
|
||||||
|
|
||||||
void glFlush(void);
|
|
||||||
void glHint(int target,int mode);
|
|
||||||
void glGetIntegerv(int pname,int *params);
|
|
||||||
void glGetFloatv(int pname, float *v);
|
|
||||||
void glFrontFace(int mode);
|
|
||||||
|
|
||||||
/* opengl 1.2 arrays */
|
|
||||||
void glEnableClientState(GLenum array);
|
|
||||||
void glDisableClientState(GLenum array);
|
|
||||||
void glArrayElement(GLint i);
|
|
||||||
void glVertexPointer(GLint size, GLenum type, GLsizei stride,
|
|
||||||
const GLvoid *pointer);
|
|
||||||
void glColorPointer(GLint size, GLenum type, GLsizei stride,
|
|
||||||
const GLvoid *pointer);
|
|
||||||
void glNormalPointer(GLenum type, GLsizei stride,
|
|
||||||
const GLvoid *pointer);
|
|
||||||
void glTexCoordPointer(GLint size, GLenum type, GLsizei stride,
|
|
||||||
const GLvoid *pointer);
|
|
||||||
|
|
||||||
/* opengl 1.2 polygon offset */
|
|
||||||
void glPolygonOffset(GLfloat factor, GLfloat units);
|
|
||||||
|
|
||||||
/* not implemented, just added to compile */
|
|
||||||
/*
|
|
||||||
inline void glPointSize(float) {}
|
|
||||||
inline void glLineWidth(float) {}
|
|
||||||
inline void glDeleteLists(int, int) {}
|
|
||||||
inline void glDepthFunc(int) {}
|
|
||||||
inline void glBlendFunc(int, int) {}
|
|
||||||
inline void glTexEnvf(int, int, int) {}
|
|
||||||
inline void glOrtho(float,float,float,float,float,float){}
|
|
||||||
inline void glVertex2i(int,int) {}
|
|
||||||
inline void glDepthMask(int) {}
|
|
||||||
inline void glFogi(int, int) {}
|
|
||||||
inline void glFogfv(int, const float*) {}
|
|
||||||
inline void glFogf(int, float) {}
|
|
||||||
inline void glRasterPos2f(float, float) {}
|
|
||||||
inline void glPolygonStipple(void*) {}
|
|
||||||
inline void glTexParameterf(int, int, int) {};
|
|
||||||
*/
|
|
||||||
/* non compatible functions */
|
|
||||||
|
|
||||||
void glDebug(int mode);
|
|
||||||
|
|
||||||
void glInit(void *zbuffer);
|
|
||||||
void glClose(void);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,44 +0,0 @@
|
|||||||
|
|
||||||
#ifndef GLU_H
|
|
||||||
#define GLU_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void gluPerspective( GLdouble fovy, GLdouble aspect,
|
|
||||||
GLdouble zNear, GLdouble zFar );
|
|
||||||
|
|
||||||
void
|
|
||||||
gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez,
|
|
||||||
GLdouble centerx, GLdouble centery, GLdouble centerz,
|
|
||||||
GLdouble upx, GLdouble upy, GLdouble upz);
|
|
||||||
|
|
||||||
|
|
||||||
void drawTorus(float rc, int numc, float rt, int numt);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int draw_style;
|
|
||||||
} GLUquadricObj;
|
|
||||||
|
|
||||||
#define GLU_LINE 0
|
|
||||||
|
|
||||||
GLUquadricObj* gluNewQuadric(void);
|
|
||||||
void gluQuadricDrawStyle(GLUquadricObj *obj, int style);
|
|
||||||
|
|
||||||
void gluSphere(GLUquadricObj *qobj,
|
|
||||||
float radius,int slices,int stacks);
|
|
||||||
void gluCylinder( GLUquadricObj *qobj,
|
|
||||||
GLdouble baseRadius, GLdouble topRadius, GLdouble height,
|
|
||||||
GLint slices, GLint stacks );
|
|
||||||
void gluDisk( GLUquadricObj *qobj,
|
|
||||||
GLdouble innerRadius, GLdouble outerRadius,
|
|
||||||
GLint slices, GLint loops );
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
|
@ -1,28 +0,0 @@
|
|||||||
#ifndef KOSGL_H
|
|
||||||
#define KOSGL_H
|
|
||||||
|
|
||||||
#include "gl.h"
|
|
||||||
#include "glu.h"
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef void *KOSGLContext;
|
|
||||||
|
|
||||||
extern KOSGLContext kosglCreateContext( KOSGLContext shareList, int flags );
|
|
||||||
|
|
||||||
extern void kosglDestroyContext( KOSGLContext ctx1 );
|
|
||||||
|
|
||||||
extern int kosglMakeCurrent( int win_x0, int win_y0,
|
|
||||||
int win_x, int win_y,
|
|
||||||
KOSGLContext ctx);
|
|
||||||
|
|
||||||
extern void kosglSwapBuffers();
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -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 <varargs.h>."
|
|
||||||
#error "Revise your code to use <stdarg.h>."
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,124 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
section '.text' executable
|
|
||||||
|
|
||||||
include '../proc32.inc'
|
|
||||||
public _ksys_get_filesize
|
|
||||||
public _ksys_readfile
|
|
||||||
public _ksys_rewritefile
|
|
||||||
public _ksys_appendtofile
|
|
||||||
|
|
||||||
align 4
|
|
||||||
proc _ksys_get_filesize stdcall, filename:dword
|
|
||||||
|
|
||||||
xor eax,eax
|
|
||||||
mov ebx,[filename]
|
|
||||||
mov [fileinfo.subproc],dword 5
|
|
||||||
mov [fileinfo.offset_l],eax
|
|
||||||
mov [fileinfo.offset_h],eax
|
|
||||||
mov [fileinfo.size],eax
|
|
||||||
mov [fileinfo.data],dword buffer_for_info
|
|
||||||
mov [fileinfo.letter],al
|
|
||||||
mov [fileinfo.filename],ebx
|
|
||||||
|
|
||||||
mov eax,70
|
|
||||||
mov ebx,fileinfo
|
|
||||||
int 0x40
|
|
||||||
|
|
||||||
test eax,eax
|
|
||||||
jnz error_for_file_size
|
|
||||||
|
|
||||||
mov eax,[buffer_for_info+32] ;file size
|
|
||||||
ret
|
|
||||||
|
|
||||||
error_for_file_size:
|
|
||||||
neg eax
|
|
||||||
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
|
|
||||||
align 4
|
|
||||||
proc _ksys_readfile stdcall,filename:dword,position:dword,sizeblock:dword,buffer:dword, preadbytes:dword
|
|
||||||
|
|
||||||
xor eax,eax
|
|
||||||
mov ebx,[position]
|
|
||||||
mov ecx,[sizeblock]
|
|
||||||
mov edx,[buffer]
|
|
||||||
mov esi,[filename]
|
|
||||||
mov [fileinfo.subproc],eax
|
|
||||||
mov [fileinfo.offset_l],ebx
|
|
||||||
mov [fileinfo.offset_h],eax
|
|
||||||
mov [fileinfo.size],ecx
|
|
||||||
mov [fileinfo.data],edx
|
|
||||||
mov [fileinfo.letter],al
|
|
||||||
mov [fileinfo.filename],esi
|
|
||||||
|
|
||||||
mov eax,70
|
|
||||||
mov ebx,fileinfo
|
|
||||||
int 0x40
|
|
||||||
|
|
||||||
mov esi, [preadbytes]
|
|
||||||
mov [esi], ebx
|
|
||||||
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
align 4
|
|
||||||
proc _ksys_rewritefile stdcall,filename:dword,sizeblock:dword,data_write:dword
|
|
||||||
|
|
||||||
xor eax,eax
|
|
||||||
mov ebx,[sizeblock]
|
|
||||||
mov ecx,[data_write]
|
|
||||||
mov edx,[filename]
|
|
||||||
mov [fileinfo.subproc],dword 2
|
|
||||||
mov [fileinfo.offset_l],eax
|
|
||||||
mov [fileinfo.offset_h],eax
|
|
||||||
mov [fileinfo.size],ebx
|
|
||||||
mov [fileinfo.data],ecx
|
|
||||||
mov [fileinfo.letter],al
|
|
||||||
mov [fileinfo.filename],edx
|
|
||||||
|
|
||||||
mov eax,70
|
|
||||||
mov ebx,fileinfo
|
|
||||||
int 0x40
|
|
||||||
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
align 4
|
|
||||||
proc _ksys_appendtofile stdcall,filename:dword,pos:dword,sizeblock:dword,data_append:dword
|
|
||||||
|
|
||||||
xor eax,eax
|
|
||||||
mov ebx,[pos]
|
|
||||||
mov ecx,[sizeblock]
|
|
||||||
mov edx,[data_append]
|
|
||||||
mov esi,[filename]
|
|
||||||
mov [fileinfo.subproc],dword 3
|
|
||||||
mov [fileinfo.offset_l],ebx
|
|
||||||
mov [fileinfo.offset_h],eax
|
|
||||||
mov [fileinfo.size],ecx
|
|
||||||
mov [fileinfo.data],edx
|
|
||||||
mov [fileinfo.letter],al
|
|
||||||
mov [fileinfo.filename],esi
|
|
||||||
|
|
||||||
mov eax,70
|
|
||||||
mov ebx,fileinfo
|
|
||||||
int 0x40
|
|
||||||
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
struc FILEIO
|
|
||||||
{
|
|
||||||
.subproc rd 1
|
|
||||||
.offset_l rd 1
|
|
||||||
.offset_h rd 1
|
|
||||||
.size rd 1
|
|
||||||
.data rd 1
|
|
||||||
.letter rb 1
|
|
||||||
.filename rd 1
|
|
||||||
}
|
|
||||||
|
|
||||||
fileinfo FILEIO
|
|
||||||
buffer_for_info rd 11
|
|
@ -1,54 +0,0 @@
|
|||||||
format ELF
|
|
||||||
include "public_stdcall.inc"
|
|
||||||
section '.text' executable
|
|
||||||
public_stdcall _ksys_set_background_size,8
|
|
||||||
;arg1 - xsize
|
|
||||||
;arg2 - ysize
|
|
||||||
push ebx
|
|
||||||
mov ecx,[esp+8]
|
|
||||||
mov edx,[esp+12]
|
|
||||||
mov eax,15
|
|
||||||
mov ebx,1
|
|
||||||
int 0x40
|
|
||||||
pop ebx
|
|
||||||
ret 8
|
|
||||||
public_stdcall _ksys_write_background_mem,8
|
|
||||||
;arg1 - pos
|
|
||||||
;arg2 - color
|
|
||||||
push ebx
|
|
||||||
mov eax,15
|
|
||||||
mov ebx,2
|
|
||||||
mov ecx,[esp+8]
|
|
||||||
mov edx,[esp+12]
|
|
||||||
int 0x40
|
|
||||||
pop ebx
|
|
||||||
ret 8
|
|
||||||
public_stdcall _ksys_draw_background,0
|
|
||||||
mov edx,ebx
|
|
||||||
mov eax,15
|
|
||||||
mov ebx,3
|
|
||||||
int 0x40
|
|
||||||
mov ebx,edx
|
|
||||||
ret
|
|
||||||
public_stdcall _ksys_set_background_draw_type,4
|
|
||||||
;arg1 - type
|
|
||||||
mov edx,ebx
|
|
||||||
mov eax,15
|
|
||||||
mov ebx,4
|
|
||||||
mov ecx,[esp+4]
|
|
||||||
int 0x40
|
|
||||||
mov ebx,edx
|
|
||||||
ret 4
|
|
||||||
public_stdcall _ksys_background_blockmove,12
|
|
||||||
;arg1 - source
|
|
||||||
;arg2 - position in dest
|
|
||||||
;arg3 - size
|
|
||||||
push ebx esi
|
|
||||||
mov eax,15
|
|
||||||
mov ebx,5
|
|
||||||
mov ecx,[esp+12]
|
|
||||||
mov edx,[esp+16]
|
|
||||||
mov esi,[esp+20]
|
|
||||||
int 0x40
|
|
||||||
pop esi ebx
|
|
||||||
ret 12
|
|
@ -1,35 +0,0 @@
|
|||||||
format ELF
|
|
||||||
include "public_stdcall.inc"
|
|
||||||
section '.text' executable
|
|
||||||
public_stdcall _ksys_make_button,24
|
|
||||||
;arg1 - x
|
|
||||||
;arg2 - y
|
|
||||||
;arg3 - xsize
|
|
||||||
;arg4 - ysize
|
|
||||||
;arg5 - id
|
|
||||||
;arg6 - color
|
|
||||||
push ebx esi
|
|
||||||
mov ebx,[esp+12]
|
|
||||||
shl ebx,16
|
|
||||||
mov bx,[esp+20]
|
|
||||||
mov ecx,[esp+16]
|
|
||||||
shl ecx,16
|
|
||||||
mov cx,[esp+24]
|
|
||||||
mov edx,[esp+28]
|
|
||||||
mov esi,[esp+32]
|
|
||||||
mov eax,8
|
|
||||||
int 0x40
|
|
||||||
pop esi ebx
|
|
||||||
ret 24
|
|
||||||
|
|
||||||
public_stdcall _ksys_get_button_id,0
|
|
||||||
mov eax,17
|
|
||||||
int 0x40
|
|
||||||
test al,al
|
|
||||||
jnz .no_button
|
|
||||||
shr eax,8
|
|
||||||
ret
|
|
||||||
.no_button:
|
|
||||||
xor eax,eax
|
|
||||||
dec eax
|
|
||||||
ret
|
|
@ -1,15 +0,0 @@
|
|||||||
format ELF
|
|
||||||
|
|
||||||
include "../proc32.inc"
|
|
||||||
|
|
||||||
section '.text' executable
|
|
||||||
public _ksys_get_system_clock
|
|
||||||
|
|
||||||
align 4
|
|
||||||
proc _ksys_get_system_clock stdcall
|
|
||||||
|
|
||||||
mov eax,3
|
|
||||||
int 0x40
|
|
||||||
ret
|
|
||||||
|
|
||||||
endp
|
|
@ -1,76 +0,0 @@
|
|||||||
format ELF
|
|
||||||
include '../proc32.inc'
|
|
||||||
section '.text' executable
|
|
||||||
|
|
||||||
public _ksys_cofflib_load
|
|
||||||
public _ksys_cofflib_getproc
|
|
||||||
|
|
||||||
proc _ksys_cofflib_load stdcall, name:dword
|
|
||||||
|
|
||||||
mov eax, 68
|
|
||||||
mov ebx, 19
|
|
||||||
mov ecx, [name]
|
|
||||||
int 0x40
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
proc _ksys_cofflib_getproc stdcall, export:dword,name:dword
|
|
||||||
|
|
||||||
mov ebx,[export]
|
|
||||||
|
|
||||||
next_name_check:
|
|
||||||
|
|
||||||
mov ecx,[ebx]
|
|
||||||
test ecx,ecx
|
|
||||||
jz end_export
|
|
||||||
|
|
||||||
;cmp export string with name
|
|
||||||
mov esi,[name]
|
|
||||||
xor edi,edi
|
|
||||||
next_simbol_check:
|
|
||||||
|
|
||||||
xor eax,eax
|
|
||||||
mov al,[ecx]
|
|
||||||
; siemargl moved to post-check
|
|
||||||
; test al,al
|
|
||||||
; jz exit_check_simbol
|
|
||||||
|
|
||||||
xor edx,edx
|
|
||||||
mov dl,[esi]
|
|
||||||
cmp al,dl
|
|
||||||
je simbols_equvalent
|
|
||||||
add edi,1
|
|
||||||
jmp exit_check_simbol
|
|
||||||
simbols_equvalent:
|
|
||||||
test al,al
|
|
||||||
jz exit_check_simbol
|
|
||||||
|
|
||||||
;pushad
|
|
||||||
|
|
||||||
;mov cl,al
|
|
||||||
;mov ebx,1
|
|
||||||
;mov eax,63
|
|
||||||
;int 0x40
|
|
||||||
|
|
||||||
;popad
|
|
||||||
|
|
||||||
add ecx,1
|
|
||||||
add esi,1
|
|
||||||
jmp next_simbol_check
|
|
||||||
exit_check_simbol:
|
|
||||||
|
|
||||||
test edi,edi
|
|
||||||
jnz function_not_finded
|
|
||||||
mov eax,[ebx+4]
|
|
||||||
jmp end_export
|
|
||||||
function_not_finded:
|
|
||||||
|
|
||||||
add ebx,8
|
|
||||||
|
|
||||||
jmp next_name_check
|
|
||||||
|
|
||||||
end_export:
|
|
||||||
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
|||||||
format ELF
|
|
||||||
include "public_stdcall.inc"
|
|
||||||
section '.text' executable
|
|
||||||
public_stdcall _ksys_get_date,0
|
|
||||||
mov eax,29
|
|
||||||
int 0x40
|
|
||||||
ret
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user