/*       conio.h         */

#ifndef CONIO
#define CONIO

typedef char void;

/* Постоянные параметры диалога : */

extern char WNDLFT,WNDWDTH,WNDTOP,WNDHGHT;
extern char TXTX,TXTY,CURSOR,TXTCOL;

/* TXTPAGE: Старший байт адреса начала текущей страницы
        Младший - логический
        Старший - физический */

extern unsigned  TXTPAGE;
#define BW (-1)        /* Имена режимов */
#define CO 0           /* для textmode  */
#define KBD     (*((char *)0xC000))
#define KBDSTRB (*((char *)0xC010))
#define wherex() TXTX
гориз.координата текстового курсора
#define wherey() TXTY
верт.координата текстового курсора
#define kbhit()  (KBD&0x80)
убедиться в доступности символа

void   clreol();
удаление символов в конце строки
void   clrscr();
очистка текстового окна
void   gotoxy();     /* (int x,int y)    */
перемещение текстового курсора
void   textattr();   /* (int newattr)    */
изменение признаков символа,фона и мерцания
void   textcolor();  /* (char newcolor)  */
задание цвета символа
void   textmode();   /* (mode)           */
установка текстового режима
void   setpalette(); /* (0<palette number<3) */
изменение цвета,соответствующего одной из позиций палитры
void   window();     /* (int left,top,right,bottom) */
создание текстового окна

int    getch();
ввод символа с консоли
int    getche();

int    putch();      /* (int c) */
вывод символа на дисплей
int  cprintf();      /* (char * fmt [,arguments...])*/
ред-е и вывод на дисплей послед-сти символов
#endif



/*         string.h        */


#ifndef STRING
#define STRING

typedef char     void;
typedef unsigned size_t;

#ifndef NULL
#define NULL 0
#endif

void * memcpy();   /* (void * s1,void * s2,size_t n) */
копирование заданного числа символов
char * strcpy();   /* (char * s1,char * s2)          */
копирование заданного числа символов
char * strncpy();  /* (char * s1,char * s2,size_t n) */
копирование заданного числа символов

char * strcat();   /* (char * s1,char * s2)          */
соединение посл-стей символов
char * strncat();  /* (char * s1,char * s2,size_t n) */
соединение посл-стей символов

int    memcmp();   /* (void * s1,void * s2,size_t n) */
сравнение посл-стей символов
int    strcmp();   /* (char * s1,char * s2)          */
сравнение посл-стей символов
int  * strncmp();  /* (char * s1,char * s2,size_t n) */
сравнение посл-стей символов

char * strchr();   /* (char * s,int c)               */
поиск символа
char * strrchr();  /* (char * s,int c)               */
поиск последнего вхождения заданного символа
void * memset();   /* (void * s,int c,size_t n)      */
заполнение области

size_t strlen();   /* (char *s)                      */
определение длины последовательности символов
#endif



/*        math.h       */

#ifndef MATH
#define MATH
#define UNDERFLOW 1  /* Коды ошибок, регистрируемых */
#define OVERFLOW  2  /* при операциях с плавающей   */
#define DIV0      3  /* точкой - значения flterr    */
#define M_E      (2.71828182845904523536)
#define M_PI     (3.14159265358979323846)
#define M_PI_2   (1.57079632679489661923)
#define M_PI_4   (0.785398163397448309616)
#define M_1_PI   (0.318309886183790671538)
#define M_2_PI   (0.636619772367581343076)
#define M_SQRT2  (1.4142135623730950488)
#define M_SQRT_2 (0.707106781186547524401)

typedef char void;

extern int flterr;

/* Вектора для плавающей арифметики: */
extern int (*Sysvec)[4]();

double  fabs();  /* (double x)                  */
вычисление абсолютного значения
double  modf();  /* (doble value,double * iptr) */
разделение числа на целую и дробную часть

double atof();   /* (char*nptr)                */
преобразование посл-сти символов в число с плав.точкой
double strtod(); /* (char*nptr,char**endptr)   */
преобразование посл-сти символов в число с плав.точкой

char *ecvt(); /* double value,int ndig,int*dec,int*sign)*/
char *fcvt(); /* double value,int ndig,int*dec,int*sign)*/
#endif



/*      stdlib.h       */

#ifndef STDLIB
#define STDLIB
#define max(a,b) (((a) > (b))? (a) : (b))
#define min(a,b) (((a) < (b))? (a) : (b))
#define Capit 0x8000  /* Константы для функций  */
#define Sign  0x4000  /*   itoa,ltoa,ultoa      */
#ifndef NULL
#define NULL 0
#endif

typedef unsigned size_t;
typedef char     void;
typedef struct {
               int quot;
               int rem;
               } div_t;
typedef struct {
               long quot;
               long rem;
               } ldiv_t;
struct mem_t   {
               size_t         size;
               struct mem_t * next;
               };

typedef struct mem_t mem_t;

/* Переменные для alloc,malloc,calloc... */
extern void  *_Top;
extern mem_t *_Free;

/* Номер АГАТа (7 или 9) */
extern char AGATE;

div_t  * div();  /* (int numer, int denom)     */
вычисление частного и остатка от деления 2-х целых чисел
ldiv_t * ldiv(); /* (long numer,long denom)    */
вычисление частного и остатка


double atof();   /* (char*nptr)                */
преобразование посл-сти символов в число с плав.точкой
int    atoi();   /* (char*nptr)                */
преобразование посл-сти символов в число типа (int)
long   atol();   /* (char*nptr)                */
преобразование посл-сти символов в число типа (long)

double strtod(); /* (char*nptr,char**endptr)   */
преобразование посл-сти символов в число с плав.точкой
long   strtol(); /* (char*nptr,char** endptr,int base)*/
преобразование посл-сти символов в целое число
long   strtoul();/* (char*nptr,char** endptr,int base)*/

void * alloc();  /* (size_t size)               */
void * calloc(); /* (size_t  nmemb,size_t size) */
выделение памяти
void * malloc(); /* (size_t size)               */
выделение памяти

void   free();   /* (char *ptr)                 */
освобождение места в "куче"

int    abs();    /* (int x)                     */
абсолютное значение
long   labs();   /* (long x)                    */
абсолютное значение


char *ecvt(); /* double value,int ndig,int*dec,int*sign)*/
char *fcvt(); /* double value,int ndig,int*dec,int*sign)*/

char *itoa();    /* (int  value,char *string,int radix) */
преобразование целого в строковую переменную

char *ltoa();    /* (long value,char *string,int radix) */
преобразование целого в послед-сть символов

char *ultoa();   /* (long value,char *string,int radix) */
преобразование целого без знака в послед-сть символов

int  sprintf();  /* (char * s,char * fmt [,argumets...])*/
редактирование и размещение в ОЗУ последовательности символов

#endif