bindings: Mostly finish fox32os bindings
This commit is contained in:
parent
435ea9f698
commit
5c94905a98
155
gcc/bindings.c
155
gcc/bindings.c
|
@ -640,19 +640,41 @@ static inline unsigned int random_range(
|
|||
|
||||
// system jump table
|
||||
|
||||
static inline void get_os_version(void) {
|
||||
static inline struct return3 get_os_version(void) {
|
||||
struct return3 result_0;
|
||||
call(0x00000810);
|
||||
ret(0, result_0.return0);
|
||||
ret(1, result_0.return1);
|
||||
ret(2, result_0.return2);
|
||||
return result_0;
|
||||
}
|
||||
|
||||
// FXF jump table
|
||||
|
||||
static inline void parse_fxf_binary(void) {
|
||||
static inline unsigned char* parse_fxf_binary(
|
||||
unsigned char* fxf_memory_buffer
|
||||
) {
|
||||
unsigned char* result_0;
|
||||
parameter(0, fxf_memory_buffer);
|
||||
call(0x00000910);
|
||||
ret(0, result_0);
|
||||
return result_0;
|
||||
}
|
||||
|
||||
// task jump table
|
||||
|
||||
static inline void new_task(void) {
|
||||
static inline void new_task(
|
||||
unsigned char task_id,
|
||||
unsigned char* initial_instruction_pointer,
|
||||
unsigned char* initial_stack_pointer,
|
||||
unsigned char* code_block_to_free,
|
||||
unsigned char* stack_block_to_free
|
||||
) {
|
||||
parameter(0, task_id);
|
||||
parameter(1, initial_instruction_pointer);
|
||||
parameter(2, initial_stack_pointer);
|
||||
parameter(3, code_block_to_free);
|
||||
parameter(4, stack_block_to_free);
|
||||
call(0x00000A10);
|
||||
}
|
||||
|
||||
|
@ -664,12 +686,18 @@ static inline void end_current_task(void) {
|
|||
call(0x00000A18);
|
||||
}
|
||||
|
||||
static inline void get_current_task_id(void) {
|
||||
static inline unsigned char get_current_task_id(void) {
|
||||
unsigned char result_0;
|
||||
call(0x00000A1C);
|
||||
ret(0, result_0);
|
||||
return result_0;
|
||||
}
|
||||
|
||||
static inline void get_unused_task_id(void) {
|
||||
static inline unsigned char get_unused_task_id(void) {
|
||||
unsigned char result_0;
|
||||
call(0x00000A20);
|
||||
ret(0, result_0);
|
||||
return result_0;
|
||||
}
|
||||
|
||||
static inline void is_task_id_used(void) {
|
||||
|
@ -682,11 +710,20 @@ static inline void save_state_and_yield_task(void) {
|
|||
|
||||
// memory jump table
|
||||
|
||||
static inline void allocate_memory(void) {
|
||||
static inline unsigned char* allocate_memory(
|
||||
unsigned int bytes_to_allocate
|
||||
) {
|
||||
unsigned char* result_0;
|
||||
parameter(0, bytes_to_allocate);
|
||||
call(0x00000B10);
|
||||
ret(0, result_0);
|
||||
return result_0;
|
||||
}
|
||||
|
||||
static inline void free_memory(void) {
|
||||
static inline void free_memory(
|
||||
unsigned char* allocated_block
|
||||
) {
|
||||
parameter(0, allocated_block);
|
||||
call(0x00000B14);
|
||||
}
|
||||
|
||||
|
@ -720,7 +757,28 @@ static inline void destroy_window(
|
|||
call(0x00000C14);
|
||||
}
|
||||
|
||||
static inline void new_window_event(void) {
|
||||
static inline void new_window_event(
|
||||
unsigned int event_type,
|
||||
unsigned int parameter0,
|
||||
unsigned int parameter1,
|
||||
unsigned int parameter2,
|
||||
unsigned int parameter3,
|
||||
unsigned int parameter4,
|
||||
unsigned int parameter5,
|
||||
unsigned int parameter6,
|
||||
unsigned int parameter7,
|
||||
unsigned char* window_struct
|
||||
) {
|
||||
parameter(0, event_type);
|
||||
parameter(1, parameter0);
|
||||
parameter(2, parameter1);
|
||||
parameter(3, parameter2);
|
||||
parameter(4, parameter3);
|
||||
parameter(5, parameter4);
|
||||
parameter(6, parameter5);
|
||||
parameter(7, parameter6);
|
||||
parameter(8, parameter7);
|
||||
parameter(9, window_struct);
|
||||
call(0x00000C18);
|
||||
}
|
||||
|
||||
|
@ -785,12 +843,25 @@ static inline void start_dragging_window(
|
|||
call(0x00000C30);
|
||||
}
|
||||
|
||||
static inline void new_messagebox(void) {
|
||||
static inline void new_messagebox(
|
||||
char* first_line_str,
|
||||
char* second_line_str,
|
||||
char* third_line_str,
|
||||
unsigned short x,
|
||||
unsigned short y,
|
||||
unsigned short width
|
||||
) {
|
||||
parameter(0, first_line_str);
|
||||
parameter(1, second_line_str);
|
||||
parameter(2, third_line_str);
|
||||
parameter(3, x);
|
||||
parameter(4, y);
|
||||
parameter(5, width);
|
||||
call(0x00000C34);
|
||||
}
|
||||
|
||||
static inline unsigned int* get_active_window_struct(void) {
|
||||
unsigned int* result_0;
|
||||
static inline unsigned char* get_active_window_struct(void) {
|
||||
unsigned char* result_0;
|
||||
call(0x00000C38);
|
||||
ret(0, result_0);
|
||||
return result_0;
|
||||
|
@ -798,33 +869,81 @@ static inline unsigned int* get_active_window_struct(void) {
|
|||
|
||||
// VFS jump table
|
||||
|
||||
static inline void open(void) {
|
||||
static inline unsigned short open(
|
||||
char* file_name,
|
||||
unsigned char disk_id,
|
||||
unsigned char* file_struct
|
||||
) {
|
||||
unsigned short result_0;
|
||||
parameter(0, file_name);
|
||||
parameter(1, disk_id);
|
||||
parameter(2, file_struct);
|
||||
call(0x00000D10);
|
||||
ret(0, result_0);
|
||||
return result_0;
|
||||
}
|
||||
|
||||
static inline void seek(void) {
|
||||
static inline void seek(
|
||||
unsigned int offset,
|
||||
unsigned char* file_struct
|
||||
) {
|
||||
parameter(0, offset);
|
||||
parameter(1, file_struct);
|
||||
call(0x00000D14);
|
||||
}
|
||||
|
||||
static inline void tell(void) {
|
||||
static inline unsigned int tell(
|
||||
unsigned char* file_struct
|
||||
) {
|
||||
unsigned int result_0;
|
||||
parameter(0, file_struct);
|
||||
call(0x00000D18);
|
||||
ret(0, result_0);
|
||||
return result_0;
|
||||
}
|
||||
|
||||
static inline void read(void) {
|
||||
static inline unsigned int read(
|
||||
unsigned int bytes_to_read,
|
||||
unsigned char* file_struct,
|
||||
unsigned char* destination_buffer
|
||||
) {
|
||||
unsigned int result_0;
|
||||
parameter(0, bytes_to_read);
|
||||
parameter(1, file_struct);
|
||||
parameter(2, destination_buffer);
|
||||
call(0x00000D1C);
|
||||
ret(0, result_0);
|
||||
return result_0;
|
||||
}
|
||||
|
||||
static inline void write(void) {
|
||||
static inline void write(
|
||||
unsigned int bytes_to_write,
|
||||
unsigned char* file_struct,
|
||||
unsigned char* source_buffer
|
||||
) {
|
||||
parameter(0, bytes_to_write);
|
||||
parameter(1, file_struct);
|
||||
parameter(2, source_buffer);
|
||||
call(0x00000D20);
|
||||
}
|
||||
|
||||
// widget jump table
|
||||
|
||||
static inline void draw_widgets_to_window(void) {
|
||||
static inline void draw_widgets_to_window(
|
||||
unsigned char* window_struct
|
||||
) {
|
||||
parameter(0, window_struct);
|
||||
call(0x00000E10);
|
||||
}
|
||||
|
||||
static inline void handle_widget_click(void) {
|
||||
static inline void handle_widget_click(
|
||||
unsigned char* window_struct,
|
||||
unsigned short x,
|
||||
unsigned short y
|
||||
) {
|
||||
parameter(0, window_struct);
|
||||
parameter(1, x);
|
||||
parameter(2, y);
|
||||
call(0x00000E14);
|
||||
}
|
||||
|
||||
|
|
|
@ -488,35 +488,48 @@ comment("fox32os definitions")
|
|||
comment("system jump table")
|
||||
|
||||
define(0x00000810U, "get_os_version") {
|
||||
returnstruct("return0", Type("struct return3"))
|
||||
returnstruct("return1", Type("struct return3"))
|
||||
returnstruct("return2", Type("struct return3"))
|
||||
}
|
||||
|
||||
comment("FXF jump table")
|
||||
|
||||
define(0x00000910U, "parse_fxf_binary") {
|
||||
parameter(Byte.ref, "fxf_memory_buffer")
|
||||
returns(Byte.ref)
|
||||
}
|
||||
|
||||
comment("task jump table")
|
||||
|
||||
define(0x00000A10U, "new_task") {
|
||||
parameter(Byte, "task_id")
|
||||
parameter(Byte.ref, "initial_instruction_pointer")
|
||||
parameter(Byte.ref, "initial_stack_pointer")
|
||||
parameter(Byte.ref, "code_block_to_free")
|
||||
parameter(Byte.ref, "stack_block_to_free")
|
||||
}
|
||||
define(0x00000A14U, "yield_task") {
|
||||
}
|
||||
define(0x00000A18U, "end_current_task") {
|
||||
}
|
||||
define(0x00000A14U, "yield_task") {}
|
||||
define(0x00000A18U, "end_current_task") {}
|
||||
define(0x00000A1CU, "get_current_task_id") {
|
||||
returns(Byte)
|
||||
}
|
||||
define(0x00000A20U, "get_unused_task_id") {
|
||||
returns(Byte)
|
||||
}
|
||||
define(0x00000A24U, "is_task_id_used") {
|
||||
// TODO: returning a value based on the Z flag
|
||||
}
|
||||
define(0x00000A28U, "save_state_and_yield_task") {
|
||||
}
|
||||
define(0x00000A28U, "save_state_and_yield_task") {}
|
||||
|
||||
comment("memory jump table")
|
||||
|
||||
define(0x00000B10U, "allocate_memory") {
|
||||
parameter(Word, "bytes_to_allocate")
|
||||
returns(Byte.ref)
|
||||
}
|
||||
define(0x00000B14U, "free_memory") {
|
||||
parameter(Byte.ref, "allocated_block")
|
||||
}
|
||||
|
||||
comment("window jump table")
|
||||
|
@ -535,6 +548,16 @@ define(0x00000C14U, "destroy_window") {
|
|||
parameter(Byte.ref, "window_struct")
|
||||
}
|
||||
define(0x00000C18U, "new_window_event") {
|
||||
parameter(Word, "event_type")
|
||||
parameter(Word, "parameter0")
|
||||
parameter(Word, "parameter1")
|
||||
parameter(Word, "parameter2")
|
||||
parameter(Word, "parameter3")
|
||||
parameter(Word, "parameter4")
|
||||
parameter(Word, "parameter5")
|
||||
parameter(Word, "parameter6")
|
||||
parameter(Word, "parameter7")
|
||||
parameter(Byte.ref, "window_struct")
|
||||
}
|
||||
define(0x00000C1CU, "get_next_window_event") {
|
||||
parameter(Byte.ref, "window_struct")
|
||||
|
@ -567,29 +590,54 @@ define(0x00000C30U, "start_dragging_window") {
|
|||
parameter(Byte.ref, "window_struct")
|
||||
}
|
||||
define(0x00000C34U, "new_messagebox") {
|
||||
parameter(IByte.ref, "first_line_str")
|
||||
parameter(IByte.ref, "second_line_str")
|
||||
parameter(IByte.ref, "third_line_str")
|
||||
parameter(Half, "x")
|
||||
parameter(Half, "y")
|
||||
parameter(Half, "width")
|
||||
}
|
||||
define(0x00000C38U, "get_active_window_struct") {
|
||||
returns(Word.ref)
|
||||
returns(Byte.ref)
|
||||
}
|
||||
|
||||
comment("VFS jump table")
|
||||
|
||||
define(0x00000D10U, "open") {
|
||||
parameter(IByte.ref, "file_name")
|
||||
parameter(Byte, "disk_id")
|
||||
parameter(Byte.ref, "file_struct")
|
||||
returns(Half)
|
||||
}
|
||||
define(0x00000D14U, "seek") {
|
||||
parameter(Word, "offset")
|
||||
parameter(Byte.ref, "file_struct")
|
||||
}
|
||||
define(0x00000D18U, "tell") {
|
||||
parameter(Byte.ref, "file_struct")
|
||||
returns(Word)
|
||||
}
|
||||
define(0x00000D1CU, "read") {
|
||||
parameter(Word, "bytes_to_read")
|
||||
parameter(Byte.ref, "file_struct")
|
||||
parameter(Byte.ref, "destination_buffer")
|
||||
returns(Word)
|
||||
}
|
||||
define(0x00000D20U, "write") {
|
||||
parameter(Word, "bytes_to_write")
|
||||
parameter(Byte.ref, "file_struct")
|
||||
parameter(Byte.ref, "source_buffer")
|
||||
}
|
||||
|
||||
comment("widget jump table")
|
||||
|
||||
define(0x00000E10U, "draw_widgets_to_window") {
|
||||
parameter(Byte.ref, "window_struct")
|
||||
}
|
||||
define(0x00000E14U, "handle_widget_click") {
|
||||
parameter(Byte.ref, "window_struct")
|
||||
parameter(Half, "x")
|
||||
parameter(Half, "y")
|
||||
}
|
||||
|
||||
comment("event types")
|
||||
|
|
Loading…
Reference in New Issue
Block a user