home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / calculat / rpn30src.zip / RPN.H < prev    next >
C/C++ Source or Header  |  1990-05-30  |  4KB  |  119 lines

  1. /**
  2.  ** RPN.H
  3.  **
  4.  ** The usual good h-file stuff for the rpn program.
  5.  ** Global function prototypes, global variables, global defines.
  6.  ** You know.
  7.  **
  8.  ** v3.0  90.05.08
  9.  **    More stuff...
  10.  ** v2.3  90.05.04
  11.  **    fixed register-0 bug, ctrl-C hex-digit bug,
  12.  **    added config. file for hex digits & display colors
  13.  ** v2.2  90.01.23
  14.  **    simplified stack display; Xreg in f format, others in e-format.
  15.  ** v2.1  90.01.04  hrs() patch, screen positioning with SCROLL_LOCK
  16.  ** v2.0  90.01.01
  17.  **    hr.minsec <-> decimal hours, percent, precomputed screens,
  18.  **    exponent input, degrees mode, "doco" updates, TC v2.0
  19.  **/
  20. #ifndef RPN_H
  21. #define RPN_H
  22.  
  23. #ifdef __TURBOC__
  24. #define C_DECL cdecl
  25. #else
  26. #define C_DECL
  27. #endif
  28.  
  29. #include <stdio.h>
  30. #include <values.h>     /**  Supplies MAXLONG, MAXDOUBLE ...  **/
  31.  
  32. int  process(int);
  33. void init_machine(void);
  34.  
  35. void toggle_help(void);
  36. void startup(void);
  37. void shutdown(void);
  38.  
  39. int  getkey(void);
  40. void open_savefile(const char *);
  41. void close_savefile(void);
  42.  
  43.  
  44. #define TRUE      1
  45. #define FALSE     0
  46. #define DEGREES  'D'
  47. #define RADIANS  'R'
  48.  
  49. #define OK_VAL    0    /* Possible return values of the process() ftn. */
  50. #define INIT_VAL  1
  51. #define QUIT_VAL  2
  52. #define ABORT_VAL 3
  53. #define NO_CHANGE 4
  54.  
  55. #define NAME_LEN  14    /** function-display fields are 13 chars wide **/
  56.  
  57. #define MAX_BASE  16    /** biggest possible displayed-number base **/
  58.  
  59. #ifdef MAIN
  60. const char version[] = "RPN 3.0 / " __DATE__  " ";
  61.  
  62. #include <dos.h>
  63. #include "digits.h"    /** define the array of acceptable digits.    **/
  64.  
  65. /*
  66. | Names and default values of display-window colors.
  67. */
  68. char    filename[13];        /** Keep savefile name for shell re-use **/
  69. char    default_save[] = "save-out.rpn";    /** save-file name    **/
  70. FILE    *savefile = NULL;
  71. int    write_save = FALSE;
  72.  
  73. int    TOP =   6;        /** default values for upper-left pos'n **/
  74. int    LEFT = 41;        /**   of the display window (v2.0)      **/
  75. unsigned D_BKGND, D_BORDER, D_NUM, D_FTN, D_OOPS;  /** display colors    **/
  76.  
  77. char   xbuf[40], *xbp = xbuf;        /** ASCII form of number inputs **/
  78. double lastx, xreg, yreg, zreg, treg;    /** RPN stack registers        **/
  79. char   thisfunct[NAME_LEN];        /** current-function display    **/
  80. char   lastfunct[NAME_LEN];        /** last-function display    **/
  81. int    notation, base, pre, negative;
  82. int    help_flag = 0;        /** Which Help screen?  0 => none    **/
  83. int    trig_mode = DEGREES;    /** Angle-mode flag; default to degrees **/
  84. int    newnum;            /** "Is this the first digit entered?"  **/
  85. int    num_ct;            /** number of fractional digits        **/
  86.  
  87. char orig_sl;            /** save orignal scrl status as "off"    **/
  88. char scrolllock;        /** flag for scroll-lock status **/
  89. volatile void far *ksp = MK_FP(0x0000, 0x0417);
  90.  
  91. #else    /* !MAIN */
  92.  
  93. extern const char  version[];
  94. extern char    default_save[];        /** save-file name    **/
  95. extern char    filename[13];
  96. extern FILE    *savefile;
  97. extern int    write_save;
  98.  
  99. extern int    TOP, LEFT;    /** display-window upper left corner **/
  100. extern unsigned D_BKGND, D_BORDER, D_NUM, D_FTN, D_OOPS;
  101.  
  102. extern char    xbuf[40], *xbp;    /** ASCII form of number inputs **/
  103. extern double    lastx, xreg, yreg, zreg, treg;
  104. extern char    thisfunct[NAME_LEN];
  105. extern char    lastfunct[NAME_LEN];
  106. extern int    notation, base, pre, negative;
  107. extern unsigned digits[MAX_BASE];
  108. extern int    help_flag;
  109. extern int    trig_mode;
  110. extern int    newnum;        /** "Is this the first digit entered?" **/
  111. extern int    num_ct;        /** number of fractional digits **/
  112. extern char    orig_sl;    /** save orignal scrl status as "off"    **/
  113. extern char    scrolllock;
  114. volatile extern void far *ksp;
  115.  
  116. #endif    /* MAIN */
  117.  
  118. #endif    /* RPN_H */
  119.