/programs/games/donkey/string.h |
---|
File deleted |
/programs/games/donkey/gblib.h |
---|
File deleted |
/programs/games/donkey/stdlib.h |
---|
File deleted |
/programs/games/donkey/kolibri.h |
---|
File deleted |
/programs/games/donkey/c_code.c |
---|
1,10 → 1,9 |
#include "kolibri.h" |
#include "stdio.h" |
#include "stdlib.h" |
#include "string.h" |
#include "system/kolibri.h" |
#include "system/stdlib.h" |
#include "system/string.h" |
#include "gblib.h" |
#include "system/gblib.h" |
#include "car_01.h" |
#include "car_02.h" |
/programs/games/donkey/compile.bat |
---|
1,5 → 1,12 |
fasm asm_code.asm |
del *.o |
fasm asm_code.asm asm_code.o |
gcc -c c_code.c |
ld -nostdlib -T kolibri.ld -o donkey.kex asm_code.obj kolibri.o stdlib.o string.o gblib.o c_code.o |
objcopy donkey.kex -O binary |
gcc -c system/kolibri.c |
gcc -c system/stdlib.c |
gcc -c system/string.c |
gcc -c system/gblib.c |
ld -nostdlib -T kolibri.ld -o donkey asm_code.o kolibri.o stdlib.o string.o gblib.o c_code.o |
objcopy donkey -O binary |
kpack donkey |
del *.o |
pause |
/programs/games/donkey/system/gblib.c |
---|
0,0 → 1,236 |
#include "gblib.h" |
//========================= |
void gb_pixel_set(GB_BMP *b, int x, int y, unsigned c) |
{ |
// ïîñòàâèòü òî÷êó |
unsigned s; |
if ((x+1 > b->w )||(y+1 > b->h)) |
return; |
if ((x < 0)||(y < 0)) |
return; |
s = 3*( y*(b->w) + x ); |
*( b -> bmp + s ) = c & 0xff; |
*( b -> bmp + s + 1) = (c >> 8) & 0xff; |
*( b -> bmp + s + 2) = (c >> 16)& 0xff; |
} |
//========================= |
int gb_pixel_get(GB_BMP *b, int x, int y, unsigned *c) |
{ |
// ïîëó÷èòü òî÷êó |
unsigned red, green, blue, s; |
if ((x < 0) || (y < 0)) |
return 0; |
if ((x+1 > b->w )||(y+1 > b->h)) |
return 0; |
s = 3*( y*(b->w) + x ); |
blue = *( b -> bmp + s ); |
green = *( b -> bmp + s + 1); |
red = *( b -> bmp + s + 2); |
*c = ((red << 16) & 0xff0000) | ((green << 8) & 0xff00) | (blue & 0xff); |
return 1; |
} |
//========================= |
void gb_line(GB_BMP *b, int x1, int y1, int x2, int y2, unsigned c) |
{ |
// ëèíèÿ çàäàííîãî öâåòà ñ èñïîëüçîâàíèåì |
// àëãîpèòìà Áðåçåíõýìà |
int t, dist; |
int xerr=0, yerr=0, delta_x, delta_y; |
int incx, incy; |
// âû÷èñëåíèå pàññòîÿíèÿ â îáîèõ íàïpàâëåíèÿõ |
delta_x = x2 - x1; |
delta_y = y2 - y1; |
// îïpåäåëåíèå íàïpàâëåíèÿ øàãà, |
// øàã âû÷èñëÿåòñÿ ëèáî ïî âåpòèêàëüíîé, ëèáî ãîpèçîíòàëüíîé |
// ëèíèè |
if (delta_x > 0) |
incx = 1; |
else |
if (0 == delta_x) |
incx = 0; |
else |
incx = -1; |
if (delta_y > 0) |
incy = 1; |
else |
if ( 0 == delta_y) |
incy = 0; |
else |
incy = -1; |
// îïpåäåëåíèå íàèáîëüøåãî pàññòîÿíèÿ |
if (delta_x < 0) |
delta_x *= -1; |
if (delta_y < 0) |
delta_y *= -1; |
if (delta_x > delta_y) |
dist = delta_x; |
else |
dist = delta_y; |
// âû÷åp÷èâàíèå ëèíèè |
for (t = 0; t <= dist+1; t++) |
{ |
gb_pixel_set(b, x1, y1, c); |
xerr+=delta_x; |
yerr+=delta_y; |
if (xerr > dist) |
{ |
xerr -= dist; |
x1 += incx; |
} |
if (yerr > dist) |
{ |
yerr -= dist; |
y1 += incy; |
} |
} |
} |
//========================= |
void gb_rect(GB_BMP *b, int x, int y, int w, int h, unsigned c) |
{ |
// ïðÿìîóãîëüíèê |
gb_line (b, x, y, x+w-1, y, c); |
gb_line (b, x, y+h-1, x+w-1, y+h-1, c); |
gb_line (b, x, y, x, y+h-1, c); |
gb_line (b, x+w-1, y, x+w-1, y+h-1, c); |
} |
//========================= |
void gb_circle(GB_BMP *b, int x, int y, int r, unsigned c) |
{ |
int _x; |
int _y; |
int d; |
_x = 0; |
_y = r; |
d = 3-2*r; |
while( _y >= _x) |
{ |
gb_pixel_set(b, _x + x, _y + y, c); |
gb_pixel_set(b, _x + x, -_y + y, c); |
gb_pixel_set(b, -_x + x, _y + y, c); |
gb_pixel_set(b, -_x + x, -_y + y, c); |
gb_pixel_set(b, _y + x, _x + y, c); |
gb_pixel_set(b, _y + x, -_x + y, c); |
gb_pixel_set(b, -_y + x, _x + y, c); |
gb_pixel_set(b, -_y + x, -_x + y, c); |
if( d<0 ) |
d = d+4*_x+6; |
else |
{ |
d = d+4*(_x-_y)+10; |
_y--; |
} |
_x++; |
} |
} |
//========================= |
void gb_bar(GB_BMP *b, int x, int y, int w, int h, unsigned c) |
{ |
// çàêðàøåííûé ïðÿìîóãîëüíèê |
unsigned s; |
int i, j; |
if ((x > b->w)||(y > b->h)) |
return; |
for (j = 0; j < w; j++) |
for (i = 0; i < h; i++) |
// gb_pixel_set(b, x+j, y+i, c); |
{ |
s = 3*( (y+i)*(b->w) + x + j ); |
*( b -> bmp + s ) = c & 0xff; |
*( b -> bmp + s + 1) = (c >> 8) & 0xff; |
*( b -> bmp + s + 2) = (c >> 16)& 0xff; |
} |
} |
//========================= |
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) |
{ |
// âûâîä èçîáðàæåíèÿ |
int x, y; |
unsigned d; |
if ((x_d > b_dest->w)||(y_d > b_dest->h)) |
return; |
if ((x_s > b_src->w)||(y_s > b_src->h)) |
return; |
for (y = 0; y < h; y++) |
for (x = 0; x < w; x++) |
if ( gb_pixel_get(b_src, x_s+x, y_s+y, &d) ) |
gb_pixel_set(b_dest, x_d+x, y_d+y, d); |
} |
//========================= |
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) |
{ |
// âûâîä èçîáðàæåíèÿ ñ ïðîçðà÷íûì öâåòîì |
int x, y; |
unsigned d; |
if ((x_d > b_dest->w)||(y_d > b_dest->h)) |
return; |
if ((x_s > b_src->w)||(y_s > b_src->h)) |
return; |
for (y = 0; y < h; y++) |
for (x = 0; x < w; x++) |
if ( gb_pixel_get(b_src, x_s+x, y_s+y, &d) ) |
if (c != d) |
gb_pixel_set(b_dest, x_d+x, y_d+y, d); |
} |
/programs/games/donkey/system/gblib.h |
---|
0,0 → 1,25 |
typedef struct |
{ |
int w __attribute__((packed)); |
int h __attribute__((packed)); |
char *bmp __attribute__((packed)); |
char *alpha __attribute__((packed)); |
} GB_BMP __attribute__((packed)); |
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); |
/programs/games/donkey/system/kolibri.c |
---|
0,0 → 1,422 |
#include "kolibri.h" |
#include "string.h" |
extern char KOL_PATH[256]; |
extern char KOL_PARAM[256]; |
extern char KOL_DIR[256]; |
void kol_exit() |
{ |
asm ("int $0x40"::"a"(-1)); |
} |
void kol_sleep(unsigned d) |
{ |
asm ("int $0x40"::"a"(5), "b"(d)); |
} |
void kol_wnd_define(unsigned x, unsigned y, unsigned w, unsigned h, unsigned c) |
{ |
asm ("nop"::"a"(0), "b"(x*65536+w), "c"(y*65536+h), "d"(c)); |
asm ("movl $0xffffff, %esi \n int $0x40"); |
} |
void kol_wnd_move(unsigned x, unsigned y) |
{ |
asm ("nop"::"a"(67), "b"(x), "c"(y)); |
asm ("movl $-1, %edx \n movl $-1, %esi \n int $0x40"); |
} |
void kol_event_mask(unsigned e) |
{ |
asm ("int $0x40"::"a"(40), "b"(e)); |
} |
unsigned kol_event_wait() |
{ |
asm ("int $0x40"::"a"(10)); |
} |
unsigned kol_event_wait_time(unsigned time) |
{ |
asm ("int $0x40"::"a"(23), "b"(time)); |
} |
unsigned kol_event_check() |
{ |
asm ("int $0x40"::"a"(11)); |
} |
void kol_paint_start() |
{ |
asm ("int $0x40"::"a"(12), "b"(1)); |
} |
void kol_paint_end() |
{ |
asm ("int $0x40"::"a"(12), "b"(2)); |
} |
void kol_paint_pixel(unsigned x, unsigned y, unsigned c) |
{ |
asm ("int $0x40"::"a"(1), "b"(x), "c"(y), "d"(c)); |
} |
void kol_paint_bar(unsigned x, unsigned y, unsigned w, unsigned h, unsigned c) |
{ |
asm ("int $0x40"::"a"(13), "b"(x*65536+w), "c"(y*65536+h), "d"(c)); |
} |
void kol_paint_line(unsigned x1, unsigned y1, unsigned x2, unsigned y2, unsigned c) |
{ |
asm ("int $0x40"::"a"(38), "b"(x1*65536+x2), "c"(y1*65536+y2), "d"(c)); |
} |
void kol_paint_string(unsigned x, unsigned y, char *s, unsigned c) |
{ |
asm ("int $0x40"::"a"(4), "b"(x*65536+y), "c"(c), "d"(s)); |
} |
void kol_paint_image(unsigned x, unsigned y, unsigned w, unsigned h, char *d) |
{ |
asm ("int $0x40"::"a"(7), "c"(w*65536+h), "d"(x*65536+y), "b"(d)); |
} |
void kol_paint_image_pal(unsigned x, unsigned y, unsigned w, unsigned h, char *d, unsigned *palette) |
{ |
asm ("nop"::"c"(w*65536+h), "d"(x*65536+y), "b"(d)); |
asm ("nop"::"a"(palette)); |
asm ("movl %eax, %edi"); |
asm ("xor %eax, %eax"); |
asm ("movl %eax, %ebp"); |
asm ("pushl $8"); |
asm ("popl %esi"); |
asm ("int $0x40"::"a"(65)); |
} |
unsigned kol_key_get() |
{ |
asm ("int $0x40"::"a"(2)); |
} |
unsigned kol_key_control() |
{ |
asm ("int $0x40"::"a"(66), "b"(3)); |
} |
void kol_key_lang_set(unsigned lang) |
{ |
asm ("int $0x40"::"a"(21), "b"(2), "c"(9), "d"(lang)); |
} |
unsigned kol_key_lang_get() |
{ |
asm ("int $0x40"::"a"(26), "b"(2), "c"(9)); |
} |
void kol_key_mode_set(unsigned mode) |
{ |
asm ("int $0x40"::"a"(66), "b"(1), "c"(mode)); |
} |
unsigned kol_key_mode_get() |
{ |
asm ("int $0x40"::"a"(66), "b"(2)); |
} |
unsigned kol_btn_get() |
{ |
asm ("int $0x40"::"a"(17)); |
} |
void kol_btn_define(unsigned x, unsigned y, unsigned w, unsigned h, unsigned d, unsigned c) |
{ |
asm ("nop"::"b"(x*65536+w), "c"(y*65536+h), "d"(d)); |
asm ("nop"::"a"(c)); |
asm ("movl %eax, %esi"); |
asm ("int $0x40"::"a"(8)); |
} |
void kol_btn_type(unsigned t) |
{ |
asm ("int $0x40"::"a"(48), "b"(1), "c"(t)); |
} |
void kol_wnd_caption(char *s) |
{ |
asm ("int $0x40"::"a"(71), "b"(1), "c"(s)); |
} |
unsigned kol_mouse_pos() |
{ |
asm ("int $0x40"::"a"(37), "b"(0)); |
} |
unsigned kol_mouse_posw() |
{ |
asm ("int $0x40"::"a"(37), "b"(1)); |
} |
unsigned kol_mouse_btn() |
{ |
asm ("int $0x40"::"a"(37), "b"(2)); |
} |
void kol_board_putc(char c) |
{ |
asm ("int $0x40"::"a"(63), "b"(1), "c"(c)); |
} |
void kol_board_puts(char *s) |
{ |
unsigned i; |
i = 0; |
while (*(s+i)) |
{ |
asm ("int $0x40"::"a"(63), "b"(1), "c"(*(s+i))); |
i++; |
} |
} |
void kol_board_puti(int n) |
{ |
char c; |
int i = 0; |
do |
{ |
c = n % 10 + '0'; |
asm ("int $0x40"::"a"(63), "b"(1), "c"(c)); |
i++; |
} |
while ((n /= 10) > 0); |
} |
int kol_file_70(kol_struct70 *k) |
{ |
asm ("int $0x40"::"a"(70), "b"(k)); |
} |
kol_struct_import* kol_cofflib_load(char *name) |
{ |
asm ("int $0x40"::"a"(68), "b"(19), "c"(name)); |
} |
void* kol_cofflib_procload (kol_struct_import *imp, char *name) |
{ |
int i; |
for (i=0;;i++) |
if ( NULL == ((imp+i) -> name)) |
break; |
else |
if ( 0 == strcmp(name, (imp+i)->name) ) |
return (imp+i)->data; |
return NULL; |
} |
unsigned kol_cofflib_procnum (kol_struct_import *imp) |
{ |
unsigned i, n; |
for (i=n=0;;i++) |
if ( NULL == ((imp+i) -> name)) |
break; |
else |
n++; |
return n; |
} |
void kol_cofflib_procname (kol_struct_import *imp, char *name, unsigned n) |
{ |
unsigned i; |
*name = 0; |
for (i=0;;i++) |
if ( NULL == ((imp+i) -> name)) |
break; |
else |
if ( i == n ) |
{ |
strcpy(name, ((imp+i)->name)); |
break; |
} |
} |
unsigned kol_system_cpufreq() |
{ |
asm ("int $0x40"::"a"(18), "b"(5)); |
} |
unsigned kol_system_mem() |
{ |
asm ("int $0x40"::"a"(18), "b"(17)); |
} |
unsigned kol_system_memfree() |
{ |
asm ("int $0x40"::"a"(18), "b"(16)); |
} |
unsigned kol_system_time_get() |
{ |
asm ("int $0x40"::"a"(3)); |
} |
unsigned kol_system_date_get() |
{ |
asm ("int $0x40"::"a"(29)); |
} |
unsigned kol_system_end(unsigned param) |
{ |
asm ("int $0x40"::"a"(18), "b"(9), "c"(param)); |
} |
void kol_path_file2dir(char *dir, char *fname) |
{ |
unsigned i; |
strcpy (dir, fname); |
for ( i = strlen(dir);; --i) |
if ( '/' == dir[i]) |
{ |
dir[i] = '\0'; |
return; |
} |
} |
void kol_path_full(char *full, char *fname) |
{ |
char temp[256]; |
switch (*fname) |
{ |
case '/': |
strncpy(temp, fname+1, 2); |
temp[2]=0; |
if ( (!strcmp("rd", temp)) || (!strcmp("hd", temp)) || (!strcmp("cd", temp)) ) |
strcpy (full, fname); |
break; |
case '.': |
break; |
default: |
break; |
}; |
} |
void kol_screen_wait_rr() |
{ |
asm ("int $0x40"::"a"(18), "b"(14)); |
} |
void kol_screen_get_size(unsigned *w, unsigned *h) |
{ |
unsigned size; |
asm ("int $0x40":"=a"(size):"a"(14)); |
*w = size / 65536; |
*h = size % 65536; |
} |
unsigned kol_skin_height() |
{ |
asm ("int $0x40"::"a"(48), "b"(4)); |
} |
unsigned kol_thread_start(unsigned start, unsigned stack) |
{ |
asm ("int $0x40"::"a"(51), "b"(1), "c"(start), "d"(stack)); |
} |
unsigned kol_time_tick() |
{ |
asm ("int $0x40"::"a"(26), "b"(9)); |
} |
unsigned kol_sound_speaker(char data[]) |
{ |
asm ("movl %0, %%esi"::"a"(data)); |
asm ("int $0x40"::"a"(55), "b"(55)); |
} |
unsigned kol_process_info(unsigned slot, char buf1k[]) |
{ |
asm ("int $0x40"::"a"(9), "b"(buf1k), "c"(slot)); |
} |
int kol_process_kill_pid(unsigned process) |
{ |
asm ("int $0x40"::"a"(18), "b"(18), "c"(process)); |
} |
int kol_kill_process(unsigned process) |
{ |
asm ("int $0x40"::"a"(18), "b"(2), "c"(process)); |
} |
void kol_get_kernel_ver(char buff16b[]) |
{ |
asm ("int $0x40"::"a"(18), "b"(13), "c"(buff16b)); |
} |
/programs/games/donkey/system/kolibri.h |
---|
0,0 → 1,92 |
#define NULL ((void*)0) |
typedef struct |
{ |
unsigned p00 __attribute__((packed)); |
unsigned p04 __attribute__((packed)); |
unsigned p08 __attribute__((packed)); |
unsigned p12 __attribute__((packed)); |
unsigned p16 __attribute__((packed)); |
char p20 __attribute__((packed)); |
char *p21 __attribute__((packed)); |
} kol_struct70 __attribute__((packed)); |
typedef struct |
{ |
unsigned p00 __attribute__((packed)); |
char p04 __attribute__((packed)); |
char p05[3] __attribute__((packed)); |
unsigned p08 __attribute__((packed)); |
unsigned p12 __attribute__((packed)); |
unsigned p16 __attribute__((packed)); |
unsigned p20 __attribute__((packed)); |
unsigned p24 __attribute__((packed)); |
unsigned p28 __attribute__((packed)); |
unsigned p32[2] __attribute__((packed)); |
unsigned p40 __attribute__((packed)); |
} kol_struct_BDVK __attribute__((packed)); |
typedef struct |
{ |
char *name __attribute__((packed)); |
void *data __attribute__((packed)); |
} kol_struct_import __attribute__((packed)); |
void kol_exit(); |
void kol_sleep(unsigned d); |
void kol_wnd_define(unsigned x, unsigned y, unsigned w, unsigned h, unsigned c); |
void kol_wnd_move(unsigned x, unsigned y); |
void kol_wnd_caption(char *s); |
void kol_event_mask(unsigned e); |
unsigned kol_event_wait(); |
unsigned kol_event_wait_time(unsigned time); |
unsigned kol_event_check(); |
void kol_paint_start(); |
void kol_paint_end(); |
void kol_paint_pixel(unsigned x, unsigned y, unsigned c); |
void kol_paint_bar(unsigned x, unsigned y, unsigned w, unsigned h, unsigned c); |
void kol_paint_line(unsigned x1, unsigned y1, unsigned x2, unsigned y2, unsigned c); |
void kol_paint_string(unsigned x, unsigned y, char *s, unsigned c); |
void kol_paint_image(unsigned x, unsigned y, unsigned w, unsigned h, char *d); |
void kol_paint_image_pal(unsigned x, unsigned y, unsigned w, unsigned h, char *d, unsigned *palette); |
unsigned kol_key_get(); |
unsigned kol_key_control(); |
void kol_key_lang_set(unsigned lang); |
unsigned kol_key_lang_get(); |
void kol_key_mode_set(unsigned mode); |
unsigned kol_key_mode_get(); |
void kol_btn_define(unsigned x, unsigned y, unsigned w, unsigned h, unsigned d, unsigned c); |
unsigned kol_btn_get(); |
void kol_btn_type(unsigned t); |
unsigned kol_mouse_pos(); |
unsigned kol_mouse_posw(); |
unsigned kol_mouse_btn(); |
void kol_board_putc(char c); |
void kol_board_puts(char *s); |
void kol_board_puti(int n); |
int kol_file_70(kol_struct70 *k); |
kol_struct_import* kol_cofflib_load(char *name); |
void* kol_cofflib_procload (kol_struct_import *imp, char *name); |
unsigned kol_cofflib_procnum (kol_struct_import *imp); |
void kol_cofflib_procname (kol_struct_import *imp, char *name, unsigned n); |
unsigned kol_system_end(unsigned param); |
unsigned kol_system_cpufreq(); |
unsigned kol_system_mem(); |
unsigned kol_system_memfree(); |
unsigned kol_system_time_get(); |
unsigned kol_system_date_get(); |
void kol_path_file2dir(char *dir, char *fname); |
void kol_path_full(char *full, char *fname); |
void kol_screen_wait_rr(); |
void kol_screen_get_size(unsigned *w, unsigned *h); |
unsigned kol_skin_height(); |
unsigned kol_thread_start(unsigned start, unsigned stack); |
unsigned kol_time_tick(); |
unsigned kol_sound_speaker(char data[]); |
unsigned kol_process_info(unsigned slot, char buf1k[]); |
int kol_process_kill_pid(unsigned process); |
void kol_get_kernel_ver(char buff16b[]); |
int kol_kill_process(unsigned process); |
/programs/games/donkey/system/stdlib.c |
---|
0,0 → 1,33 |
unsigned int seed_o = 0x45168297; |
void srand (unsigned seed) |
{ |
seed_o = seed; |
} |
int rand (void) |
{ |
seed_o = seed_o * 0x15a4e35 + 1; |
return(seed_o >> 16); |
} |
void* malloc(unsigned s) |
{ |
asm ("int $0x40"::"a"(68), "b"(12), "c"(s) ); |
} |
void free(void *p) |
{ |
asm ("int $0x40"::"a"(68), "b"(13), "c"(p) ); |
} |
void* realloc(void *p, unsigned s) |
{ |
asm ("int $0x40"::"a"(68), "b"(12), "c"(p), "d"(s) ); |
} |
/programs/games/donkey/system/stdlib.h |
---|
0,0 → 1,14 |
#define RAND_MAX 0x7FFFU |
#define isspace(c) ((c)==' ') |
#define abs(i) (((i)<0)?(-(i)):(i)) |
#define random(num) ((rand()*(num))/((RAND_MAX+1))) |
void* malloc(unsigned size); |
void free(void *pointer); |
void* realloc(void* pointer, unsigned size); |
void srand (unsigned seed); |
int rand (void); |
/programs/games/donkey/system/string.c |
---|
0,0 → 1,124 |
#include "string.h" |
void* memset(void *mem, int c, unsigned size) |
{ |
unsigned i; |
for ( i = 0; i < size; i++ ) |
*((char *)mem+i) = (char) c; |
return NULL; |
} |
void* memcpy(void *dst, const void *src, unsigned size) |
{ |
unsigned i; |
for ( i = 0; i < size; i++) |
*(char *)(dst+i) = *(char *)(src+i); |
return NULL; |
} |
int memcmp(const void* buf1, const void* buf2, int count) |
{ |
int i; |
for (i=0;i<count;i++) |
{ |
if (*(unsigned char*)buf1<*(unsigned char*)buf2) |
return -1; |
if (*(unsigned char*)buf1>*(unsigned char*)buf2) |
return 1; |
} |
return 0; |
} |
void strcat(char strDest[], char strSource[]) |
{ |
int i, j; |
i = j = 0; |
while (strDest[i] != '\0') |
i++; |
while ((strDest[i++] = strSource[j++]) != '\0') |
; |
} |
int strcmp(const char* string1, const char* string2) |
{ |
while (1) |
{ |
if (*string1<*string2) |
return -1; |
if (*string1>*string2) |
return 1; |
if (*string1=='\0') |
return 0; |
string1++; |
string2++; |
} |
} |
void strcpy(char strDest[], const char strSource[]) |
{ |
unsigned i; |
i = 0; |
while ((strDest[i] = strSource[i]) != '\0') |
i++; |
} |
char* strncpy(char *strDest, const char *strSource, unsigned n) |
{ |
unsigned i; |
if (! n ) |
return strDest; |
i = 0; |
while ((strDest[i] = strSource[i]) != '\0') |
if ( (n-1) == i ) |
break; |
else |
i++; |
return strDest; |
} |
int strlen(const char* string) |
{ |
int i; |
i=0; |
while (*string++) i++; |
return i; |
} |
char* strchr(const char* string, int c) |
{ |
while (*string) |
{ |
if (*string==c) |
return (char*)string; |
string++; |
} |
return (char*)0; |
} |
/programs/games/donkey/system/string.h |
---|
0,0 → 1,15 |
#ifndef NULL |
#define NULL ((void*)0) |
#endif |
void* memset(void *mem, int c, unsigned size); |
void* memcpy(void *dst, const void *src, unsigned size); |
int memcmp(const void* buf1, const void* buf2, int count); |
void strcat(char strDest[], char strSource[]); |
int strcmp(const char* string1, const char* string2); |
void strcpy(char strDest[], const char strSource[]); |
char* strncpy(char *strDest, const char *strSource, unsigned n); |
int strlen(const char* string); |
char *strchr(const char* string, int c); |
/programs/games/donkey/system |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |