/* $Id: dcalc.h,v 1.13 2006/12/30 22:46:07 bhepple Exp $ */ /* These flags control compilation. Define either PC, OPENVIEW or UNIX. * For PCs define either CURSES or PCSPECIFIC. * For the PC, the best combination is PC and PCSPECIFIC although PC * and CURSES allows the curses version to be tested. * * For non-OPENVIEW UNIX, you must have CURSES set. * * 1999.2.3 - the PC version needs 'Turbo C Tools version 5.00' by Blaise * Computing, which is unlikely to still be available. IT also needs the * PC-dependent source 'ibm.c'. This was last compiled by me in 1994 (???) * with Borland's Turbo-C 1.5. As this is just too hard and unlikely to * be of further interest, I will no longer support the DOS version. * If this is a problem, please contact me: Contact info: bhepple@freeshell.org http://bhepple.freeshell.org/dcalc/unix Copyright (C) 1999-2006 Bob Hepple This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef PC #undef CURSES #undef EBOOKMAN #undef UNIX #define PCSPECIFIC 1 /* Set this if you want a TSR function with mouse capture */ #undef TSR #endif #ifdef EBOOKMAN #undef UNIX #undef CURSES #undef PC #define HAVE_CONFIG_H 1 #endif #ifndef HAVE_CONFIG_H # define VERSION "2.12" #endif /* If you set PCSPECIFIC then you need to compile and link dcalc.c with * ibm.c as well as the special version of ivctrl.obj * (munged to support the 101-key keyboard) as well as Blaise's tct_t1s.lib. * Compile everything with TurboC 1.5 in the small model. * * For CURSES, you need to compile and link curse.c and dcalc.c with the curses * library. * * For OPENVIEW, you need to compile and link openview.c, ov_ui.c, ov_stubs.c * and dcalc.c with the appropriate libraries. */ /* End of flags. The previous flags are all you should have to touch. */ /**********************************************************************/ #ifdef UNIX #define CURSES 1 #undef PC #undef EBOOKMAN #undef PCSPECIFIC #undef OPENVIEW #endif #ifdef __TURBOC__ #define REVERSE_BYTES 1 #else #define REVERSE_BYTES 0 #endif #undef REVERSE_BYTES #define REVERSE_BYTES 1 #define ASCIIZ '\0' #define SPECIAL ASCIIZ #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif /* Keys we are interested in ... */ #define BELL 7 #define SPACE ' ' #define COMMA ',' #define BACKSPACE 8 #define ESCAPE 27 #define COMMAND int /* COMMANDS (in addition to 'normal' keys ... */ #define MIN_COMMAND 0x200 #define ASCIIM 0x200 #define DEGREE 0x201 #define RADIAN 0x202 #define MODE 0x203 #define PROG 0x204 #define SCI 0x205 #define FIN 0x206 #define STAT 0x207 #define PLACES 0x208 #define FIX 0x209 #define ENG 0x20a #define SCIFORMAT 0x20b #define BIN 0x20c #define OCT 0x20d #define DEC 0x210 #define HEX 0x211 #define IP 0x212 #define INV 0x213 #define SIN 0x214 #define COS 0x215 #define TAN 0x216 #define SINH 0x217 #define COSH 0x218 #define TANH 0x219 #define LOGE 0x220 #define LOG10 0x221 #define SQR 0x222 #define ROOT 0x223 #define CUBE 0x224 #define CROOT 0x225 #define FRC 0x226 #define INT 0x227 #define ETOX 0x228 #define RECI 0x229 #define PI 0x22a #define E 0x22b #define HMS 0x22c #define RTOP 0x230 #define DTOR 0x231 #define SUM 0x232 #define SUM0 0x233 #define SUMR 0x234 #define MEAN 0x235 #define MEANY 0x236 #define MEANS 0x237 #define S_DEV 0x238 #define NSTAT 0x239 #define FACT 0x23a #define PERM 0x23b #define COMB 0x240 #define LR 0x241 #define CALCY 0x242 #define NFIN 0x243 #define INTST 0x244 #define PMT 0x245 #define PVAL 0x246 #define FVAL 0x247 #define FCLR 0x248 #define BEGIN 0x249 #define DYS 0x24a #define TDY 0x250 #define TIMES12 0x251 #define DIVIDE12 0x252 #define LENGTH 0x253 #define AREA 0x254 #define VOLUME 0x255 #define MASS 0x256 #define SPEED 0x257 #define FUEL 0x260 #define PRES 0x261 #define TEMP 0x262 #define dAND 0x263 #define dOR 0x264 #define dNOT 0x265 #define dXOR 0x266 #define SHIFTYL 0x267 #define SHIFTYR 0x268 #define SHIFTL 0x280 #define SHIFTR 0x281 #define PRIMEF 0x282 #define PLUS 0x283 #define MINUS 0x284 #define MULT 0x285 #define DIVIDE 0x286 #define PERCENT 0x287 #define PERCENTCH 0x288 #define MODULUS 0x290 #define CHS 0x291 #define YTOX 0x292 #define ROLLDOWN 0x293 #define CLX 0x294 #define QUIT 0x295 #define NEXTKEYS 0x296 #define PREVKEYS 0x297 #define ENTER 0x298 #define XNL 0x299 #define XNT 0x29a #define XNZ 0x29b #define XNY 0x29c #define LASTX 0x29d #define STORE 0x29e #define STOPLUS 0x29f #define STOMINUS 0x2a0 #define STOMULTIPLY 0x2a1 #define STODIVIDE 0x2a2 #define RECALL 0x2b0 #define COPY 0x2b1 #define PASTE 0x2b2 #define CLU 0x2b3 #define CLR 0x2b4 #define HELP 0x2b5 #define REGISTER 0x2b6 #define EXPLAIN 0x2b7 #define CVT 0x2b8 #define RPN 0x2ba #define ALGEBRAIC 0x2bb #define POPUP_REG 0x2bc #define EVAL 0x2bd #define EQUALS 0x2be #define LEFTBRACE 0x2bf #define RIGHTBRACE 0x2c0 #define NOP 0x2d0 /* must be the last in the list */ /* ... END OF COMMANDS */ #define BOOLEAN int #define NUMREGS 10 #define STAT_R2 1 #define STAT_Y_INT 2 #define STAT_SLOPE 3 #define STAT_NUM_REG 4 #define STAT_SUMX_REG 5 #define STAT_SUMY_REG 6 #define STAT_SUMX2_REG 7 #define STAT_SUMY2_REG 8 #define STAT_SUMXY_REG 9 #define FIN_NUM_REG 5 #define FIN_INT_REG 6 #define FIN_PVAL_REG 7 #define FIN_PMT_REG 8 #define FIN_FVAL_REG 9 #define MSG_SIZE 42 #define KMaxPrimes 9 #define DEF_SIG(x) "DCALC Version " x " - by Bob Hepple" /* Function prototypes: */ /* imported by dcalc - supplied by curses, hpcalc, ibm etc */ #ifdef __cplusplus extern "C" { #endif extern void print_string(char *buf); extern void prinbase(void); extern void print_inv(void); extern void print_deg(void); extern void print_x(char *buf); #if HAS_ALGEBRAIC_MODE extern void add_x(char *buf); #endif extern void dispnums(void); extern void dispreg(int); extern void dispregs(void); extern void put_a_char(int i); extern int get_a_char(int *); extern void msg(char *buf); extern void clear_msg(void); extern void pop_up_reg(void); extern void pop_up_help(void); extern void os_raw_mode(int); extern void os_init(void); extern void os_term(void); extern int dialog(char *buf); extern int places(char *buf); extern int eval(char *, char *); extern int store(char *buf); extern int recall(char *buf); extern void saveGuiSettings(FILE *f); extern void readGuiSettings(char *b); #ifdef __cplusplus } #endif /* exported by dcalc.c: */ #ifdef __cplusplus extern "C" { #endif extern void fmt_bin(char *str, long x); extern void fmt_base(char *s, long x, double xf); extern void prep_for_output(char *string); extern void parseBuffer(char *buf, long *longResult, double *doubleResult); extern void initialise(void); extern int process(COMMAND c); extern void terminate_dcalc(void); extern void display(void); extern int base, decplaces, entering, lift_needed, invert, degree, mode, intmode, floatmode, finPayAt0, algebraic_mode, last_was_fin_key; extern long xiReg, yiReg, ziReg, tiReg, liReg, reg[NUMREGS]; extern double xfReg, yfReg, zfReg, tfReg, lfReg, regf[NUMREGS]; extern char inbuf[45]; extern void convertX(char *from, char *to); extern void trim(char *s); extern long asc2int(char *s); extern long bin2int(char *s); extern long ip2int(char *s); extern void push(long inx); extern void pushf(double inx); extern void saveSettings(void); extern void stop_entering(void); extern long pop(void); extern double popf(void); extern int isInverted(void); extern int liftStack(void); #ifdef HAS_ALGEBRAIC_MODE /* for the algebraic parser: */ extern double xfSave,yfSave,zfSave,tfSave,ufSave,lfSave; extern long xSave, ySave, zSave, tSave, uSave, lSave; extern char last_eval[200]; #endif extern int exec_chs(void); extern int exec_plus(void); extern int exec_minus(void); extern int exec_divide(void); extern int exec_mult(void); extern int exec_and(void); extern int exec_or(void); extern int exec_xor(void); extern int exec_not(void); extern int exec_modulus(void); extern int exec_percent(void); extern int exec_percentch(void); extern int exec_ytox(void); extern int exec_shiftl(void); extern int exec_shiftr(void); extern int exec_shiftyl(void); extern int exec_shiftyr(void); extern int exec_primef(void); extern int exec_reci(void); extern int exec_sqr(void); extern int exec_root(void); extern int exec_cube(void); extern int exec_croot(void); extern int exec_pval(void); extern int exec_fval(void); extern int exec_pmt(void); extern int exec_intst(void); extern int exec_fclr(void); extern int exec_nfin(void); extern int exec_times12(void); extern int exec_divide12(void); extern int exec_begin(void); extern int exec_dys(void); extern int exec_tdy(void); extern int exec_asciim(void); extern int exec_bin(void); extern int exec_ip(void); extern int exec_oct(void); extern int exec_dec(void); extern int exec_hex(void); extern int exec_fix(void); extern int exec_eng(void); extern int exec_sciformat(void); extern int exec_places(void); extern int exec_fin(void); extern int exec_stat(void); extern int exec_sci(void); extern int exec_prog(void); extern int exec_rolldown(void); extern int exec_clx(void); extern int exec_clr(void); extern int exec_degree(void); extern int exec_radian(void); extern int exec_e(void); extern int exec_pi(void); extern int exec_sin(void); extern int exec_asin(void); extern int exec_cos(void); extern int exec_acos(void); extern int exec_tan(void); extern int exec_atan(void); extern int exec_sinh(void); extern int exec_asinh(void); extern int exec_cosh(void); extern int exec_acosh(void); extern int exec_tanh(void); extern int exec_atanh(void); extern int exec_loge(void); extern int exec_log10(void); extern int exec_frc(void); extern int exec_int(void); extern int exec_etox(void); extern int exec_10tox(void); extern int exec_hms(void); extern int exec_rtop(void); extern int exec_ptor(void); extern int exec_rtod(void); extern int exec_dtor(void); extern int exec_sumr(void); extern int exec_sum0(void); extern int exec_nstat(void); extern int exec_mean(void); extern int exec_means(void); extern int exec_meany(void); extern int exec_s_dev(void); extern int exec_sum(void); extern int exec_fact(void); extern int exec_comb(void); extern int exec_perm(void); extern int exec_lr(void); extern int exec_calcy(void); extern int exec_enter(void); extern int exec_lastx(void); extern int exec_quit(void); extern int exec_recall(void); extern int exec_rcl(void); extern int early_exec_recall(void); extern int exec_store(void); extern int exec_stoplus(void); extern int exec_stominus(void); extern int exec_stomultiply(void); extern int exec_stodivide(void); extern int exec_xny(void); extern int exec_xnl(void); extern int exec_xnt(void); extern int exec_xnz(void); extern int exec_help(void); extern int exec_reg(void); extern int exec_equals(void); extern int exec_leftbrace(void); extern int exec_rightbrace(void); extern int exec_toggle_deg(void); extern int exec_inv(void); #ifdef HAS_ALGEBRAIC_MODE extern int exec_rpn(void); extern int exec_algebraic(void); extern int exec_eval(void); #endif #ifdef __cplusplus } #endif /* For emacs: */ /* Local Variables: */ /* eval:(setq tab-width 8) */ /* End: */