#ifndef	_CCIDEBUG_H
#define	_CCIDEBUG_H

#ifndef	CONST
#	define	CONST	const
#endif

#define	FILE	char
typedef	unsigned int	size_t;

#ifndef	FRAME
#	define	short
#endif

#define	va_list	char *

/*	"code.c"	----------------------------------------------------*/

extern	int		_heep_max;
extern	int		_code_max;
extern	int		_heep_pos;
extern	int		_code_pos;
extern	int		_base_pos;
extern	int		_stak_pos;
extern	int		_code_pos;
extern	int		_symb_pos;

extern	int		errno;

extern int		fclose(FILE *);
extern int		fflush(FILE *);
extern FILE		*fopen(CONST char *, CONST char *);
extern size_t	fread(void *, size_t, size_t, FILE *);
extern size_t	fwrite(CONST void *, size_t, size_t, FILE *);
extern int		fgetc(FILE *);
extern int		getc(FILE *);
extern int		getchar(void);
extern char		*gets(char *);
extern char		*fgets(char *, int, FILE *);
extern int		fputs(CONST char *, FILE *);
extern int		fputc(int, FILE *);
extern int		putc(int, FILE *);
extern int		putchar(int);
extern int		fseek(FILE *, long, int);
extern long		ftell(FILE *);
extern void		rewind(FILE *);
extern void		clearerr(FILE *);
extern int		feof(FILE *);
extern int		vprintf(CONST char *, va_list);
extern int		vfprintf(FILE *, CONST char *, va_list);
extern int		vsprintf(char *, CONST char *, va_list);
extern int		printf(CONST char *, ...);
extern int		fprintf(FILE *, CONST char *, ...);
extern int		sprintf(char *, CONST char *, ...);

extern void		*memccpy(void *, void *, int, unsigned int);
extern void		*memchr(void *, int, size_t);
extern void		*memcpy(void *, CONST void *, size_t);
extern void		*memset(void *, int, size_t);
extern int		memcmp(CONST void *, CONST void *, size_t);

extern void		movedata(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
extern char		*strcat(char *, CONST char *);
extern char		*strchr(CONST char *, int);
extern int		strcmp(CONST char *, CONST char *);
extern int		strcmpi(CONST char *, CONST char *);
extern char		*strdup(CONST char *);
#if	0
extern char		*strlwr(char *);
extern char		*strupr(char *);
#endif
extern char		*strcpy(char *, CONST char *);
extern size_t	strcspn(CONST char *, CONST char *);
extern size_t	strlen(CONST char *);
extern char		*strncat(char *, CONST char *, size_t);
extern int		strncmp(CONST char *, CONST char *, size_t);
extern char		*strncpy(char *, CONST char *, size_t);
#if	0
extern char		*strnset(char *, int, size_t);
#endif
extern char		*strpbrk(CONST char *, CONST char *);
extern char		*strrchr(CONST char *, int);
extern size_t	strspn(CONST char *, CONST char *);
extern char		*strstr(CONST char *, CONST char *);
extern char		*strtok(char *, CONST char *);


extern double	atof(CONST char *);
extern int		atoi(CONST char *);
extern long		atol(CONST char *);
extern int		rand(void);
extern void		srand(unsigned int);

extern void		*calloc(unsigned int, size_t);
extern void		*malloc(size_t);
extern void		*realloc(void *, size_t);
extern void		free(void *);

extern char		*getenv(CONST char *);
extern int		system(CONST char *);
extern int		_putenv(char *);

/*	"dfunc.c"	----------------------------------------------------*/
extern double	acos(double);
extern double	asin(double);
extern double	atan2(double, double);
extern double	atan(double);
extern double	ceil(double);
extern double	cos(double);
extern double	cosh(double);
extern double	exp(double);
extern double	fabs(double);
extern double	floor(double);
extern double	fmod(double, double);
extern double	frexp(double, int *);
extern double	ldexp(double, int);
extern double	log10(double);
extern double	log(double);
extern double	modf(double, double *);
extern double	pow(double, double);
extern double	sin(double);
extern double	sinh(double);
extern double	sqrt(double);
extern double	tan(double);
extern double	tanh(double);

/*	"aplcci.c"	----------------------------------------------------*/
extern int		_funcCall(char *,int,...);
extern int		_inp(unsigned int);
extern int		_inpw(unsigned int);
extern int		_outp(unsigned int,int);
extern int		_outpw(unsigned int, int);

extern unsigned int	getds(void);
extern void		_movedata(unsigned int, unsigned int, unsigned int, unsighed int, unsigned int);
extern void		_setByte(char *, int);
extern void		_setWord(char *, int);
extern void		_setDword(char *, int);
extern void		_getByte(char *);
extern void		_getWord(char *);
extern void		_getDword(char *);

extern int		iskana(int);
extern int		iskanji(int);
extern int		iskanji2(int);
extern int		isalkana(int);
extern int		isprkana(int);
extern int		isalnmkana(int);

extern	char	*EgbPtr;
#ifndef	COLOR
#define	COLOR	unsigned short
#endif
/*	EGB_ 関数はHigh Ｃ用ライブラリと同じ	*/


/*	"disp.h"	----------------------------------------------------*/
extern int		DSP_getWritePage(void);
extern void		DSP_writePage(int page);
extern void		DSP_pset(int x0, int y0, int func, COLOR col);
extern void		DSP_line(int x1, int y1, int x2, int y2, int func, COLOR col);
extern void		DSP_box(int x1, int y1, int x2, int y2, int func, COLOR col);
extern void		DSP_boxf(int x1, int y1, int x2, int y2, int func, COLOR col);
extern void		DSP_boxHol(int x1, int y1, int x2, int y2, int func, COLOR hilCol,COLOR shaCol);
extern void		DSP_boxfHol(int x1, int y1, int x2, int y2, int func, COLOR col, COLOR hilCol,COLOR shaCol);

#ifndef	VDPUSH_AUTO
#	define	VDPUSH_AUTO	(0)
#	define	VDPUSH_MEM	(1)
#	define	VDPUSH_DSK	(2)
#endif
#define	VGBLK	char
extern VGBLK	*DSP_pushVram( int md, int x1, int y1, int x2, int y2);
extern void		DSP_popVram( VGBLK *para );
extern void		DSP_dspVram( VGBLK *para, int x0, int y0 );
extern void		DSP_freeVram( VGBLK *para );

extern void		DSP_symbol( int x0, int y0, int xb, int yb, int fun, COLOR col, COLOR bac, int font, int fntdir, int dspdir, int space, CONST char *form, ... );

#ifndef	FNTYPE_ROM
#	define	FNTYPE_ROM	(0)	/* ROM フォント					*/
#	define	FNTYPE_USR1	(1)	/* system Pride 標準フォント	*/
#	define	FNTYPE_USR2	(2)	/* ROM フォントバリエーション	*/
#endif
extern int		DSP_setFntTbl( int typ );

#ifndef	PLT_RGB
#	define	PLT_RGB	char
#endif
extern void		DSP_setPlt( PLT_RGB *rgb );
extern PLT_RGB	*DSP_pushPlt(void);
extern void		DSP_popPlt( PLT_RGB *rgb );

#ifndef	DSPTN_RETKEY
#	define	DSPTN_RETKEY	(1)
#	define	DSPTN_UP		(2)
#	define	DSPTN_DOWN		(3)
#	define	DSPTN_LEFT		(4)
#	define	DSPTN_RIGHT		(5)
#	define	DSPTN_RESIZE	(6)
#	define	DSPTN_RESMAX	(7)
#	define	DSPTN_RESMIN	(8)
#endif
extern void		DSP_putFont( int x0, int y0, int n, COLOR col, COLOR bac, int fun );

extern void		DSP_str   ( int x0, int y0, COLOR col, COLOR bac, int fnt, CONST char *form, ... );
extern void		DSP_egbStr( int x0, int y0, COLOR col, COLOR bac, int fnt, CONST char *form, ... );
extern void		DSP_puts12   ( int x0, int y0, COLOR col, COLOR bac, CONST char *form, ... );
extern void		DSP_egbPuts12( int x0, int y0, COLOR col, COLOR bac, CONST char *form, ... );
extern void		DSP_putGearIcon( int x0, int y0, int n, int sw, int fun, int col, int bac );
extern void		DSP_putFont( int x0, int y0, int n, COLOR col, COLOR bac, int fun );

/*	"mouse.h"	----------------------------------------------------*/
extern int		MOS_pget(int *x,int *y);
extern int		MOS_moveArea( int x1, int y1, int x2, int y2 );
extern int		MOS_initMoveArea(void);
extern void		MOS_curDisp(int n);
extern void		MOS_curType(int no);
extern void		MOS_moveFrame( FRAME *fr );
#ifndef	MOSTK_T
#	define	MOSTK_T	char
#endif
extern MOSTK_T	*MOS_push();
extern void		MOS_pop( MOSTK_T *mosTk );
#ifndef	MOSTKP_T
#	define	MOSTKP_T	char
#endif
extern void		MOS_setPos(int x, int y);
extern MOSTKP	*MfOS_pushPos( FRAME *newArea, int newXofs, int newYofs );
extern void		MOS_popPos( MOSTKP *mosTkP );
extern int		_scnStoVX(int x);
extern int		_scnStoVY(int y);
extern int		_scnVtoSX(int x);
extern int		_scnVtoSY(int y);

/*	"kyb.h"		----------------------------------------------------*/
extern int		kbhit(void);
extern int		getkey( UINT *ec );
extern void		KBF_clear(void);
extern void		KBF_kan_off(void);
extern void		KBF_kan_on(void);
extern int		KBF_kan_getMode(void);
extern void		KBF_kan_setMode(int md);
extern void		KBF_kan_setPos(int x, int y);
extner void		KBF_kan_setStr(char *s);

/*	"event.h"	----------------------------------------------------*/
#ifndef	EVTSBJ_T
#	define	EVTSBJ_T	char
#endif
#ifndef	EVT_T
#	define	EVT_T	char
#endif
extern	void	*EVT_getPtr(EVTSBJ_T *sbj);


#endif
