Stuff, again
This commit is contained in:
parent
ec0045a566
commit
bea3e8a927
14
src/Makefile
14
src/Makefile
|
@ -67,13 +67,15 @@ LOBJDIR=$(OBJDIR)/$(LINXDIR)
|
||||||
COMMDEPS=$(INCDIR)/kaleid.h $(INCDIR)/kaldefs.h $(INCDIR)/kaltypes.h \
|
COMMDEPS=$(INCDIR)/kaleid.h $(INCDIR)/kaldefs.h $(INCDIR)/kaltypes.h \
|
||||||
$(INCDIR)/kalmask.h $(INCDIR)/kalmask.h $(INCDIR)/kalassrt.h
|
$(INCDIR)/kalmask.h $(INCDIR)/kalmask.h $(INCDIR)/kalassrt.h
|
||||||
|
|
||||||
COMMSRCS=$(COMMDIR)/string.c $(COMMDIR)/status.c \
|
COMMSRCS=$(COMMDIR)/string.c $(COMMDIR)/status.c $(COMMDIR)/rand.c \
|
||||||
$(COMMDIR)/convert.c $(COMMDIR)/memory.c
|
$(COMMDIR)/convert.c $(COMMDIR)/memory.c $(COMMDIR)/arith.c
|
||||||
|
|
||||||
COMMOBJS=$(COBJDIR)/string.o $(COBJDIR)/status.o \
|
COMMOBJS=$(COBJDIR)/string.o $(COBJDIR)/status.o $(COBJDIR)/rand.o \
|
||||||
$(COBJDIR)/convert.o $(COBJDIR)/memory.o
|
$(COBJDIR)/convert.o $(COBJDIR)/memory.o $(COBJDIR)/arith.o
|
||||||
|
|
||||||
common: $(COMMDEPS) $(COMMSRCS)
|
common: $(COMMDEPS) $(COMMSRCS)
|
||||||
|
$(KCC) -c $(COMMDIR)/rand.c -o $(COBJDIR)/rand.o
|
||||||
|
$(KCC) -c $(COMMDIR)/arith.c -o $(COBJDIR)/arith.o
|
||||||
$(KCC) -c $(COMMDIR)/string.c -o $(COBJDIR)/string.o
|
$(KCC) -c $(COMMDIR)/string.c -o $(COBJDIR)/string.o
|
||||||
$(KCC) -c $(COMMDIR)/status.c -o $(COBJDIR)/status.o
|
$(KCC) -c $(COMMDIR)/status.c -o $(COBJDIR)/status.o
|
||||||
$(KCC) -c $(COMMDIR)/memory.c -o $(COBJDIR)/memory.o
|
$(KCC) -c $(COMMDIR)/memory.c -o $(COBJDIR)/memory.o
|
||||||
|
@ -81,7 +83,9 @@ common: $(COMMDEPS) $(COMMSRCS)
|
||||||
|
|
||||||
CCC=$(CC2NAME) $(COPTIM) $(CWARNS) $(CINCLUDES)
|
CCC=$(CC2NAME) $(COPTIM) $(CWARNS) $(CINCLUDES)
|
||||||
|
|
||||||
test-common: $(COMMSRCS)
|
tests: $(COMMSRCS)
|
||||||
|
$(CCC) -c $(COMMDIR)/rand.c -o $(COBJDIR)/rand.o
|
||||||
|
$(CCC) -c $(COMMDIR)/arith.c -o $(COBJDIR)/arith.o
|
||||||
$(CCC) -c $(COMMDIR)/string.c -o $(COBJDIR)/string.o
|
$(CCC) -c $(COMMDIR)/string.c -o $(COBJDIR)/string.o
|
||||||
$(CCC) -c $(COMMDIR)/status.c -o $(COBJDIR)/status.o
|
$(CCC) -c $(COMMDIR)/status.c -o $(COBJDIR)/status.o
|
||||||
$(CCC) -c $(COMMDIR)/memory.c -o $(COBJDIR)/memory.o
|
$(CCC) -c $(COMMDIR)/memory.c -o $(COBJDIR)/memory.o
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
//----------------------------------------------------------------------------//
|
||||||
|
// GNU GPL OS/K //
|
||||||
|
// //
|
||||||
|
// Authors: spectral` //
|
||||||
|
// NeoX //
|
||||||
|
// //
|
||||||
|
// Desc: Arithmetical functions //
|
||||||
|
//----------------------------------------------------------------------------//
|
||||||
|
|
||||||
|
// do not mask anything
|
||||||
|
#define _KALMASK_H
|
||||||
|
#include <kaleid.h>
|
||||||
|
|
||||||
|
int _osk_abs(int x)
|
||||||
|
{
|
||||||
|
return abs(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
long _osk_labs(long x)
|
||||||
|
{
|
||||||
|
return labs(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
int _osk_min(int x, int y)
|
||||||
|
{
|
||||||
|
return min(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
long _osk_lmin(long x, long y)
|
||||||
|
{
|
||||||
|
return lmin(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
int _osk_max(int x, int y)
|
||||||
|
{
|
||||||
|
return max(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
long _osk_lmax(long x, long y)
|
||||||
|
{
|
||||||
|
return lmax(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
div_t _osk_div(int x, int y)
|
||||||
|
{
|
||||||
|
return div(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
ldiv_t _osk_ldiv(long x, long y)
|
||||||
|
{
|
||||||
|
return ldiv(x, y);
|
||||||
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ static inline void *_memset_internal(void *ptr, ulong uval, size_t qwords)
|
||||||
|
|
||||||
// aligned memory write
|
// aligned memory write
|
||||||
for (n = 0; n < qwords; n++) {
|
for (n = 0; n < qwords; n++) {
|
||||||
*(uptr + n) = uval;
|
*uptr++ = uval;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
|
@ -54,7 +54,7 @@ void *memset(void *ptr, int val, size_t bytes)
|
||||||
|
|
||||||
_memset_internal(uptr, uval, qwords);
|
_memset_internal(uptr, uval, qwords);
|
||||||
|
|
||||||
uptr += qwords * QWORD_SIZE;
|
uptr = (uchar *) ( (ulong)uptr / (qwords * QWORD_SIZE) );
|
||||||
bytes %= QWORD_SIZE;
|
bytes %= QWORD_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,6 +113,18 @@ void *memsetw(void *ptr, int val, size_t words)
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set "dwords"-many dwords starting from ptr to val
|
||||||
|
// XXX unimplemented
|
||||||
|
//
|
||||||
|
void *memsetd(void *ptr, int val, size_t dwords)
|
||||||
|
{
|
||||||
|
(void)val;
|
||||||
|
(void)dwords;
|
||||||
|
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Set "qwords"-many qwords starting from ptr to val
|
// Set "qwords"-many qwords starting from ptr to val
|
||||||
//
|
//
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
int rand(void) { /*STUB*/ return 0; }
|
|
@ -10,7 +10,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <kaleid.h>
|
void *_osk_memsetw(void *, int, long);
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
@ -32,7 +32,7 @@ int main(int argc, char *argv[])
|
||||||
short *xxx = (short *)malloc(sizex * sizeof(short));
|
short *xxx = (short *)malloc(sizex * sizeof(short));
|
||||||
//printf("%ld\n",(ulong)xxx%8);
|
//printf("%ld\n",(ulong)xxx%8);
|
||||||
//memzero(xxx, sizex);
|
//memzero(xxx, sizex);
|
||||||
memsetw(xxx, 300, sizex);
|
_osk_memsetw(xxx, 300, sizex);
|
||||||
|
|
||||||
size_t it;
|
size_t it;
|
||||||
for (it = 0; it < sizex; it++) {
|
for (it = 0; it < sizex; it++) {
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
// random test file
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
long x[4];
|
||||||
|
long *ptr = &x[0];
|
||||||
|
|
||||||
|
printf("%p\n", ptr);
|
||||||
|
|
||||||
|
ptr++;
|
||||||
|
printf("%p\n", ptr);
|
||||||
|
|
||||||
|
ptr = ptr + 1;
|
||||||
|
printf("%p\n", ptr);
|
||||||
|
|
||||||
|
ptr = (long *)((long)ptr + 1);
|
||||||
|
printf("%p\n", ptr);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -11,11 +11,11 @@
|
||||||
#define _KALASSRT_H
|
#define _KALASSRT_H
|
||||||
|
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
// Useful macros //
|
// Macros //
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
|
|
||||||
#ifndef noreturn
|
#ifndef noreturn
|
||||||
#define noreturn __attribute__((noreturn))
|
#define noreturn __attribute__((__noreturn__))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef unlikely(x)
|
#ifndef unlikely(x)
|
||||||
|
@ -39,22 +39,6 @@ noreturn void _assert_handler(const char *, const char *, int, const char *);
|
||||||
_assert_handler(#x, __FILE__, __LINE__, __func__); \
|
_assert_handler(#x, __FILE__, __LINE__, __func__); \
|
||||||
} while (0);
|
} while (0);
|
||||||
|
|
||||||
//
|
|
||||||
// Aliases
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef Assert
|
|
||||||
#define Assert assert
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef DosAssert
|
|
||||||
#define DosAssert assert
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef KalAssert
|
|
||||||
#define KalAssert assert
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
// When not debugging //
|
// When not debugging //
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
|
@ -75,6 +59,18 @@ noreturn void _assert_handler(const char *, const char *, int, const char *);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//------------------------------------------//
|
||||||
|
// Aliases for assert() //
|
||||||
|
//------------------------------------------//
|
||||||
|
|
||||||
|
#ifndef Assert
|
||||||
|
#define Assert assert
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef KalAssert
|
||||||
|
#define KalAssert assert
|
||||||
|
#endif
|
||||||
|
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
// End of <kalassrt.h> //
|
// End of <kalassrt.h> //
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
|
|
|
@ -19,14 +19,24 @@
|
||||||
typedef unsigned long size_t;
|
typedef unsigned long size_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __status_t
|
||||||
|
#define __status_t
|
||||||
|
typedef signed long status_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __va_list
|
#ifndef __va_list
|
||||||
#define __va_list
|
#define __va_list
|
||||||
typedef __builtin_va_list va_list;
|
typedef __builtin_va_list va_list;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __status_t
|
#ifndef __div_t
|
||||||
#define __status_t
|
#define __div_t
|
||||||
typedef signed long status_t;
|
typedef struct { int quot, rem; } div_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __ldiv_t
|
||||||
|
#define __ldiv_t
|
||||||
|
typedef struct { long quot, rem; } ldiv_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
|
@ -45,6 +55,10 @@ typedef signed long status_t;
|
||||||
#define va_start __builtin_va_start
|
#define va_start __builtin_va_start
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef va_arg
|
||||||
|
#define va_arg __builtin_va_arg
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef va_next
|
#ifndef va_next
|
||||||
#define va_next __builtin_va_next
|
#define va_next __builtin_va_next
|
||||||
#endif
|
#endif
|
||||||
|
@ -57,15 +71,29 @@ typedef signed long status_t;
|
||||||
// Memory management utilities //
|
// Memory management utilities //
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
|
|
||||||
#if !defined(memset) && !defined(_KALMASK_H)
|
#ifndef memset
|
||||||
# define memset memsetb
|
#define memset memsetb
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef memchr
|
||||||
|
#define memchr memchrb
|
||||||
|
#endif
|
||||||
|
|
||||||
void *memsetb(void *, int, size_t);
|
void *memsetb(void *, int, size_t);
|
||||||
void *memsetw(void *, int, size_t);
|
void *memsetw(void *, int, size_t);
|
||||||
void *memsetd(void *, int, size_t);
|
void *memsetd(void *, int, size_t);
|
||||||
void *memsetq(void *, long, size_t);
|
void *memsetq(void *, long, size_t);
|
||||||
|
|
||||||
|
void *memchrb(const void *, int, size_t);
|
||||||
|
void *memchrw(const void *, int, size_t);
|
||||||
|
void *memchrd(const void *, int, size_t);
|
||||||
|
void *memchrq(const void *, long, size_t);
|
||||||
|
|
||||||
|
void *memcpy(void *, const void *, size_t);
|
||||||
|
void *memmove(void *, const void *, size_t);
|
||||||
|
|
||||||
void *memzero(void *, size_t);
|
void *memzero(void *, size_t);
|
||||||
|
int memcmp(const void *, const void *, size_t);
|
||||||
|
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
// String manipulation utilities //
|
// String manipulation utilities //
|
||||||
|
@ -86,7 +114,24 @@ int vsnprintf(char *, size_t, const char *, va_list);
|
||||||
// Type conversion utilities //
|
// Type conversion utilities //
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
|
|
||||||
|
int *atoi(const char *);
|
||||||
|
long *atol(const char *);
|
||||||
|
|
||||||
char *itoa(int, char *, int);
|
char *itoa(int, char *, int);
|
||||||
|
char *ltoa(long, char *, int);
|
||||||
|
|
||||||
|
char *utoa(unsigned int, char *, int);
|
||||||
|
char *ultoa(unsigned long, char *, int);
|
||||||
|
|
||||||
|
long strtol(const char *, char **, int);
|
||||||
|
unsigned long strtoul(const char *, char **, int);
|
||||||
|
|
||||||
|
//------------------------------------------//
|
||||||
|
// RNG utilities //
|
||||||
|
//------------------------------------------//
|
||||||
|
|
||||||
|
int rand(void);
|
||||||
|
void srand(unsigned int);
|
||||||
|
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
// Diverse utilities //
|
// Diverse utilities //
|
||||||
|
@ -94,6 +139,56 @@ char *itoa(int, char *, int);
|
||||||
|
|
||||||
const char *describe_status(status_t) _NO_MASK;
|
const char *describe_status(status_t) _NO_MASK;
|
||||||
|
|
||||||
|
//------------------------------------------//
|
||||||
|
// Arithmetical macros //
|
||||||
|
//------------------------------------------//
|
||||||
|
|
||||||
|
#ifndef abs
|
||||||
|
#define abs(x) ((x) < 0 ? -x : x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef labs
|
||||||
|
#define labs(x) ((x) < 0 ? -x : x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef min
|
||||||
|
#define min(x,y) ((x) < (y) ? (x) : (y))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef lmin
|
||||||
|
#define lmin(x,y) ((x) < (y) ? (x) : (y))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef max
|
||||||
|
#define max(x,y) ((x) < (y) ? (x) : (y))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef lmax
|
||||||
|
#define lmax(x,y) ((x) < (y) ? (x) : (y))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __div
|
||||||
|
#define __div
|
||||||
|
static inline div_t div(int __x, int __y)
|
||||||
|
{
|
||||||
|
div_t __res;
|
||||||
|
__res.quot = __x/__y;
|
||||||
|
__res.rem = __x%__y;
|
||||||
|
return __res;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __ldiv
|
||||||
|
#define __ldiv
|
||||||
|
static inline ldiv_t ldiv(long __x, long __y)
|
||||||
|
{
|
||||||
|
ldiv_t __res;
|
||||||
|
__res.quot = __x/__y;
|
||||||
|
__res.rem = __x%__y;
|
||||||
|
return __res;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
// End of <kalcrt.h> //
|
// End of <kalcrt.h> //
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
|
|
|
@ -51,11 +51,11 @@
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
|
|
||||||
#ifndef PACKED
|
#ifndef PACKED
|
||||||
#define PACKED __attribute__((packed))
|
#define PACKED __attribute__((__packed__))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef noreturn
|
#ifndef noreturn
|
||||||
#define noreturn __attribute__((noreturn))
|
#define noreturn __attribute__((__noreturn__))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef alignof
|
#ifndef alignof
|
||||||
|
|
|
@ -20,6 +20,12 @@
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef _OSK_SOURCE
|
||||||
|
# ifndef _KALMASK_H
|
||||||
|
# include <kalmask.h>
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
// Include common part of API //
|
// Include common part of API //
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
|
@ -36,10 +42,6 @@
|
||||||
#include <kalassrt.h>
|
#include <kalassrt.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(_KALMASK_NEEDED) && !defined(_KALMASK_H)
|
|
||||||
#include <kalmask.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef _KALCRT_H
|
#ifndef _KALCRT_H
|
||||||
#include <kalcrt.h>
|
#include <kalcrt.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -11,36 +11,77 @@
|
||||||
#define _KALMASK_H
|
#define _KALMASK_H
|
||||||
|
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
// Not building for OS/K //
|
|
||||||
//------------------------------------------//
|
#define memset _osk_memsetb
|
||||||
#ifndef _OSK_SOURCE
|
#define memchr _osk_memchrb
|
||||||
|
|
||||||
|
#define memsetb _osk_memsetb
|
||||||
|
#define memsetw _osk_memsetw
|
||||||
|
#define memsetd _osk_memsetd
|
||||||
|
#define memsetq _osk_memsetq
|
||||||
|
|
||||||
|
#define memchrb _osk_memchrb
|
||||||
|
#define memchrw _osk_memchrw
|
||||||
|
#define memchrd _osk_memchrd
|
||||||
|
#define memchrq _osk_memchrq
|
||||||
|
|
||||||
|
#define memcpy _osk_memcpy
|
||||||
|
#define memmove _osk_memmove
|
||||||
|
|
||||||
|
#define memcmp _osk_memcmp
|
||||||
|
#define memzero _osk_memzero
|
||||||
|
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
|
|
||||||
# define memcpy _osk_memcpy
|
#define strlen _osk_strlen
|
||||||
# define memcmp _osk_memcmp
|
#define strcpy _osk_strcpy
|
||||||
# define memzero _osk_memzero
|
#define strncpy _osk_strncpy
|
||||||
|
#define strrev _osk_strrev
|
||||||
|
#define reverse _osk_reverse
|
||||||
|
|
||||||
|
#define sprintf _osk_sprintf
|
||||||
|
#define snprintf _osk_snprintf
|
||||||
|
#define vsprintf _osk_vsprintf
|
||||||
|
#define vsnprintf _osk_vsnprintf
|
||||||
|
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
|
|
||||||
# define strlen _osk_strlen
|
#define atoi _osk_atoi
|
||||||
# define strcpy _osk_strcpy
|
#define atol _osk_atol
|
||||||
# define strncpy _osk_strncpy
|
|
||||||
# define strrev _osk_strrev
|
#define itoa _osk_itoa
|
||||||
# define reverse _osk_reverse
|
#define ltoa _osk_ltoa
|
||||||
# define sprintf _osk_sprintf
|
|
||||||
# define snprintf _osk_snprintf
|
#define utoa _osk_utoa
|
||||||
# define vsprintf _osk_vsprintf
|
#define ultoa _osk_ultoa
|
||||||
# define vsnprintf _osk_vsnprintf
|
|
||||||
|
#define strtol _osk_strtol
|
||||||
|
#define strtoul _osk_strtoul
|
||||||
|
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
|
|
||||||
# define itoa _osk_itoa
|
#define rand _osk_rand
|
||||||
# define atoi _osk_atoi
|
#define srand _osk_srand
|
||||||
|
|
||||||
|
//------------------------------------------//
|
||||||
|
|
||||||
|
#define abs _osk_abs
|
||||||
|
#define labs _osk_labs
|
||||||
|
|
||||||
|
#define min _osk_min
|
||||||
|
#define lmin _osk_lmin
|
||||||
|
|
||||||
|
#define max _osk_max
|
||||||
|
#define lmax _osk_lmax
|
||||||
|
|
||||||
|
#define __div
|
||||||
|
#define __ldiv
|
||||||
|
|
||||||
|
#define div _osk_div
|
||||||
|
#define ldiv _osk_ldiv
|
||||||
|
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
// End of <kalmask.h> //
|
// End of <kalmask.h> //
|
||||||
//------------------------------------------//
|
//------------------------------------------//
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ status_t ClearTerm(terminal_t *kt)
|
||||||
Assert(kt->kt_init == INITOK);
|
Assert(kt->kt_init == INITOK);
|
||||||
|
|
||||||
LockTerm(kt);
|
LockTerm(kt);
|
||||||
ClearTerm_Unlocked(kt);
|
ClearTermUnlocked(kt);
|
||||||
UnlockTerm(kt);
|
UnlockTerm(kt);
|
||||||
|
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
|
@ -102,7 +102,7 @@ status_t PutOnTerm(terminal_t *kt, char ch)
|
||||||
Assert(kt->kt_init == INITOK);
|
Assert(kt->kt_init == INITOK);
|
||||||
|
|
||||||
LockTerm(kt);
|
LockTerm(kt);
|
||||||
PutOnTerm_Unlocked(kt, ch);
|
PutOnTermUnlocked(kt, ch);
|
||||||
UnlockTerm(kt);
|
UnlockTerm(kt);
|
||||||
|
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
|
@ -120,7 +120,7 @@ status_t PrintOnTerm(terminal_t *kt, const char *str)
|
||||||
|
|
||||||
LockTerm(kt);
|
LockTerm(kt);
|
||||||
while (*str) {
|
while (*str) {
|
||||||
PutOnTerm_Unlocked(kt, *str++);
|
PutOnTermUnlocked(kt, *str++);
|
||||||
}
|
}
|
||||||
UnlockTerm(kt);
|
UnlockTerm(kt);
|
||||||
|
|
||||||
|
@ -138,7 +138,7 @@ status_t PrintOnTerm(terminal_t *kt, const char *str)
|
||||||
// Fill terminal with spaces (UNLOCKED version)
|
// Fill terminal with spaces (UNLOCKED version)
|
||||||
// XXX would '\0' work too?
|
// XXX would '\0' work too?
|
||||||
//
|
//
|
||||||
void ClearTerm_Unlocked(terminal_t *kt)
|
void ClearTermUnlocked(terminal_t *kt)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ void ClearTerm_Unlocked(terminal_t *kt)
|
||||||
//
|
//
|
||||||
// Write a single character on the terminal (UNLOCKED version)
|
// Write a single character on the terminal (UNLOCKED version)
|
||||||
//
|
//
|
||||||
void PutOnTerm_Unlocked(terminal_t *kt, char ch)
|
void PutOnTermUnlocked(terminal_t *kt, char ch)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
size_t prev_row;
|
size_t prev_row;
|
||||||
|
@ -169,19 +169,20 @@ void PutOnTerm_Unlocked(terminal_t *kt, char ch)
|
||||||
// later in this function we actually do the line feed
|
// later in this function we actually do the line feed
|
||||||
else if (ch == '\n') { kt->kt_curr_y = kt->kt_width - 1; }
|
else if (ch == '\n') { kt->kt_curr_y = kt->kt_width - 1; }
|
||||||
|
|
||||||
// tabulations account for 4 spaces
|
// tabulations account for "TABSIZE" spaces
|
||||||
else if (ch == '\t') {
|
else if (ch == '\t') {
|
||||||
prev_row = kt->kt_curr_y;
|
prev_row = kt->kt_curr_y;
|
||||||
// compiler will optimize this away
|
// compiler will optimize this away
|
||||||
for (i = 0; i < TABSIZE; i++) {
|
for (i = 0; i < TABSIZE; i++) {
|
||||||
// tabulations can't spread over two lines
|
// tabulations can't spread over two lines
|
||||||
if (kt->kt_curr_y == prev_row) {
|
if (kt->kt_curr_y == prev_row) {
|
||||||
PutOnTerm_Unlocked(kt, ' ');
|
PutOnTermUnlocked(kt, ' ');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
|
// actually write on the buffer
|
||||||
const size_t offset = ComputeOffset(kt, kt->kt_curr_x, kt->kt_curr_y);
|
const size_t offset = ComputeOffset(kt, kt->kt_curr_x, kt->kt_curr_y);
|
||||||
kt->kt_buffer[offset] = ComputeEntry(ch, kt->kt_color);
|
kt->kt_buffer[offset] = ComputeEntry(ch, kt->kt_color);
|
||||||
}
|
}
|
||||||
|
@ -200,10 +201,10 @@ void PutOnTerm_Unlocked(terminal_t *kt, char ch)
|
||||||
//
|
//
|
||||||
// Print string on terminal (UNLOCKED version)
|
// Print string on terminal (UNLOCKED version)
|
||||||
//
|
//
|
||||||
void PrintOnTerm_Unlocked(terminal_t *kt, const char *str)
|
void PrintOnTermUnlocked(terminal_t *kt, const char *str)
|
||||||
{
|
{
|
||||||
while (*str) {
|
while (*str) {
|
||||||
PutOnTerm_Unlocked(kt, *str++);
|
PutOnTermUnlocked(kt, *str++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,10 +49,10 @@ status_t PrintOnTerm(terminal_t *, const char *);
|
||||||
status_t ChTermColor(terminal_t *, uchar);
|
status_t ChTermColor(terminal_t *, uchar);
|
||||||
|
|
||||||
#if defined(_UNLOCKED_IO)
|
#if defined(_UNLOCKED_IO)
|
||||||
void ClearTerm_Unlocked(terminal_t *);
|
void ClearTermUnlocked(terminal_t *);
|
||||||
void PutOnTerm_Unlocked(terminal_t *, char);
|
void PutOnTermUnlocked(terminal_t *, char);
|
||||||
void PrintOnTerm_Unlocked(terminal_t *, const char *);
|
void PrintOnTermUnlocked(terminal_t *, const char *);
|
||||||
#define ChTermColor_Unlocked(kt, col) ((kt)->kt_color = col)
|
#define ChTermColorUnlocked(kt, col) ((kt)->kt_color = col)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _NO_DEBUG
|
#ifndef _NO_DEBUG
|
||||||
|
|
|
@ -44,22 +44,22 @@ void StartPanic(const char *str)
|
||||||
|
|
||||||
SetKernState(KSTATE_PANIC);
|
SetKernState(KSTATE_PANIC);
|
||||||
|
|
||||||
ClearTerm_Unlocked(stdout);
|
ClearTermUnlocked(stdout);
|
||||||
|
|
||||||
if (str == NULL) {
|
if (str == NULL) {
|
||||||
str = "(no message given)";
|
str = "(no message given)";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetPanicStr()) {
|
if (GetPanicStr()) {
|
||||||
PrintOnTerm_Unlocked(stdout, "double panic!\n");
|
PrintOnTermUnlocked(stdout, "double panic!\n");
|
||||||
HaltCPU();
|
HaltCPU();
|
||||||
}
|
}
|
||||||
|
|
||||||
SetPanicStr(str);
|
SetPanicStr(str);
|
||||||
|
|
||||||
// we cannot lock anything when panicking
|
// we cannot lock anything when panicking
|
||||||
PrintOnTerm_Unlocked(stdout, "panic! - ");
|
PrintOnTermUnlocked(stdout, "panic! - ");
|
||||||
PrintOnTerm_Unlocked(stdout, str);
|
PrintOnTermUnlocked(stdout, str);
|
||||||
|
|
||||||
while (TRUE) {
|
while (TRUE) {
|
||||||
HaltCPU();
|
HaltCPU();
|
||||||
|
|
Loading…
Reference in New Issue