From d345371a26743e87454ad256d4c7a34082087650 Mon Sep 17 00:00:00 2001 From: turbocat Date: Sun, 26 Sep 2021 17:30:19 +0000 Subject: [PATCH] SDL: Adapted for building with TCC. Refactoring git-svn-id: svn://kolibrios.org@9202 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../sdk/sources/SDL-1.2.2_newlib/src/Makefile | 7 +- .../sources/SDL-1.2.2_newlib/src/Makefile.tcc | 54 +++++ .../sources/SDL-1.2.2_newlib/src/SDL_kos.h | 106 +++++++++ .../src/SYSCALL/include/menuet/os.h | 218 ------------------ .../SDL-1.2.2_newlib/src/SYSCALL/src/Makefile | 19 -- .../SDL-1.2.2_newlib/src/SYSCALL/src/os.c | 39 ---- .../sources/SDL-1.2.2_newlib/src/Tupfile.lua | 3 +- .../src/audio/SDL_kolibri_audio.c | 7 +- .../SDL-1.2.2_newlib/src/hermes/mmx_main.asm | 4 +- .../SDL-1.2.2_newlib/src/hermes/mmxp2_32.asm | 15 +- .../SDL-1.2.2_newlib/src/hermes/x86_main.asm | 8 +- .../SDL-1.2.2_newlib/src/hermes/x86p_16.asm | 22 +- .../SDL-1.2.2_newlib/src/hermes/x86p_32.asm | 29 ++- .../src/timer/dummy/SDL_systimer.c | 8 +- .../src/video/menuetos/SDL_menuetevents.c | 10 +- .../src/video/menuetos/SDL_menuetvideo.c | 51 ++-- 16 files changed, 251 insertions(+), 349 deletions(-) create mode 100644 contrib/sdk/sources/SDL-1.2.2_newlib/src/Makefile.tcc create mode 100755 contrib/sdk/sources/SDL-1.2.2_newlib/src/SDL_kos.h delete mode 100755 contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/include/menuet/os.h delete mode 100755 contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/src/Makefile delete mode 100755 contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/src/os.c diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/Makefile b/contrib/sdk/sources/SDL-1.2.2_newlib/src/Makefile index f34500dbe..231b2bcb8 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/Makefile +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/Makefile @@ -51,16 +51,15 @@ install: $(LIBNAME) mv -f $(LIBNAME) $(SDK_DIR)/lib $(LIBNAME).a: $(OBJS) - $(MAKE) -C SYSCALL/src - $(AR) -crs $(LIBNAME).a $(OBJS) SYSCALL/src/os.o + $(AR) -crs $(LIBNAME).a $(OBJS) $(LIBNAME).dll: libSDL.def $(OBJS) - $(LD) $(LDFLAGS) -o $@ libSDL.def $(OBJS) SYSCALL/src/os.o $(LIBS) -ldll -lsound -lc.dll + $(LD) $(LDFLAGS) -o $@ libSDL.def $(OBJS) $(LIBS) -ldll -lsound -lc.dll $(STRIP) $@ %.o : %.asm Makefile - nasm -f coff $< + nasm -Ihermes -f coff $< %.o : %.c Makefile $(CC) $(CFLAGS) -o $@ $< diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/Makefile.tcc b/contrib/sdk/sources/SDL-1.2.2_newlib/src/Makefile.tcc new file mode 100644 index 000000000..0a6c340d7 --- /dev/null +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/Makefile.tcc @@ -0,0 +1,54 @@ +KTCC_DIR=../../../../../programs/develop/ktcc/trunk +CC = $(KTCC_DIR)/bin/kos32-tcc +AR = kos32-ar + +LIBNAME=libSDL + +endian_OBJS = endian/SDL_endian.o +file_OBJS = file/SDL_rwops.o + +hermes_OBJS = hermes/mmxp2_32.o hermes/mmx_main.o hermes/x86p_16.o \ + hermes/x86p_32.o hermes/x86_main.o + +thread_OBJS = thread/SDL_syscond.o thread/SDL_sysmutex.o thread/SDL_syssem.o \ + thread/SDL_systhread.o thread/SDL_thread.o +timer_OBJS = timer/SDL_timer.o timer/dummy/SDL_systimer.o +event_OBJS = events/SDL_active.o events/SDL_events.o events/SDL_expose.o \ + events/SDL_keyboard.o events/SDL_mouse.o events/SDL_quit.o \ + events/SDL_resize.o +video_OBJS = video/SDL_blit_0.o video/SDL_blit_1.o video/SDL_blit_A.o \ + video/SDL_blit.o video/SDL_blit_N.o video/SDL_bmp.o \ + video/SDL_cursor.o video/SDL_gamma.o video/SDL_pixels.o \ + video/SDL_RLEaccel.o video/SDL_stretch.o video/SDL_surface.o \ + video/SDL_video.o video/SDL_yuv.o video/SDL_yuv_mmx.o \ + video/SDL_yuv_sw.o video/menuetos/SDL_menuetevents.o \ + video/menuetos/SDL_menuetvideo.o +audio_OBJS = audio/SDL_kolibri_audio.o + +curr_OBJS = SDL.o SDL_error.o SDL_fatal.o SDL_getenv.o + +OBJS = $(endian_OBJS) $(file_OBJS) $(hermes_OBJS) $(thread_OBJS) \ + $(timer_OBJS) $(event_OBJS) $(video_OBJS) $(curr_OBJS) $(audio_OBJS) + +CFLAGS = -c -O2 -D_REENTRANT -I../include -I syscall/include -I. -DPACKAGE=\"SDL\" -DVERSION=\"1.2.2\" \ + -fexpensive-optimizations -Wall -DENABLE_AUDIO -UDISABLE_AUDIO -DDISABLE_JOYSTICK \ + -DDISABLE_CDROM -DDISABLE_THREADS -DENABLE_TIMERS \ + -DUSE_ASMBLIT -Ihermes -Iaudio -Ivideo -Ievents \ + -Ijoystick -Icdrom -Ithread -Itimer -Iendian -Ifile -DENABLE_KOLIBRIOS \ + -DNO_SIGNAL_H -DDISABLE_STDIO -DNEED_SDL_GETENV -DENABLE_FILE -UDISABLE_FILE \ + -D__KOLIBRIOS__ -DDEBUG_VIDEO \ + -I$(KTCC_DIR)/libc.obj/include -I../../sound/include + +all: $(LIBNAME).a + +$(LIBNAME).a: $(OBJS) + $(AR) -crs $(LIBNAME).a $(OBJS) + +%.o : %.asm Makefile + nasm -Ihermes -f elf32 $< + +%.o : %.c Makefile + $(CC) $(CFLAGS) -o $@ $< + +clean: + rm -f */*.o \ rm *.o \ rm */*/*.o diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/SDL_kos.h b/contrib/sdk/sources/SDL-1.2.2_newlib/src/SDL_kos.h new file mode 100755 index 000000000..db59c5dc6 --- /dev/null +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/SDL_kos.h @@ -0,0 +1,106 @@ +#ifndef SDL_kos +#define SDL_kos + +#ifdef __cplusplus +extern "C" { +#endif + +typedef unsigned char __u8; +typedef unsigned short __u16; +typedef unsigned long __u32; + +struct process_table_entry +{ + __u32 cpu_usage; + __u16 pos_in_windowing_stack; + __u16 win_stack_val_at_ecx; + __u16 reserved1; + char name[12]; + __u32 memstart; + __u32 memused; + __u32 pid; + __u32 winx_start,winy_start; + __u32 winx_size,winy_size; + __u16 thread_state; + __u16 reserved2; + __u32 client_left,client_top,client_width,client_height; + __u8 window_state; + __u8 reserved3[1024-71]; +}; + +static inline +void __kos__define_window(__u16 x1,__u16 y1,__u16 xsize,__u16 ysize, + __u32 body_color,__u32 grab_color,__u32 frame_color) +{ + __u32 a,b; + a=(x1<<16)|xsize; + b=(y1<<16)|ysize; + __asm__ __volatile__("int $0x40"::"a"(0),"b"(a),"c"(b),"d"(body_color),"S"(grab_color), + "D"(frame_color)); +} + +static inline void __kos__window_redraw(int status) +{ + __asm__ __volatile__("int $0x40"::"a"(12),"b"(status)); +} + +static inline +void __kos__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 +int __kos__getkey(void) +{ + __u16 __ret; + __asm__ __volatile__("int $0x40":"=a"(__ret):"0"(2)); + if(!(__ret & 0xFF)) return (__ret>>8)&0xFF; else return 0; +} + +static inline +int __kos__check_for_event(void) +{ + __u32 __ret; + __asm__ __volatile__("int $0x40":"=a"(__ret):"0"(11)); + return __ret; +} + +static inline +int __kos__set_events_mask(__u32 mask) +{ + register __u32 val; + asm volatile ("int $0x40":"=a"(val):"a"(40), "b"(mask)); + return val; +} + +static inline +void __kos__delay100(int time) +{ + __asm__ __volatile__( + "int $0x40" + ::"a"(5), "b"(time) + :"memory"); +}; + +static inline +int __kos__get_button_id() +{ + __u32 val; + __asm__ __volatile__( + "int $0x40" + :"=a"(val) + :"a"(17) + ); + return val>>8; +} + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/include/menuet/os.h b/contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/include/menuet/os.h deleted file mode 100755 index 726d8d3f9..000000000 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/include/menuet/os.h +++ /dev/null @@ -1,218 +0,0 @@ -#ifndef __GLIBC__MENUET_OS_H -#define __GLIBC__MENUET_OS_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef unsigned char __u8; -typedef unsigned short __u16; -typedef unsigned long __u32; - -#pragma pack(push,1) - -void __menuet__define_window(__u16 x1,__u16 y1,__u16 xsize,__u16 ysize, - __u32 body_color,__u32 grab_color,__u32 frame_color); -void __menuet__window_redraw(int status); -void __menuet__putpixel(__u32 x,__u32 y,__u32 color); -int __menuet__getkey(void); -__u32 __menuet__getsystemclock(void); -void __menuet__write_text(__u16 x,__u16 y,__u32 color,char * text,int len); -void __menuet__delay100(int m); -__u32 __menuet__open(char * name,char * data); -void __menuet__save(char * name,char * data,__u32 count); -void __menuet__putimage(__u16 x1,__u16 y1,__u16 xsize,__u16 ysize,char * image); -void __menuet__make_button(__u16 x1,__u16 y1,__u16 xsize,__u16 ysize, - int id,__u32 color); -int __menuet__get_button_id(void); -int __menuet__wait_for_event(void); -int __menuet__check_for_event(void); -void __menuet__bar(__u16 x1,__u16 y1,__u16 xsize,__u16 ysize,__u32 color); -void __menuet__sys_exit(void); -void * __menuet__exec_thread(void (* func_ptr)(void),__u32 stack_size,int * retp); -void __menuet__idle(void); - -void __menuet__exec_ramdisk(char * filename,char * args,...); -void __menuet__exec_hd(char * filename,char * args,...); - -struct process_table_entry -{ - __u32 cpu_usage; - __u16 pos_in_windowing_stack; - __u16 win_stack_val_at_ecx; - __u16 reserved1; - char name[12]; - __u32 memstart; - __u32 memused; - __u32 pid; - __u32 winx_start,winy_start; - __u32 winx_size,winy_size; - __u16 thread_state; - __u16 reserved2; - __u32 client_left,client_top,client_width,client_height; - __u8 window_state; - __u8 reserved3[1024-71]; -}; - -#define PID_WHOAMI (-1) - -int __menuet__get_process_table(struct process_table_entry * proctab,int pid); -void __menuet__get_screen_max(__u16 * x,__u16 * y); - -#define BTYPE_TILE 1 -#define BTYPE_STRETCH 2 - -void __menuet__set_background_size(__u32 xsz,__u32 ysz); -void __menuet__write_background_mem(__u32 pos,__u32 color); -void __menuet__draw_background(void); -void __menuet__set_background_draw_type(int type); -void __menuet__background_blockmove(char * src_ptr,__u32 bgr_dst,__u32 count); - -void __menuet__reset_mpu401(void); -void __menuet__write_mpu401(__u8 d); - -__u32 __menuet__get_date(void); - -void __menuet__line(__u16 x1,__u16 y1,__u16 x2,__u16 y2,__u32 color); - -void __menuet__set_bitfield_for_wanted_events(__u32 ev); - -#define EVENT_REDRAW 0x00000001 -#define EVENT_KEY 0x00000002 -#define EVENT_BUTTON 0x00000004 -#define EVENT_END_REQUEST 0x00000008 -#define EVENT_DESKTOP_BACK_DRAW 0x00000010 -#define EVENT_MOUSE_CHANGE 0x00000020 -#define EVENT_IPC 0x00000040 -#define EVENT_MOUSE_CURSOR_MASK 0x40000000 // the window does not receive mouse events if cursor outside window -#define EVENT_MOUSE_WINDOW_MASK 0x80000000 // inactive window does not receive mouse events - -__u32 __menuet__get_irq_owner(__u32 irq); -int __menuet__get_data_read_by_irq(__u32 irq,__u32 * num_bytes_in_buf,__u8 * data); -int __menuet__send_data_to_device(__u16 port,__u8 val); -void __menuet__program_irq(void * intr_table,__u32 irq_num); -int __menuet__reserve_irq(int irqno); -int __menuet__free_irq(int irqno); -int __menuet__reserve_port_area(__u32 start,__u32 end); -int __menuet__free_port_area(__u32 start,__u32 end); - - -#define NAME_LEN 512 - -#define STC_READ 0 -#define STC_WRITE 1 -#define STC_APPEND 2 - -struct systree_info -{ - __u32 command; - __u32 file_offset_low; - __u32 file_offset_high; - __u32 size; - __u32 data_pointer; - char _zero; - const char* nameptr; -}; - -struct systree_info2 -{ - __u32 command; - __u32 file_offset_low; - __u32 file_offset_high; - __u32 size; - __u32 data_pointer; - char name[NAME_LEN]; -}; - -struct bdfe_time -{ - __u8 seconds; - __u8 minutes; - __u8 hours; - __u8 reserved; -}; -struct bdfe_date -{ - __u8 day; - __u8 month; - __u16 year; -}; -struct bdfe_item -{ - __u32 attr; - __u8 nametype; - __u8 reserved[3]; - struct bdfe_time ctime; - struct bdfe_date cdate; - struct bdfe_time atime; - struct bdfe_date adate; - struct bdfe_time mtime; - struct bdfe_date mdate; - __u32 filesize_low; - __u32 filesize_high; -}; - -int __kolibri__system_tree_access(struct systree_info * info); -int __kolibri__system_tree_access2(struct systree_info2 * info); - -int __fslayer_open(char * name,int flags); -int __fslayer_close(int fd); -int __fslayer_lseek(int fd,int pos,int seek_type); -int __fslayer_tell(int fd); -int __fslayer_read(int fd,void * buffer,__u32 count); -int __fslayer_write(int fd,void * buffer,__u32 count); - -typedef struct -{ - __u8 lock; - __u8 resvd[3]; - __u32 ptr_to_fmsg_pos; - /* Below is for message */ - __u32 sender_pid; - __u32 msg_length; -} msgrcva_t /*__attribute__((packed))*/; - -void send_message(int pid,void * msg_ptr,int message_size); -void define_receive_area(msgrcva_t * rcva_ptr,int size); - -void __menuet__sound_load_block(char * blockptr); -void __menuet__sound_play_block(void); - -void __menuet__dga_get_caps(int * xres,int * yres,int * bpp,int * bpscan); - -void get_pci_version(__u8 * major,__u8 * minor); -void pci_get_last_bus(__u8 * last_bus); -void get_pci_access_mechanism(__u8 * mechanism); - -void pci_write_config_byte(__u8 bus,__u8 dev,__u8 fn,__u8 reg,__u8 val); -void pci_write_config_word(__u8 bus,__u8 dev,__u8 fn,__u8 reg,__u16 val); -void pci_write_config_dword(__u8 bus,__u8 dev,__u8 fn,__u8 reg,__u32 val); -__u8 pci_read_config_byte(__u8 bus,__u8 dev,__u8 fn,__u8 reg); -__u16 pci_read_config_word(__u8 bus,__u8 dev,__u8 fn,__u8 reg); -__u32 pci_read_config_dword(__u8 bus,__u8 dev,__u8 fn,__u8 reg); - -typedef struct{ - char* name; - void* pointer; -} IMP_ENTRY; -typedef const IMP_ENTRY* IMP_TABLE; -IMP_TABLE __kolibri__cofflib_load(const char*); -__u32 __kolibri__cofflib_getproc(IMP_TABLE, const char*); -//int __kolibri__cofflib_link(FUNC*, IMP_TABLE); - -static __inline__ void __menuet__debug_out_byte(const char ch){ - __asm__ __volatile__ ("int $0x40"::"a"(63L),"b"(1L),"c"((__u8)ch)); -} -void __menuet__debug_out(const char* str); - -#define TIME_GETH(x) ((x)&0x000000FF) -#define TIME_GETM(x) ((((x)&0x00FF00)>>8)&0xFF) -#define TIME_GETS(x) ((((x)&0xFF0000)>>16)&0xFF) - -#pragma pack(pop) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/src/Makefile b/contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/src/Makefile deleted file mode 100755 index 6e68ef627..000000000 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/src/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -CC = kos32-gcc -LD = kos32-ld - -SDK_DIR = $(abspath ../../../../../) - -CFLAGS = -c -fno-ident -O2 -fomit-frame-pointer -fno-ident -U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -UWIN32 - -INCLUDES = -I ../include -I $(SDK_DIR)/sources/newlib/libc/include - -SYSCALL_SRC := $(notdir $(wildcard *.c)) -OBJECTS = $(patsubst %.c, %.o, $(SYSCALL_SRC)) - -default: $(patsubst %.c,%.o,$(SYSCALL_SRC)) - -%.o : %.c Makefile $(SYSCALL_SRC) - $(CC) $(CFLAGS) $(INCLUDES) -o $@ $< - -clean: - rm *.o diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/src/os.c b/contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/src/os.c deleted file mode 100755 index e5d784f2a..000000000 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/src/os.c +++ /dev/null @@ -1,39 +0,0 @@ -#include - -void __menuet__define_window(__u16 x1,__u16 y1,__u16 xsize,__u16 ysize, - __u32 body_color,__u32 grab_color,__u32 frame_color) -{ - __u32 a,b; - a=(x1<<16)|xsize; - b=(y1<<16)|ysize; - __asm__ __volatile__("int $0x40"::"a"(0),"b"(a),"c"(b),"d"(body_color),"S"(grab_color), - "D"(frame_color)); -} - -void __menuet__window_redraw(int status) -{ - __asm__ __volatile__("int $0x40"::"a"(12),"b"(status)); -} - -void __menuet__putimage(__u16 x1,__u16 y1,__u16 xsize,__u16 ysize,char * image) -{ - __u32 a,b; - a=(xsize<<16)|ysize; - b=(x1<<16)|y1; - __asm__ __volatile__("int $0x40"::"a"(7),"b"(image),"c"(a),"d"(b)); -} - -int __menuet__getkey(void) -{ - __u16 __ret; - __asm__ __volatile__("int $0x40":"=a"(__ret):"0"(2)); - if(!(__ret & 0xFF)) return (__ret>>8)&0xFF; else return 0; -} - - -int __menuet__check_for_event(void) -{ - __u32 __ret; - __asm__ __volatile__("int $0x40":"=a"(__ret):"0"(11)); - return __ret; -} diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/Tupfile.lua b/contrib/sdk/sources/SDL-1.2.2_newlib/src/Tupfile.lua index 98e4fd1c1..37e4f7b61 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/Tupfile.lua +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/Tupfile.lua @@ -2,7 +2,7 @@ if tup.getconfig("NO_GCC") ~= "" or tup.getconfig("NO_NASM") ~= "" then return e tup.include("../../../../../programs/use_gcc.lua") tup.include("../../../../../programs/use_newlib.lua") tup.include("../../../../../programs/use_sound.lua") -INCLUDES = INCLUDES .. " -I. -I../include -Ihermes -Iaudio -Ivideo -Ievents -Ijoystick -Icdrom -Ithread -Itimer -Iendian -Ifile -ISYSCALL/include" +INCLUDES = INCLUDES .. " -I. -I../include -Ihermes -Iaudio -Ivideo -Ievents -Ijoystick -Icdrom -Ithread -Itimer -Iendian -Ifile -Isyscall/include" CFLAGS = CFLAGS .. ' -D_REENTRANT -DPACKAGE=\"SDL\" -DVERSION=\"1.2.2\"' CFLAGS = CFLAGS .. ' -DENABLE_AUDIO -UDISABLE_AUDIO -DDISABLE_JOYSTICK' CFLAGS = CFLAGS .. ' -DDISABLE_CDROM -DDISABLE_THREADS -DENABLE_TIMERS' @@ -21,7 +21,6 @@ FOLDERS = { "timer/dummy/", "video/", "video/menuetos/", - "SYSCALL/src/" } for i,v in ipairs(FOLDERS) do diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/audio/SDL_kolibri_audio.c b/contrib/sdk/sources/SDL-1.2.2_newlib/src/audio/SDL_kolibri_audio.c index e72ab5c07..401d8ecc6 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/audio/SDL_kolibri_audio.c +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/audio/SDL_kolibri_audio.c @@ -1,11 +1,12 @@ #include "SDL_audio.h" -#include -#include +#include #include #include #include #include +extern void SDL_printf(const char * fmt,...); + static void GetNotify(__u32* event) { __asm__("int $0x40" :: "a"(68),"b"(14),"c"(event)); @@ -143,7 +144,7 @@ static void audio_thread(void) } } if (bPaused) - delay(5); + __kos__delay100(5); else { GetNotify(event); diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/mmx_main.asm b/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/mmx_main.asm index 00032b95c..14fe02862 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/mmx_main.asm +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/mmx_main.asm @@ -12,6 +12,7 @@ BITS 32 %include "common.inc" SDL_FUNC _ConvertMMX +SDL_FUNC ConvertMMX SECTION .text @@ -29,7 +30,8 @@ SECTION .text ;; 28: int d_add ;; 32: void (*converter_function)() ;; 36: int32 *lookup - + +ConvertMMX _ConvertMMX: push ebp mov ebp,esp diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/mmxp2_32.asm b/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/mmxp2_32.asm index 20c3277a2..af2d00153 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/mmxp2_32.asm +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/mmxp2_32.asm @@ -28,6 +28,13 @@ SDL_FUNC _ConvertMMXpII32_16BGR565 SDL_FUNC _ConvertMMXpII32_16RGB555 SDL_FUNC _ConvertMMXpII32_16BGR555 +SDL_FUNC ConvertMMXpII32_24RGB888 +SDL_FUNC ConvertMMXpII32_16RGB565 +SDL_FUNC ConvertMMXpII32_16BGR565 +SDL_FUNC ConvertMMXpII32_16RGB555 +SDL_FUNC ConvertMMXpII32_16BGR555 + + ;; Macros for conversion routines %macro _push_immq_mask 1 @@ -60,6 +67,7 @@ SDL_FUNC _ConvertMMXpII32_16BGR555 SECTION .text +ConvertMMXpII32_24RGB888: _ConvertMMXpII32_24RGB888: ; set up mm6 as the mask, mm7 as zero @@ -122,7 +130,7 @@ _ConvertMMXpII32_24RGB888: retn - +ConvertMMXpII32_16RGB565: _ConvertMMXpII32_16RGB565: ; set up masks @@ -190,7 +198,7 @@ _ConvertMMXpII32_16RGB565: .L4: retn - +ConvertMMXpII32_16BGR565: _ConvertMMXpII32_16BGR565: load_immq mm5, mmx32_rgb565_r @@ -260,6 +268,7 @@ _ConvertMMXpII32_16BGR565: .L4: retn +ConvertMMXpII32_16BGR555: _ConvertMMXpII32_16BGR555: ; the 16BGR555 converter is identical to the RGB555 one, @@ -274,6 +283,8 @@ _ConvertMMXpII32_16BGR555: ; would almost certainly be faster, even if only a little. ; I did rename 'mmx32_rgb555_add' to 'mmx32_rgb555_mul', which is ; (I think) a more accurate name.. + +ConvertMMXpII32_16RGB555: _ConvertMMXpII32_16RGB555: load_immq mm7, mmx32_rgb555_mul diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/x86_main.asm b/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/x86_main.asm index e8d191386..23e5c3cda 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/x86_main.asm +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/x86_main.asm @@ -16,6 +16,9 @@ BITS 32 SDL_FUNC _ConvertX86 SDL_FUNC _Hermes_X86_CPU +SDL_FUNC ConvertX86 +SDL_FUNC Hermes_X86_CPU + SECTION .data cpu_flags dd 0 @@ -35,7 +38,8 @@ SECTION .text ;; 28: int d_add ;; 32: void (*converter_function)() ;; 36: int32 *lookup - + +ConvertX86: _ConvertX86: push ebp mov ebp,esp @@ -72,7 +76,7 @@ y_loop: endconvert: ret - +Hermes_X86_CPU: _Hermes_X86_CPU: pushfd pop eax diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/x86p_16.asm b/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/x86p_16.asm index 1801bcd15..66361c636 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/x86p_16.asm +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/x86p_16.asm @@ -19,10 +19,18 @@ SDL_FUNC _ConvertX86p16_16RGB555 SDL_FUNC _ConvertX86p16_16BGR555 SDL_FUNC _ConvertX86p16_8RGB332 +SDL_FUNC ConvertX86p16_16BGR565 +SDL_FUNC ConvertX86p16_16RGB555 +SDL_FUNC ConvertX86p16_16BGR555 +SDL_FUNC ConvertX86p16_8RGB332 + + EXTERN _ConvertX86 +EXTERN ConvertX86 SECTION .text +ConvertX86p16_16BGR565: _ConvertX86p16_16BGR565: ; check short @@ -128,11 +136,7 @@ _ConvertX86p16_16BGR565: .L7: retn - - - - - +ConvertX86p16_16RGB555: _ConvertX86p16_16RGB555: ; check short @@ -236,11 +240,7 @@ _ConvertX86p16_16RGB555: .L7: pop ebp retn - - - - - +ConvertX86p16_16BGR555: _ConvertX86p16_16BGR555: ; check short @@ -358,7 +358,7 @@ _ConvertX86p16_16BGR555: - +ConvertX86p16_8RGB332: _ConvertX86p16_8RGB332: ; check short diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/x86p_32.asm b/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/x86p_32.asm index 2b478802d..d40b71568 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/x86p_32.asm +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/hermes/x86p_32.asm @@ -24,6 +24,18 @@ SDL_FUNC _ConvertX86p32_16RGB555 SDL_FUNC _ConvertX86p32_16BGR555 SDL_FUNC _ConvertX86p32_8RGB332 +SDL_FUNC ConvertX86p32_32BGR888 +SDL_FUNC ConvertX86p32_32RGBA888 +SDL_FUNC ConvertX86p32_32BGRA888 +SDL_FUNC ConvertX86p32_24RGB888 +SDL_FUNC ConvertX86p32_24BGR888 +SDL_FUNC ConvertX86p32_16RGB565 +SDL_FUNC ConvertX86p32_16BGR565 +SDL_FUNC ConvertX86p32_16RGB555 +SDL_FUNC ConvertX86p32_16BGR555 +SDL_FUNC ConvertX86p32_8RGB332 + + SECTION .text ;; _Convert_* @@ -35,6 +47,7 @@ SECTION .text ;; EAX, EBX, EDX +ConvertX86p32_32BGR888: _ConvertX86p32_32BGR888: ; check short @@ -115,7 +128,7 @@ _ConvertX86p32_32BGR888: - +ConvertX86p32_32RGBA888: _ConvertX86p32_32RGBA888: ; check short @@ -186,7 +199,7 @@ _ConvertX86p32_32RGBA888: - +ConvertX86p32_32BGRA888: _ConvertX86p32_32BGRA888: ; check short @@ -262,6 +275,7 @@ _ConvertX86p32_32BGRA888: ;; 32 bit RGB 888 to 24 BIT RGB 888 +ConvertX86p32_24RGB888: _ConvertX86p32_24RGB888: ; check short @@ -359,6 +373,7 @@ _ConvertX86p32_24RGB888: ;; 32 bit RGB 888 to 24 bit BGR 888 +ConvertX86p32_24BGR888: _ConvertX86p32_24BGR888: ; check short @@ -458,7 +473,7 @@ _ConvertX86p32_24BGR888: ;; 32 bit RGB 888 to 16 BIT RGB 565 - +ConvertX86p32_16RGB565: _ConvertX86p32_16RGB565: ; check short cmp ecx,BYTE 16 @@ -574,6 +589,7 @@ _ConvertX86p32_16RGB565: ;; 32 bit RGB 888 to 16 BIT BGR 565 +ConvertX86p32_16BGR565: _ConvertX86p32_16BGR565: ; check short @@ -687,7 +703,7 @@ _ConvertX86p32_16BGR565: ;; 32 BIT RGB TO 16 BIT RGB 555 - +ConvertX86p32_16RGB555: _ConvertX86p32_16RGB555: ; check short @@ -798,7 +814,7 @@ _ConvertX86p32_16RGB555: ;; 32 BIT RGB TO 16 BIT BGR 555 - +ConvertX86p32_16BGR555: _ConvertX86p32_16BGR555: ; check short @@ -916,8 +932,9 @@ _ConvertX86p32_16BGR555: ;; FROM 32 BIT RGB to 8 BIT RGB (rrrgggbbb) ;; This routine writes FOUR pixels at once (dword) and then, if they exist ;; the trailing three pixels -_ConvertX86p32_8RGB332: +ConvertX86p32_8RGB332: +_ConvertX86p32_8RGB332: .L_ALIGNED: push ecx diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/timer/dummy/SDL_systimer.c b/contrib/sdk/sources/SDL-1.2.2_newlib/src/timer/dummy/SDL_systimer.c index a078c5a16..aa1336919 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/timer/dummy/SDL_systimer.c +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/timer/dummy/SDL_systimer.c @@ -26,16 +26,14 @@ static char rcsid = #endif #include -#include -#include -#include +#include #include #include -#include #include "SDL_error.h" #include "SDL_timer.h" #include "SDL_timer_c.h" +#include "SDL_kos.h" #if _POSIX_THREAD_SYSCALL_SOFT #include @@ -89,7 +87,7 @@ Uint32 SDL_GetTicks (void) void SDL_Delay (Uint32 ms) { - delay(ms); + __kos__delay100(ms); /* Uint32 start = SDL_GetTicks(); do __asm__("int $0x40" :: "a"(68),"b"(1)); diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/video/menuetos/SDL_menuetevents.c b/contrib/sdk/sources/SDL-1.2.2_newlib/src/video/menuetos/SDL_menuetevents.c index 9f0d8c4f8..e31d4f397 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/video/menuetos/SDL_menuetevents.c +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/video/menuetos/SDL_menuetevents.c @@ -1,5 +1,5 @@ -#include -#include +#include +//#include #include #include #include "SDL.h" @@ -164,7 +164,7 @@ void MenuetOS_PumpEvents(_THIS) static int ext_code=0; static __u8 old_mode=0; for (;;) { - i=__menuet__check_for_event(); + i=__kos__check_for_event(); switch(i) { case 0: @@ -173,7 +173,7 @@ void MenuetOS_PumpEvents(_THIS) MenuetOS_SDL_RepaintWnd(); break; case 2: - key.scancode = __menuet__getkey(); + key.scancode = __kos__getkey(); if (key.scancode == 0xE0 || key.scancode == 0xE1) {ext_code=key.scancode;break;} if (ext_code == 0xE1 && (key.scancode & 0x7F) == 0x1D) break; @@ -200,7 +200,7 @@ void MenuetOS_PumpEvents(_THIS) SDL_PrivateKeyboard(code,&key); break; case 3: - if(get_os_button()==1) exit(0); + if(__kos__get_button_id()==1) exit(0); break; case 6: { int __tmp,mx,my; diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/src/video/menuetos/SDL_menuetvideo.c b/contrib/sdk/sources/SDL-1.2.2_newlib/src/video/menuetos/SDL_menuetvideo.c index b0a0fc2d5..cfcc84b3d 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/video/menuetos/SDL_menuetvideo.c +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/video/menuetos/SDL_menuetvideo.c @@ -1,7 +1,6 @@ #include #include -#include -#include +#include #include "SDL.h" #include "SDL_error.h" #include "SDL_video.h" @@ -31,20 +30,10 @@ inline int get_skinh(void) static int IsStyle4Available=0; #endif -void kol_define_window(unsigned short x1,unsigned short y1,unsigned short xsize,unsigned short ysize, - unsigned long body_color,unsigned long grab_color,unsigned long frame_color) -{ - unsigned long a,b; - a=(x1<<16)|xsize; - b=(y1<<16)|ysize; - __asm__ __volatile__("int $0x40"::"a"(0),"b"(a),"c"(b),"d"(body_color),"S"(grab_color), - "D"(frame_color)); -} - void MenuetOS_SDL_RepaintWnd(void) { - begin_draw(); - kol_define_window(1,1,vm_suf->hidden->win_size_x+9,vm_suf->hidden->win_size_y+get_skinh()+4, + __kos__window_redraw(1); + __kos__define_window(1,1,vm_suf->hidden->win_size_x+9,vm_suf->hidden->win_size_y+get_skinh()+4, #ifdef KEEP_OBSOLETE_STYLE3 IsStyle4Available?0x34000000:0x33000000 #else @@ -55,9 +44,9 @@ void MenuetOS_SDL_RepaintWnd(void) // __asm__ __volatile__("int3"); if(vm_suf && vm_suf->hidden->__video_buffer) - draw_bitmap(vm_suf->hidden->__video_buffer, 0,0, + __kos__draw_bitmap(vm_suf->hidden->__video_buffer, 0,0, vm_suf->hidden->win_size_x,vm_suf->hidden->win_size_y); - end_draw(); + __kos__window_redraw(2); } static int MenuetOS_AllocHWSurface(_THIS,SDL_Surface * surface) @@ -82,7 +71,7 @@ static void MenuetOS_DirectUpdate(_THIS,int numrects,SDL_Rect * rects) { if(numrects) { - draw_bitmap(this->hidden->__video_buffer, 0,0, + __kos__draw_bitmap(this->hidden->__video_buffer, 0,0, vm_suf->hidden->win_size_x,vm_suf->hidden->win_size_y); } } @@ -111,6 +100,17 @@ void MenuetOS_SetCaption(_THIS,const char * title,const char * icon) if(was_initialized) __asm__("int $0x40"::"a"(71),"b"(1),"c"(title)); } +void debug_board_write_byte(const char ch){ + __asm__ __volatile__( + "int $0x40" + ::"a"(63), "b"(1), "c"(ch)); +} + +void debug_board_write_str(const char* str){ + while(*str) + debug_board_write_byte(*str++); +} + SDL_Surface * MenuetOS_SetVideoMode(_THIS, SDL_Surface *current, int width, int height, int bpp, Uint32 flags) { int ly; @@ -123,19 +123,6 @@ SDL_Surface * MenuetOS_SetVideoMode(_THIS, SDL_Surface *current, int width, int char info[100]; sprintf(info, "width = %d, height = %d, pitch = %d, bpp = %d\n", current->w, current->h, current->pitch, bpp); - - void debug_board_write_byte(const char ch){ - __asm__ __volatile__( - "int $0x40" - : - :"a"(63), "b"(1), "c"(ch)); - } - - void debug_board_write_str(const char* str){ - while(*str) - debug_board_write_byte(*str++); - } - debug_board_write_str(info); // __asm__ __volatile__("int3"); @@ -159,7 +146,7 @@ SDL_Surface * MenuetOS_SetVideoMode(_THIS, SDL_Surface *current, int width, int } else { - set_wanted_events_mask(0x27); + __kos__set_events_mask(0x27); was_initialized=1; MenuetOS_SDL_RepaintWnd(); } @@ -227,7 +214,7 @@ static int MenuetOS_VideoInit(_THIS,SDL_PixelFormat * vformat) static int MenuetOS_FlipHWSurface(_THIS,SDL_Surface * surface) { - draw_bitmap(surface->pixels, 0,0,surface->w,surface->h); + __kos__draw_bitmap(surface->pixels, 0,0,surface->w,surface->h); return 0; }