/***
*mylib.h - definitions/declarations for library functions.
*
*for Public Domain, 1995, Gregg Jennings. All wrongs reserved.
* P O Box 200, Falmouth, MA 02541-0200
*
*Purpose:
* Fast printing routines, user inputs, and miscelaneous
*
*Notice:
* This source file may be freely used and distributed without restriction.
*******************************************************************************/
#ifndef GENERAL_H
#include "general.h" /* machine dependent and compiler */
#endif /* specific stuff */
/* user input type definitions (ctype stuff) */
#ifndef __WATCOMC__
#ifndef _PUNCT /* use MSC equates */
#define _UPPER 0x1 /* upper case letter */
#define _LOWER 0x2 /* lower case letter */
#define _DIGIT 0x4 /* digit[0-9] */
#define _SPACE 0x8 /* tab, carriage return, newline, */
/* vertical tab or form feed */
#define _PUNCT 0x10 /* punctuation character */
#define _CONTROL 0x20 /* control character */
#define _BLANK 0x40 /* space char */
#define _HEX 0x80 /* hexadecimal digit */
#endif
#else
#define _HEX _XDIGT
#define _CONTROL _CNTRL
#define _BLANK _SPACE
#endif
#define _ALPHA (_UPPER|_LOWER)
#define _ALNUM (_UPPER|_LOWER|_DIGIT)
#define _TEXT (_ALNUM|_PUNCT|_BLANK)
/* number output */
extern unsigned char hexbyte(int a,int b);
extern int pn(unsigned int n,int base);
extern int pln(unsigned long n, int base);
extern void pnls(unsigned int n,unsigned int length,int base);
extern void pnlz(unsigned int n,unsigned int length,int base);
extern void plnls(unsigned long n,unsigned int length,int base);
extern void plnlz(unsigned long n,unsigned int length,int base);
extern int getlen(unsigned int n,int base);
extern int getlength(unsigned long i,int base);
extern int getnum(unsigned int max,unsigned int *num,int base);
extern int getnumber(unsigned long max,void *num,int base);
/* string input */
extern int getstr(char *s,unsigned int len,int mask);
extern int getver(char *s,int mode);
enum GETVER_MODE { NONE, MOV_YN, MOV_ARG, CLR_ARG=5, CLR_YN };
extern int convert(char *a);
/* misc. */
extern void directory(void );
extern void pname(char *s);
extern int search(unsigned char *s,unsigned char *t,unsigned int size,unsigned int len);
extern int isearch(unsigned char *s,unsigned char *t,unsigned int size,unsigned int len);
extern int change(unsigned char *buffer,unsigned int bufend,int base);
extern void dispval(int x,int len,int base,int c);
extern int dump(unsigned char *buffer,unsigned int bfptr,unsigned int bufend,unsigned int len,int base);
extern void dumpf(register unsigned char *buffer,int size, int base);
extern void pause(void);
extern void viewfile(char *filename, int display);
/* macros to make displaying of numbers easier to implement */
#ifndef DISKED /* Radix is a global variable */
#define Radix 10 /* DISKED uses a structure entry */
#endif /* This is here for non-DISKED usage */
/* define Radix for you own use */
#define getbyte(n) getnum(255,n,Radix)
#define getint(n) getnum(32767,n,Radix)
#define getuint(n) getnum(65535,n,Radix)
#define getlong(n) getnumber(2147483647L,n,Radix)
#define getnumb(m,n) getnum(m,n,Radix)
#define getlnumb(m,n) getnumber((unsigned long)(m),n,Radix)
#define len(n) getlen(n,Radix)
#define length(n) getlength((unsigned long)(n),Radix)
#define putbyte(n) pn((int)(n),Radix)
#define puthex(n) pnlz(n,4,16)
#define putint(n) pn(n,Radix)
#define putuint(n) pln((unsigned long)(n),Radix)
#define putlong(n) pln((unsigned long)(n),Radix)
#define zputbyte(n) pnlz((unsigned int)(n),3,Radix)