home *** CD-ROM | disk | FTP | other *** search
/ PDA Software Library / pdasoftwarelib.iso / HP95_100 / CALC / CMCALC18 / CMCALC.DOC < prev    next >
Encoding:
Text File  |  1995-03-21  |  30.9 KB  |  796 lines

  1. ---------------------------------------------------------------
  2. -----              COMPUTER MATH CALCULATOR               -----
  3. -----                FOR THE HP-100/200LX                 -----
  4. -----                                                     -----
  5. -----                     Version 18                      -----
  6. ---------------------------------------------------------------
  7. -----                   18 March 1995                     -----
  8. ---------------------------------------------------------------
  9.  
  10.       Copyright (c) 1991, 1992, 1994, 1995 by Eugene Dorr
  11.                       All rights reserved.
  12.  
  13.  
  14. ---               ---
  15. ---  Introduction ---
  16. ---               ---
  17.  
  18. CMCalc for the HP-100/200LX is a system-manager compliant
  19. application which provides a rich set of computer-science-
  20. oriented integer manipulations. It features variable word size
  21. (from 1 to 32 bits), selectable complement modes (unsigned, 1's
  22. complement, and 2's complement), four number bases (binary,
  23. octal, decimal and hexadecimal), and visible carry and overflow
  24. indicators.  Only RPN entry is supported.
  25.  
  26. Because CMCalc is "system-manager compliant" it can be started
  27. and used along with all other system-manager compliant applica-
  28. tions, including the built-in applications.  You can switch
  29. between these applications without quitting any of them, and
  30. when you return to an application, you are returned right where
  31. you were when you left.  Of course, this also means that CMCalc
  32. will operate ONLY on HP 100LX computers.
  33.  
  34. (Note: Previous versions of CMCalc were written for the HP-95LX
  35. palmtop computer -- the predecessor to the HP-100LX. However,
  36. all references in this document to "CMCalc" are to the version
  37. of CMCalc written for the HP-100LX.)
  38.  
  39.  
  40. ---            ---
  41. ---  Manifest  ---
  42. ---            ---
  43.  
  44. CMCalc is distributed in an archive called CMCALC18.ZIP.  When
  45. "unzipped" you should have three files:
  46.  
  47.            CMCALC.DOC -- this documentation file
  48.            CMC100.EXM -- the executable file
  49.            CMC100.ICN -- an icon file for CMCalc
  50.  
  51.  
  52. ---                     ---
  53. ---  Installing CMCalc  ---
  54. ---                     ---
  55.  
  56. Copy the following files to to your HP-100 (They must both be
  57. copied to the same subdirectory):
  58.  
  59.       CMC100.EXM
  60.       CMC100.ICN
  61.  
  62. Start the 'MORE' application (also known as 'Application
  63. Manager') by pressing the [&...] key. Press [F2] (Add), and
  64. enter the following values:
  65.  
  66.       Name:    CMCalc
  67.       Path:    (drive):\(subdirectory)\CMC100.EXM
  68.       Comment:
  69.  
  70. In the Path field, (drive) and (subdirectory) should be replaced
  71. with the drive letter (a or c) and the subdirectory to which you
  72. copied the CMCalc files.
  73.  
  74. Now tab to the Icon field, and the CMCalc icon should appear.
  75. If it does not, press the down-arrow key until you see the
  76. CMCalc icon.
  77.  
  78. Press F10 (OK).
  79.  
  80. Now press the key-combination you want to use as the hot-key for
  81. CMCalc (I use Alt+Calc; if you want to use something else, the
  82. dialog which is displayed at this point describes what your
  83. options are).
  84.  
  85. Now you can start CMCalc by pressing the key combination you
  86. selected.
  87.  
  88.  
  89. ---                ---
  90. ---  Using CMCalc  ---
  91. ---                ---
  92.  
  93. To start CMCalc once it has been installed, hold down the ALT
  94. key and press the blue HP CALC key (or whatever key you made the
  95. hot-key during the installation process).  To quit CMCalc, press
  96. MENU, Q(uit).  CMCalc uses the HP 100 calculator paradigm, so if
  97. you are familiar with using the built-in HP 100 calculator,
  98. operation of CMCalc should be straight-forward.
  99.  
  100. CMCalc uses the RPN mode of data entry.  This documentation
  101. assumes that you are familiar with RPN.
  102.  
  103. The CMCalc calculator operates on integers only.  If you need to
  104. operate on floating-point numbers, you can use the HP 100
  105. built-in calculator and use CUT and PASTE to transfer numbers
  106. between CMCalc and the built-in calculator application.
  107.  
  108.  
  109. ---                                ---
  110. ---  Controlling How CMCalc Works  ---
  111. ---                                ---
  112.  
  113. You can control how CMCalc operates in several ways. The
  114. following options are controlled in the Options/Number Format
  115. dialog:
  116.  
  117.   * you can specify how many bits will be used to store numbers
  118.     (the word size -- from 1 to 32 bits);
  119.  
  120.   * you can specify what complement mode is to be used (the
  121.     complement mode affects the results of arithmetic functions,
  122.     and the display of numbers in decimal mode);
  123.  
  124.   * you can specify the number base you wish numbers to be
  125.     displayed in (base 2 -- binary, base 8 -- octal, base 10 --
  126.     decimal, or base 16 -- hexadecimal);
  127.  
  128. The following options are controlled using the Options/
  129. Calculator Mode dialog:
  130.  
  131.   * you can specify what character set standard (i.e ASCII/ISO
  132.     or EBCDIC) when using character entry mode;
  133.  
  134. The following options are controlled from the Options/Display
  135. Options dialog:
  136.  
  137.   * you can specify which of the following windows will be
  138.     displayed:
  139.                  - the RPN stack window
  140.                  - the flags window
  141.                  - the "views" window
  142.  
  143.   * within the "views" windows you can select which of the
  144.     following views of the X register are displayed:
  145.  
  146.                  - hexadecimal
  147.                  - decimal
  148.                  - octal
  149.                  - binary
  150.                  - ASCII/ISO
  151.                  - EBCDIC
  152.  
  153.     (The term "ASCII/ISO" as used in this document means ISO
  154.     646, or ANSI X3.4, which is a seven-bit character set.
  155.     "EBCDIC" means IBM EBCDIC code page 37.)
  156.  
  157.   * you can specify whether you want leading zeros to be
  158.     displayed;
  159.  
  160.   * you can specify whether to use "dotted decimal" notation.
  161.     (Dotted decimal notation is the method used to represent IP
  162.     addresses. Each byte is represented by a decimal number from
  163.     0 to 255, and separated from adjacent bytes by a period.)
  164.  
  165. Note that there is not enough room on the display for all
  166. windows and all views at the same time. However, the Overflow
  167. and Carry flags will be shown on the status line if the flags
  168. window is not displayed.
  169.  
  170. The settings you select are recorded in the file CMC100.ENV,
  171. which is stored in the _DAT subdirectory on the C: drive.  Each
  172. time you start CMCalc, the settings which were in effect the
  173. last time CMCalc was used are restored from this file.  (The
  174. contents of the stack, the storage registers, the overflow and
  175. carry flags, and the current F-key set are also restored.)
  176.  
  177.  
  178. The menu functions are summarized below.
  179.  
  180.  
  181. MENU/File
  182.   /New       --  not used
  183.   /Open      --  not used
  184.   /Save      --  not used
  185.   /Exit      --  exits CMCalc
  186.  
  187. MENU/Edit
  188.   /Insert    --  not used
  189.   /Delete    --  not used
  190.   /Cut       --  not used
  191.   /Copy      --  copies the number in the X register, formatted
  192.                  in the prevailing base and display options, to
  193.                  the clipboard
  194.   /Paste     --  pastes a character-formatted number from the
  195.                   clipboard into the X register
  196.  
  197. MENU/Clear
  198.   /Flags     --  zeros the Carry and Overflow flags
  199.   /Stack     --  zeros all registers in the RPN stack
  200.   /Registers --  zeros all storage registers 0-9 and A-F
  201.   /Calc Line --  zeros the X register
  202.  
  203. MENU/Options
  204.   /Number format...       --  controls the prevailing base, the
  205.                               complement mode and the wordsize
  206.   /Calulator Modes...     --  controls the character code used
  207.                               in character entry mode
  208.   /Display Options...     --  controls what information is
  209.                               displayed, and in what format
  210.  
  211. MENU/Quit                 --  ends CMCalc
  212.  
  213. MENU/Help
  214.   /Using CMCalc...        --  provides reference information
  215.   /Controlling CMCalc...  --  provides reference information
  216.   /About CMCalc...        --  provides version and contact info
  217.   /Registering CMCalc...  --  provide registration info
  218.  
  219.  
  220. ---             ---
  221. ---  Functions  ---
  222. ---             ---
  223.  
  224. In the following descriptions, upper case X, Y, Z and T refer
  225. to the stack registers, lower case x, y, z and t refer to the
  226. values contained in the corresponding stack registers.  No stack
  227. movement occurs unless explicitly stated.  The Carry and
  228. Overflow flags are unaffected unless stated otherwise.
  229.  
  230. The Carry flag is usually used to indicate the value of a bit in
  231. the result which could not be accomodated in the current size of
  232. the register, for example, a carry during addition, a borrow
  233. during subtraction, or a bit shifted out of a register during a
  234. shift function.  The Overflow flag is used to indicate that the
  235. result could not be expressed within the current register size
  236. and complement mode.  For example, if the wordsize is 8 and the
  237. complement mode is 2's complement, then the largest positive
  238. number which can be expressed is 127, and the largest negative
  239. number which can be expressed is -128.  If the CHS (change sign)
  240. function is applied to -128, then the Overflow flag will be set,
  241. since +128 cannot be expressed in 8 bits.
  242.  
  243. Some functions (the ones which refer to bit positions) use the
  244. absolute (positive) value of x.  This is indicated by the
  245. notation |x|.
  246.  
  247. As with the HP 100 built-in calculator, many functions are
  248. assigned to F-keys, which are labelled on the bottom of the
  249. display.  Four groups of functions are available, and the
  250. different groups are accessed by pressing F10 (labelled 'More').
  251. In the following descriptions, functions which are assigned to
  252. F-keys carry the notation '(Fkey)'.
  253.  
  254. --------------------
  255. ARITHMETIC FUNCTIONS
  256. --------------------
  257.  
  258. +        Add -- (+)
  259.          x is added to y, result returned in X.  The stack
  260.          drops.  Carry and Overflow are set as appropriate for
  261.          the complement mode.
  262.  
  263. -        Subtract -- (-)
  264.          x is subtracted from y, result returned in X.  The
  265.          stack drops. Carry and Overflow are set as appropriate
  266.          for the complement mode.
  267.  
  268. *        Multiply -- (*)
  269.          x is multiplied by y, result returned to X, the stack
  270.          drops. Overflow is set if the result cannot be
  271.          represented in the current word size and complement
  272.          mode.
  273.  
  274. /        Divide -- (/)
  275.          The quotient of y divided by x, result returned in X.
  276.          The stack drops.  The Carry flag is set if there is a
  277.          remainder, otherwise it is cleared.  Overflow is set
  278.          only in 2's complement mode when the largest possible
  279.          negative number is divided by -1.  In all other cases
  280.          it is cleared.  The function is inhibited and an error
  281.          message is displayed if x is 0 or -0.
  282.  
  283. ABS      Absolute value -- (Fkey)
  284.          If x is negative (this can only be true if the
  285.          complement mode is not unsigned) then it is made
  286.          positive, if possible, the result is returned to X, and
  287.          Overflow is reset.  If it is not possible to make x
  288.          positive (i.e. the complement mode is 2's complement,
  289.          and x is the largest possible negative number), then X
  290.          remains unchanged and the Overflow flag is set.
  291.  
  292. RMD      Remainder -- (Fkey)
  293.          y is divided by x, the quotient is discarded, and the
  294.          remainder is returned in X.  The stack drops.  The
  295.          function is inhibited and an error message is displayed
  296.          if x is 0 or -0.
  297.  
  298. CHS      Change Sign -- (assigned to the 'L' key)
  299.          Complements x, result returned in X.  Carry and
  300.          Overflow are set as appropriate for the complement
  301.          mode.  The function is inhibited and an error message
  302.          is displayed in unsigned mode.
  303.          
  304. -----------------------
  305. BOOLEAN LOGIC FUNCTIONS
  306. -----------------------
  307.  
  308. AND      Bitwise AND -- (Fkey)
  309.          Bitwise logical AND of x and y, result returned in X.
  310.          The stack drops.
  311.  
  312. OR       Bitwise OR -- (Fkey)
  313.          Bitwise logical OR of x and y, result returned in X.
  314.          The stack drops.
  315.  
  316. XOR      Bitwise Exclusive OR -- (Fkey)
  317.          Bitwise logical exclusive OR of x and y, result
  318.          returned in X.  The stack drops.
  319.  
  320. NOT      Bitwise NOT -- (Fkey)
  321.          Bitwise logical NOT of x, result returned in X.
  322.  
  323. --------------------------
  324. BIT-MANIPULATION FUNCTIONS
  325. --------------------------
  326.  
  327. MASKL    Mask left -- (Fkey)
  328.          A bit mask of the size specified by |x| is created and
  329.          placed in the leftmost positions of X, replacing x.
  330.  
  331. MASKR    Mask right -- (Fkey)
  332.          A bit mask of the size specified by |x| is created and
  333.          placed in the rightmost positions of X, replacing x.
  334.  
  335. SB       Set bit -- (Fkey)
  336.          The bit specified by |x| (x=0 specifies the rightmost
  337.          bit) is set in y, the result is returned in X.  The
  338.          stack drops.
  339.  
  340. CB       Clear bit -- (Fkey)
  341.          The bit specified by |x| (x=0 specifies the rightmost
  342.          bit) is cleared in y, the result is returned in X.  The
  343.          stack drops.
  344.  
  345. REV      Reverse bit order -- (Fkey)
  346.          The order of the bits in x is reversed, the result is
  347.          returned in X.
  348.  
  349. REVBYTE  Reverse byte order -- (Fkey)
  350.          The order of the bytes in x is reversed, the result is
  351.          returned in X.  REVB is only valid when the word size
  352.          is an integral number of bytes (in other words, a
  353.          multiple of 8).
  354.  
  355. BITS     Bit count -- (Fkey)
  356.          The number of 1-bits in x is returned in X.
  357.  
  358. --------------------------
  359. SHIFT AND ROTATE FUNCTIONS
  360. --------------------------
  361.  
  362. SL       Shift left -- (Fkey or Left-arrow key)
  363.          x is shifted to the left by one position, a zero bit is
  364.          introduced into the rightmost bit position, and the
  365.          result is returned in X. The Carry flag is set to the
  366.          value of the leftmost bit of x.
  367.  
  368.                   +---+     +----------------+
  369.                   |   | <-- |     <-----     | <-- 0
  370.                   +---+     +----------------+
  371.                   Carry
  372.  
  373. SR       Shift right -- (Fkey or Right-arrow key)
  374.          x is shifted to the right by one position, a zero bit
  375.          is introduced into the leftmost bit position, and the
  376.          result is returned in X. The Carry flag is set to the
  377.          value of the rightmost bit of x.
  378.  
  379.                         +----------------+     +---+
  380.                   0 --> |     ----->     | --> |   |
  381.                         +----------------+     +---+
  382.                                                Carry
  383.  
  384. SLn      Shift left multiple -- (Fkey)
  385.          y is shifted to the left by the number of positions
  386.          specified by |x|, zero bits are introduced into the
  387.          vacated rightmost bit positions, the result is
  388.          returned in X.  The stack drops.  The Carry flag is
  389.          set to the value of the last bit to be shifted from the
  390.          leftmost position of y.
  391.  
  392. SRn      Shift right multiple -- (Fkey)
  393.          y is shifted to the right by the number of positions
  394.          specified by |x|, zero bits are introduced into the
  395.          vacated leftmost bit positions, the result is returned
  396.          in X.  The stack drops.  The Carry flag is set to the
  397.          value of the last bit to be shifted from the rightmost
  398.          position of y.
  399.  
  400. ASR      Arithmetic shift right -- (Fkey)
  401.          x is shifted to the right by one position, the leftmost
  402.          bit (which, in 1's complement and 2's complement mode,
  403.          represents the sign of the value of x) retains its
  404.          original value (and therefore the sign), the result is
  405.          returned in X.  The Carry flag is set to the value of
  406.          the leftmost bit of x.
  407.  
  408.                    +------+
  409.                    |      |
  410.                    |    +----------------+     +---+
  411.                    +--> |     ----->     | --> |   |
  412.                         +----------------+     +---+
  413.                                                Carry
  414.  
  415. LJ       Left justify -- (Fkey)
  416.          If x<0, then x is shifted left until the leftmost bit
  417.          contains a one bit.  The result is returned to Y.  The
  418.          number of shifts performed is returned in X.  The stack
  419.          is lifted.  If x=0, the stack is lifted and X and Y are
  420.          set to 0.
  421.  
  422. RL       Rotate left -- (Fkey)
  423.          x is shifted left by one position, the value of the
  424.          leftmost bit is returned in the rightmost bit position,
  425.          and also in the Carry flag. The result is returned in
  426.          X.
  427.  
  428.                          +--------------------------+
  429.                +---+     |    +----------------+    |
  430.                |   | <---+--- |     <-----     | <--+
  431.                +---+          +----------------+
  432.                Carry
  433.  
  434. RR       Rotate right -- (Fkey)
  435.          x is shifted right by one position, the value of the
  436.          rightmost bit is returned in the leftmost bit position,
  437.          and also in the Carry flag.  The result is returned in
  438.          X.
  439.  
  440.                     +--------------------------+
  441.                     |    +----------------+    |     +---+
  442.                     +--> |     ----->     | ---+---> |   |
  443.                          +----------------+          +---+
  444.                                                      Carry
  445.  
  446. RLn      Rotate left multiple -- (Fkey)
  447.          y is shifted left by |x| positions, and as each bit is
  448.          shifted out of the leftmost bit position, it is
  449.          introduced into the rightmost bit position, and into
  450.          the Carry flag.  The result is returned in X. The stack
  451.          drops.
  452.  
  453. RRn      Rotate right multiple -- (Fkey)
  454.          y is shifted right by |x| positions, and as each bit is
  455.          shifted out of the rightmost bit position, it is
  456.          introduced into the leftmost bit position, and into the
  457.          Carry flag.  The result is returned in X. The stack
  458.          drops.
  459.  
  460. RLC      Rotate left through carry -- (Fkey)
  461.          x is shifted left one position, the value of the Carry
  462.          flag is introduced into the vacated rightmost bit
  463.          position, and the Carry flag is set to the value of the
  464.          bit shifted out of the leftmost position.
  465.  
  466.                +------------------------------------+
  467.                |    +---+     +----------------+    |
  468.                +--- |   | <-- |     <-----     | <--+
  469.                     +---+     +----------------+
  470.                     Carry
  471.  
  472. RRC      Rotate right through carry -- (Fkey)
  473.          x is shifted right one position, the value of the Carry
  474.          flag is introduced into the vacated leftmost bit
  475.          position, and the Carry flag is set to the value of the
  476.          bit shifted out of the rightmost position.
  477.  
  478.                +------------------------------------+
  479.                |    +---+     +----------------+    |
  480.                +--> |   | --> |     ----->     | ---+
  481.                     +---+     +----------------+
  482.                     Carry
  483.  
  484. RLCn     Rotate Left through Carry multiple -- (Fkey)
  485.          y is shifted left by |x| positions, and at each shift,
  486.          the rightmost bit position receives the value of the
  487.          Carry bit, and the Carry bit receives the value of the
  488.          bit shifted out of the leftmost position. The result is
  489.          placed in X.  The stack drops.
  490.  
  491. RRCn     Rotate Right through Carry multiple -- (Fkey)
  492.          y is shifted right by |x| positions, and at each shift,
  493.          the leftmost bit position receives the value of the
  494.          Carry bit, and the Carry bit receives the value of the
  495.          bit shifted out of the rightmost position. The result
  496.          is placed in X.  The stack drops.
  497.  
  498. ------------------------
  499. STACK CONTROL OPERATIONS
  500. ------------------------
  501.  
  502. Rv       Roll Down -- (assigned to the 'v' key)
  503.          The contents of each stack register is shifted into the
  504.          next lower register, and x is shifted into T.
  505.  
  506. R^       Roll Up -- (assigned to the 'V' key)
  507.          The contents of each stack register is shifted into the
  508.          next higher register, and t is shifted into X.
  509.  
  510. x<>y     Exchange X and Y -- (assigned to the 'X' key)
  511.          The contents of the X and Y registers are exchanged.
  512.  
  513. ----------------------------
  514. NUMBER STORAGE AND RETRIEVAL
  515. ----------------------------
  516.  
  517. STO      Store -- (assigned to the 'N' key)
  518.          The calculator waits for a register specifier - a
  519.          digit key (0..9) or A..F; when a register has been
  520.          specified, x is stored into that register.  The value
  521.          may later be recalled to X by pressing RCL and the same
  522.          register specifier.  x remains in X.  The STO operation
  523.          may be cancelled before specifying a register, by
  524.          pressing ESC.
  525.  
  526. RCL      Recall -- (assigned to the 'M' key)
  527.          As with STO, RCL must be followed by a register
  528.          specifier.  The stack is lifted and the value last
  529.          stored into the specified register is placed into X.
  530.          The value remains in the specified register.  The RCL
  531.          operation may be cancelled before specifying a register
  532.          by pressing ESC.
  533.  
  534. RCL L    Last X -- (Press the 'M' (RCL) key, followed by 'L')
  535.          Returns to X the value which was in X prior to the last
  536.          function.
  537.  
  538. ------------
  539. NUMBER ENTRY
  540. ------------
  541.  
  542. 0..9     Digits -- Used to enter numbers.  The letters A through
  543. A..F     F are used for digit entry in hexadecimal mode.
  544.  
  545. .        When the prevailing base is decimal, and dotted decimal
  546.          mode is enabled, the period can be used in digit entry
  547.          to indicate byte boundaries.
  548.  
  549. " or ,   Activates character entry mode. In character entry
  550.          mode, the character value (interpreted as either
  551.          ASCII/ISO or EBCDIC, depending on the current character
  552.          code setting) of each keypress is appended to x. Note
  553.          that in character entry mode, bits are allowed to shift
  554.          out of the left side of X: in numeric entry mode, this
  555.          loss of bits is disallowed. To terminate character
  556.          entry mode, press ENTER or ESC. Functions which are
  557.          normally invoked with a character key (such as +, *,
  558.          STO, RCL, etc.) are not accessible until character
  559.          entry mode is terminated. Selection of ASCII/ISO or
  560.          EBCDIC character codes is done in the Options/
  561.          Calculator Mode dialog.
  562.  
  563. ENTER    Enter -- (ENTER)
  564.          Copies x into Y, and disables stack lift.  If numeric
  565.          or character entry mode is active, it is terminated.
  566.          The space bar and the equal key ('=') may also be used
  567.          for this function (except when in character entry
  568.          mode).
  569.  
  570. <--      Backspace -- (assigned to the backarrow key)
  571.          When numeric (or character) entry mode is active (the
  572.          cursor is displayed on the entry line) the last digit
  573.          (or character) entered is deleted.  If no digits
  574.          remain, entry mode is terminated.  When entry mode is
  575.          not active, the X register is set to zero, and stack
  576.          lift is disabled.
  577.  
  578. DEL      Clear X -- (DEL)
  579.          The value of X is set to zero. Stack lift is disabled.
  580.  
  581.  
  582. ---                  ---
  583. ---  Error Messages  ---
  584. ---                  ---
  585.  
  586. Can't divide by 0
  587.     A divide (/) or RMD function was attempted when the value in
  588.     X was 0 or (in 1's complement mode) -0.  Division by 0 is
  589.     undefined.
  590.  
  591. Can't divide 0 by 0
  592.     A divide (/) or RMD function was attempted when both X and Y
  593.     were 0 or (in 1's complement mode) -0.  Division by 0 is
  594.     undefined.
  595.  
  596. Exceeds current word size
  597.     A mask (MASKL or MASKR), bit-addressing (SB or CB), shift
  598.     multiple (SLn or SRn), or rotate multiple (RLn or RRn)
  599.     function was attempted and |x| was greater than the
  600.     currently selected word size; or a rotate through carry
  601.     multiple (RLCn or RRCn) function was attempted and |x| was
  602.     greater than the currently selected word size + 1.
  603.  
  604. Current mode is unsigned
  605.     You attempted to change the sign (using CHS) of a number,
  606.     but the currently selected complement mode is unsigned.  A
  607.     negative number cannot be expressed in unsigned mode.  You
  608.     can display the currently selected complement mode by
  609.     pressing MENU O, N.  You can change the complement mode by
  610.     pressing MENU O, N, and then pressing the first character of
  611.     the desired complement mode.
  612.  
  613. Word size not byte integral
  614.     REVB (reverse bytes) was attempted when the word size was
  615.     set to a size which is not a multiple of 8 (the size of a
  616.     byte).  REVB can only be performed when the word size is set
  617.     to 8 (in which case REVB has no effect), 16, 24 or 32. You
  618.     can display the currently selected word size by pressing
  619.     MENU O, N.  You can change the word size when the Number
  620.     Format dialog is active by pressing W, and then pressing the
  621.     up- or down-arrow keys until the desired wordsize is
  622.     displayed, and then pressing F10 (OK).
  623.  
  624.  
  625. ---                                  ---
  626. ---  The HP 100 Calculator Paradigm  ---
  627. ---                                  ---
  628.  
  629. I have tried to make CMCalc adhere to the HP 100 calculator
  630. paradigm, but there are some exceptions:
  631.  
  632.   * Algebraic entry mode is not supported
  633.   * CMCalc uses the "large" font instead of the "extra-large"
  634.     font on the calc line
  635.   * Help information is presented in dialog-style windows
  636.     instead of via the built-in help system
  637.   * STO @ and RCL @ are not supported
  638.   * STO arithmetic is not supported
  639.   * Shift-V performs roll-up
  640.   * Square root and inverse are omitted
  641.  
  642. Since the "B" and "C" keys are used for entering hexadecimal
  643. numbers, they are unavailable for the standard LASTx and x<>y
  644. functions.  Therefore...
  645.  
  646.   * LASTx is obtained by RCL L
  647.   * x<>y is assigned to the X key
  648.  
  649.  
  650. ---                                 ---
  651. ---  CMCalc Compared to the HP-16C  ---
  652. ---                                 ---
  653.  
  654. For those familiar with the HP-16C, CMCalc does not provide
  655. programmability, and omits functions directy related to
  656. programmability (there is no indirect register, no x?y or x?0
  657. comparisons, no flag manipulaton functions, and no bit test
  658. (B?) function).  CMCalc also omits floating-point mode, and the
  659. square root function, since these are available in the built-in
  660. HP 100 calculator.  The three DBL functions have been omitted.
  661. Word size is limited to a maximum of 32 bits (versus the 64 bit
  662. maximum on the HP-16C). Whereas the HP-16C had a variable number
  663. of storage registers, CMCalc has a fixed set of 16 registers:
  664. 0..9 and A..F.  The HP-16C allows you to perform CHS when the
  665. complement mode is set to unsigned: CMCalc does not.
  666.  
  667.  
  668. ---                   ---
  669. ---  Version History  ---
  670. ---                   ---
  671.  
  672. The first released version of CMCALC was version 16.
  673.  
  674. Version 17 introduced the following changes:
  675.   * The number base can be changed by pressing the UP and DOWN
  676.     arrow keys.
  677.   * The INV (invert bit order) function was renamed REV
  678.     (reverse bit order.)
  679.   * The REVB (reverse byte order) function was added.
  680.   * The stack display can, as an option, be replaced with the
  681.     SHOW display.
  682.   * Character code was added to the SHOW display.
  683.   * In support of the character code display, the option of
  684.     selecting the ASCII or EBCDIC character code was added.
  685.   * The selected number base is always displayed.  In version
  686.     16, if the currently selected number base was decimal, no
  687.     indication was displayed on the status line.
  688.   * The status display (MENU Status) no longer displays the
  689.     selected base, since it now always appears on the status
  690.     line.  The selected character code was added to the status
  691.     display.
  692.   * The active F-key set is remembered in the CMCALC.ENV file.
  693.   * The space bar can be used to perform the same function as
  694.     the ENTER key.
  695.   * A display bug (leftover junk when an alarm window was
  696.     displayed on top of the CMCALC display) was fixed.
  697.   * The overflow flag is now set correctly during
  698.     multiplication.
  699.   * The most-significant-bit is now set correctly during
  700.     multiplication.
  701.   * Due to a bug in the HP 95 ROMs, task-switching between
  702.     applications which have "fixups" can sometimes cause
  703.     problems of a completely unpredictable nature.  CMCALC is
  704.     now free of fixups (thanks to Craig Finseth for the
  705.     technique).
  706.  
  707. Version 18 was a complete re-engineering of CMCALC to conform
  708. to the HP 100 calculator paradigm. Numerous changes were made,
  709. including:
  710.  
  711.   * A complete re-design of the display, so that both the X
  712.     register in all number bases, and the stack can be shown at
  713.     all times.
  714.   * Allowed user configuration of the display.
  715.   * Added "dotted decimal" display option.
  716.   * Added CUT and PASTE operations.
  717.   * Added character entry mode.
  718.  
  719.  
  720. ---                             ---
  721. ---  Problems, Bugs, Comments?  ---
  722. ---                             ---
  723.  
  724. If you have problems with CMCalc, or have found a bug, or if you
  725. want to make suggestions for change or improvement you can
  726. contact me on CompuServe (75156.3132) or via the Internet
  727. (dorre@well.com).
  728.  
  729. CMCalc may be freely copied and distributed ONLY in unmodified
  730. form, and you may not charge any fee for it.  I neither make nor
  731. express any warranty that CMCalc operates correctly (though I
  732. believe it to do so), or that it is suitable for your purposes
  733. (though I hope it is).
  734.  
  735.  
  736. ---                ---
  737. ---  Registration  ---
  738. ---                ---
  739.  
  740. If you continue to use version 18 of CMCalc, please send a
  741. picture postcard of your hometown (or else the place you *wish*
  742. was your hometown)!  Send your postcard to:
  743.  
  744.         Eugene Dorr
  745.         8778 Casa Grande Drive
  746.         Pittsburgh PA 15237
  747.         USA
  748.  
  749. Please include the following information:
  750.  
  751.         - Where you obtained CMCalc from
  752.           (If via anonymous ftp, from what site. If from a
  753.           BBS, which one. If from a friend, the friend's name.)
  754.  
  755.         - Your e-mail address, if you have one (please print
  756.           clearly!).
  757.  
  758. Benefits of registration:
  759.  
  760. You can continue to use version 18 with a clear conscience.
  761. Oh yes, if you send me your e-mail address, I will notify you
  762. of any future upgrades to CMCalc.
  763.  
  764.  
  765. ---              ---
  766. ---  Known Bugs  ---
  767. ---              ---
  768.  
  769. Despite trying every STYLE and STATUS setting available, I
  770. cannot cause the "OK" buttons in the "Option" dialog boxes to be
  771. highlighted, thus indicating they are the default pushbuttons in
  772. the dialog. A suggestion was made that sending a SET_FOCUS
  773. message to the pushbutton might work, but I couldn't get it to.
  774.  
  775. I also couldn't get STATUS_DEF_PUSHB to do anything useful, but
  776. at least was able to create the *effect* of having a default
  777. pushbutton by putting appropriate code in the window handler for
  778. the parent dialog.
  779.  
  780. When pasting a value from the clipboard, I ignore the thousands
  781. separators that might be present in a number. That is, as long
  782. as you live in a country where a comma is used as the thousands
  783. separator. I cannot find any way to detect the setting of the
  784. current thousands separator. I tried m_get_settings_addr() but,
  785. true to the documentation, that function call is obsolete.
  786.  
  787. If anyone out there can help me with any of these problems, I
  788. sure would appreciate it!
  789.  
  790.  
  791.  
  792. Eugene Dorr
  793. Internet: dorre@well.com
  794. CompuServe: 75156.3132
  795.  
  796.