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 231b2bcb89..f34500dbe4 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/Makefile +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/Makefile @@ -51,15 +51,16 @@ install: $(LIBNAME) mv -f $(LIBNAME) $(SDK_DIR)/lib $(LIBNAME).a: $(OBJS) - $(AR) -crs $(LIBNAME).a $(OBJS) + $(MAKE) -C SYSCALL/src + $(AR) -crs $(LIBNAME).a $(OBJS) SYSCALL/src/os.o $(LIBNAME).dll: libSDL.def $(OBJS) - $(LD) $(LDFLAGS) -o $@ libSDL.def $(OBJS) $(LIBS) -ldll -lsound -lc.dll + $(LD) $(LDFLAGS) -o $@ libSDL.def $(OBJS) SYSCALL/src/os.o $(LIBS) -ldll -lsound -lc.dll $(STRIP) $@ %.o : %.asm Makefile - nasm -Ihermes -f coff $< + nasm -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 deleted file mode 100644 index 0a6c340d7a..0000000000 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/Makefile.tcc +++ /dev/null @@ -1,54 +0,0 @@ -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 deleted file mode 100755 index fb14d7acc3..0000000000 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/src/SDL_kos.h +++ /dev/null @@ -1,162 +0,0 @@ -#ifndef SDL_kos -#define SDL_kos - -#ifdef __cplusplus -extern "C" { -#endif - -typedef unsigned char __u8; -typedef unsigned short __u16; -typedef unsigned long __u32; - -#pragma pack(push) -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]; -}; - -typedef union{ - unsigned val; - struct{ - short h; - short w; - }; -}__kos__screen_t; -#pragma pack(pop) - -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) -{ - __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; -} - - -static inline -void __kos__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 -__kos__screen_t __kos__screen_size(void) -{ - __kos__screen_t size; - __asm__ __volatile__( - "int $0x40" - :"=a"(size) - :"a"(14) - :"memory" - ); - return size; -} - -static inline -int __kos__get_skinh(void) -{ - int res; - __asm__ ("int $0x40" : "=a"(res) : "a"(48),"b"(4)); - return res; -} - -static inline -void __kos__dbg_write_byte(const char ch){ - __asm__ __volatile__( - "int $0x40" - ::"a"(63), "b"(1), "c"(ch) - ); -} - -static inline -void __kos__dbg_write_str(const char* str){ - while(*str){ - __kos__dbg_write_byte(*str++); - } -} - -#ifdef __cplusplus -} -#endif - -#endif 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 new file mode 100755 index 0000000000..726d8d3f94 --- /dev/null +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/include/menuet/os.h @@ -0,0 +1,218 @@ +#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 new file mode 100755 index 0000000000..6e68ef6272 --- /dev/null +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/src/Makefile @@ -0,0 +1,19 @@ +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 new file mode 100755 index 0000000000..e5d784f2ac --- /dev/null +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/src/SYSCALL/src/os.c @@ -0,0 +1,39 @@ +#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 37e4f7b611..062f872dd1 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,12 +21,13 @@ FOLDERS = { "timer/dummy/", "video/", "video/menuetos/", + "SYSCALL/src/" } for i,v in ipairs(FOLDERS) do compile_gcc(v .. "*.c", v .. "%B.o") tup.append_table(OBJS, - tup.foreach_rule(v .. "*.asm", "nasm -i hermes -f coff -o %o %f", v .. "%B.o") + tup.foreach_rule(v .. "*.asm", "nasm -f coff -Ihermes -o %o %f", v .. "%B.o") ) end tup.rule(OBJS, "kos32-ar rcs %o %f", {"../../../lib/libSDLn.a", "../../../lib/"}) 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 401d8ecc66..e72ab5c077 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,12 +1,11 @@ #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)); @@ -144,7 +143,7 @@ static void audio_thread(void) } } if (bPaused) - __kos__delay100(5); + delay(5); else { GetNotify(event); 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 c8d9506f2c..66860fdd9e 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 @@ -33,7 +33,7 @@ static char rcsid = #include "SDL_error.h" #include "SDL_timer.h" #include "SDL_timer_c.h" -#include "SDL_kos.h" +#include "kos32sys.h" #if _POSIX_THREAD_SYSCALL_SOFT #include @@ -88,7 +88,7 @@ Uint32 SDL_GetTicks (void) void SDL_Delay(unsigned ms){ unsigned start = SDL_GetTicks(); do{ - __kos__delay100(1); + delay(1); }while (SDL_GetTicks()-start < ms); } 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 e31d4f397c..9f0d8c4f89 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=__kos__check_for_event(); + i=__menuet__check_for_event(); switch(i) { case 0: @@ -173,7 +173,7 @@ void MenuetOS_PumpEvents(_THIS) MenuetOS_SDL_RepaintWnd(); break; case 2: - key.scancode = __kos__getkey(); + key.scancode = __menuet__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(__kos__get_button_id()==1) exit(0); + if(get_os_button()==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 bcc4c65b57..0eacb5bbd1 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,6 +1,7 @@ #include #include -#include +#include +#include #include "SDL.h" #include "SDL_error.h" #include "SDL_video.h" @@ -23,10 +24,20 @@ static int null_cursor; 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) { - __kos__window_redraw(1); - __kos__define_window(1, 1, vm_suf->hidden->win_size_x+9,vm_suf->hidden->win_size_y+__kos__get_skinh()+4, + begin_draw(); + kol_define_window(1,1,vm_suf->hidden->win_size_x+9,vm_suf->hidden->win_size_y+get_skin_height()+4, #ifdef KEEP_OBSOLETE_STYLE3 IsStyle4Available?0x34000000:0x33000000 #else @@ -37,9 +48,9 @@ void MenuetOS_SDL_RepaintWnd(void) // __asm__ __volatile__("int3"); if(vm_suf && vm_suf->hidden->__video_buffer) - __kos__draw_bitmap(vm_suf->hidden->__video_buffer, 0,0, + draw_bitmap(vm_suf->hidden->__video_buffer, 0,0, vm_suf->hidden->win_size_x,vm_suf->hidden->win_size_y); - __kos__window_redraw(2); + end_draw(); } static int MenuetOS_AllocHWSurface(_THIS,SDL_Surface * surface) @@ -64,7 +75,7 @@ static void MenuetOS_DirectUpdate(_THIS,int numrects,SDL_Rect * rects) { if(numrects) { - __kos__draw_bitmap(this->hidden->__video_buffer, 0,0, + draw_bitmap(this->hidden->__video_buffer, 0,0, vm_suf->hidden->win_size_x,vm_suf->hidden->win_size_y); } } @@ -105,7 +116,21 @@ 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); - __kos__dbg_write_str(info); + + + 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"); current->pixels=this->hidden->__video_buffer=realloc(this->hidden->__video_buffer, @@ -124,14 +149,15 @@ SDL_Surface * MenuetOS_SetVideoMode(_THIS, SDL_Surface *current, int width, int if (was_initialized) { - unsigned newheight = height+__kos__get_skinh()+4; + unsigned newheight = height+get_skin_height+4; unsigned newwidth = width+9; - __kos__change_window(-1, -1, newwidth, newheight); + sys_change_window(-1, -1, newwidth, newheight); } else { - __kos__set_events_mask(0x27); + + set_wanted_events_mask(0x27); was_initialized=1; MenuetOS_SDL_RepaintWnd(); } @@ -199,7 +225,7 @@ static int MenuetOS_VideoInit(_THIS,SDL_PixelFormat * vformat) static int MenuetOS_FlipHWSurface(_THIS,SDL_Surface * surface) { - __kos__draw_bitmap(surface->pixels, 0,0,surface->w,surface->h); + draw_bitmap(surface->pixels, 0,0,surface->w,surface->h); return 0; } diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/test/Makefile b/contrib/sdk/sources/SDL-1.2.2_newlib/test/Makefile index 3b06dfd658..b505afb4c1 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/test/Makefile +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/test/Makefile @@ -14,8 +14,8 @@ default: fire fire: $(OBJECTS) Makefile $(CC) $(CFLAGS) $(INCLUDES) -o sdltest.o sdltest.c $(CC) $(CFLAGS) $(INCLUDES) -o testbitmap.o testbitmap.c - $(LD) $(LDFLAGS) $(LIBPATH) --subsystem native -o sdltest sdltest.o -lgcc -lSDLn -lc.dll -lsound - $(LD) $(LDFLAGS) $(LIBPATH) --subsystem native -o testbitmap testbitmap.o -lgcc -lSDLn -lc.dll -lsound + $(LD) $(LDFLAGS) $(LIBPATH) --subsystem native -o sdltest sdltest.o -lgcc -lSDL -lc.dll -lc -lsound + $(LD) $(LDFLAGS) $(LIBPATH) --subsystem native -o testbitmap testbitmap.o -lgcc -lSDL -lc.dll -lc -lsound kos32-strip -s sdltest -o sdltest kos32-strip -s testbitmap -o testbitmap objcopy testbitmap -O binary diff --git a/contrib/sdk/sources/SDL-1.2.2_newlib/test/sdltest.c b/contrib/sdk/sources/SDL-1.2.2_newlib/test/sdltest.c index c66e601a7c..ed6079e258 100755 --- a/contrib/sdk/sources/SDL-1.2.2_newlib/test/sdltest.c +++ b/contrib/sdk/sources/SDL-1.2.2_newlib/test/sdltest.c @@ -1,79 +1,28 @@ #include "SDL.h" #include -#define WIDTH 640 -#define HEIGHT 480 -#define BPP 4 -#define DEPTH 32 - -void setpixel(SDL_Surface *screen, int x, int y, Uint8 r, Uint8 g, Uint8 b) +SDL_Surface* screen; +static int done = 0; + +int main() { - Uint32 *pixmem32; - Uint32 colour; - - colour = SDL_MapRGB( screen->format, r, g, b ); - - pixmem32 = (Uint32*) screen->pixels + y + x; - *pixmem32 = colour; -} - - -void DrawScreen(SDL_Surface* screen, int h) -{ - int x, y, ytimesw; - - if(SDL_MUSTLOCK(screen)) - { - if(SDL_LockSurface(screen) < 0) return; - } - - for(y = 0; y < screen->h; y++ ) - { - ytimesw = y*screen->pitch/BPP; - for( x = 0; x < screen->w; x++ ) - { - setpixel(screen, x, ytimesw, (x*x)/256+3*y+h, (y*y)/256+x+h, h); - } - } - if(SDL_MUSTLOCK(screen)) SDL_UnlockSurface(screen); - - SDL_Flip(screen); -} - - -int main(int argc, char* argv[]) -{ - SDL_Surface *screen; - SDL_Event event; - - int keypress = 0; - int h=0; - - if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1; - - if (!(screen = SDL_SetVideoMode(WIDTH, HEIGHT, DEPTH, SDL_FULLSCREEN|SDL_HWSURFACE))) - { - SDL_Quit(); - return 1; - } - - while(!keypress) - { - DrawScreen(screen,h++); - while(SDL_PollEvent(&event)) - { - switch (event.type) - { - case SDL_QUIT: - keypress = 1; - break; - case SDL_KEYDOWN: - keypress = 1; - break; - } - } - } - - SDL_Quit(); - return 0; + SDL_Event event; + if(SDL_Init(SDL_INIT_VIDEO) < 0) exit(0); + atexit(SDL_Quit); + screen = SDL_SetVideoMode(320, 200, 8, SDL_SWSURFACE); + while(!done) + { + while(SDL_PollEvent(&event)) + { + switch(event.type) + { + case SDL_KEYDOWN: + case SDL_QUIT: + done=1; + break; + default: + break; + } + } + } }