Minix1.5/commands/ic/ic.h

Compare this file to the similar file:
Show the results in this format:

/****************************************************************/
/*								*/
/*	ic.h							*/
/*								*/
/*		Definitions for the "Integer Calculator".	*/
/*								*/
/****************************************************************/
/*  origination         1988-Apr-6         Terrence W. Holm	*/
/****************************************************************/




/****************************************************************/
/*								*/
/*	ic(1)							*/
/*								*/
/* This is a simple RPN calculator, used for small calculations */
/* and base conversions. All calculations are done using 32 bit */
/* integers.							*/
/*								*/
/* Commands are available for stack operations, saving results, */
/* arithmetic and logical operations, and escaping to the Minix */
/* shell.							*/
/*								*/
/* The program requires termcap(3), but otherwise should run	*/
/* under all Unix (tm) variants.				*/
/*								*/
/* See the ic(1) man page.					*/
/*								*/
/****************************************************************/




/****************************************************************/
/*								*/
/*	ic 		   Copyright  Terrence W. Holm  1988	*/
/*								*/
/* This program was written for users of the Minix operating	*/
/* system, and in the spirit of other public domain software	*/
/* written for said system, this source code is made available	*/
/* at no cost to everyone.					*/
/*								*/
/* This program (one .h, three .c and a "man" page) may be	*/
/* copied and/or modified subject to (1) no charge must be	*/
/* made for distribution, other than for the medium, (2) all	*/
/* modified sources must be clearly marked as such, (3) all	*/
/* sources must carry this copyright.				*/
/*								*/
/****************************************************************/




/****************************************************************/
/*								*/
/*	files							*/
/*								*/
/*	    ic.h		Definitions			*/
/*	    ic.c		The main loop			*/
/*	    ic_input.c		Character input routines	*/
/*	    ic_output.c		Output routines			*/
/*								*/
/*	    ic.1		"Man" page			*/
/*	    Makefile		For "make"			*/
/*								*/
/****************************************************************/





#define   UNS(x)	((unsigned long)(x))

#define   STACK_SIZE 	6		/*  Max # of levels	*/
#define   REGISTERS	10		/*  Registers 0 to 9	*/


#define	  LAST_WAS_ENTER    1		/*  Numeric input modes	*/
#define	  LAST_WAS_NUMERIC  2
#define	  LAST_WAS_FUNCTION 3


#define   ASCII		-1		/*  Input and output	*/
#define   BINARY  	2		/*  modes		*/
#define   OCTAL		8
#define	  DECIMAL	10
#define   HEXADECIMAL	16


#define   OK		0		/*  Return codes	*/
#define   ERROR		1






#define   CTRL_D	'\004'		/*  ASCII ^D		*/
#define   BELL		'\007'		/*  ASCII bell code     */
#define   BS		'\010'		/*  ASCII back space	*/
#define	  ESCAPE  	'\033'		/*  ASCII escape code	*/
#define   DEL           '\177'		/*  ASCII delete code   */




	/*  Input escape codes generated by the	Minix console.	*/
	/*  Format: ESC [ X. Shows character equivalent for ic.	*/

#define   ESC_HOME	'H' + 0x80  	/*   z			*/
#define   ESC_UP	'A' + 0x80  	/*   x			*/
#define   ESC_PGUP	'V' + 0x80	/*   w			*/
#define   ESC_LEFT	'D' + 0x80	/*   r			*/
#define   ESC_5		'G' + 0x80	/*   %                  */
#define   ESC_RIGHT	'C' + 0x80	/*   s			*/
#define   ESC_END	'Y' + 0x80	/*   q			*/
#define   ESC_DOWN	'B' + 0x80	/*   p			*/
#define   ESC_PGDN	'U' + 0x80	/*   l			*/
#define   ESC_PLUS	'T' + 0x80	/*   +			*/
#define   ESC_MINUS	'S' + 0x80	/*   -			*/




	/*  Move positions for the output display.		*/

#define   STACK_COLUMN	4
#define   STACK_LINE	7
#define   REG_COLUMN	STACK_COLUMN+36
#define   REG_LINE	3
#define   STATUS_COLUMN	6
#define   STATUS_LINE   0
#define   WAIT_COLUMN   0
#define   WAIT_LINE     14






typedef  struct  ic_state		/*  State of int. calc.	*/
  {
  long int stack[ STACK_SIZE ];		/*  The stack		*/
  long int registers[ REGISTERS ];	/*  The registers	*/

  int  stack_size;			/*  Current size (>= 1)	*/
  int  register_mask;			/*  In use bit mask	*/

  long int last_tos;			/*  For 'L' command	*/

  int  mode;				/*  Last key type. See	*/
					/*  LAST_WAS_ENTER, etc	*/

  int  input_base;			/*  Current i/o base,	*/
  int  output_base;			/*  ASCII, BINARY, etc	*/
  
  FILE *scratch_pad;			/*  For 'w' command	*/
  char  file_name[20];			/*  "pad" or "/tmp/pad"	*/
  }  ic_state;






void  Sigint();
int   Process();
int   Enter_Numeric();
int   Get_Char();
int   Get_Base();
char *getenv();
char *tgetstr();
char *tgoto();
char *cuserid();
FILE *fopen();