
                      RCAL - A "ROLLING" CALCULATOR
                     Copyright (C) 2018 Mateusz Viste

                       http://rcal.sourceforge.net

rcal is an interactive calculator that loosely mimics the behavior of "roller
printing" calculators. It supports huge numbers, floating point and has
extremely low hardware requirements.


=== REQUIREMENTS =============================================================

rcal is a 16-bit (real mode) DOS application. It needs DOS 3+, an 8086 CPU and
around 100 KiB of available conventional RAM.


=== USAGE ====================================================================

Using rcal is as simple as launching the rcal executable and providing the
operands and operators that need to be computed. Following operators are
supported:
 '+' and '-' (add/subtract)
 '*' and '/' (multiply/divide)
 ^ - power
 % - percent

Inputing a negative operand requires to press the 'S' key (S = change sign).

Operator notes:

1. The percent operator acts in a perhaps peculiar way, since it actually does
   slightly more than just scaling a value down by 100. When it is preceded by
   an addition or subtraction, the percent operator will add or subtract the
   product of the previous operand. Example:

     Operation: "300 + 5%" will actually perform "300 + (300 * 5%)"

2. The power operator (^) supports only integer exponents.

3. Divisions are performed using a precision limited to 20 decimal places.


=== LIMITATIONS ==============================================================

Values that can be input to rcal can have up to 10 integer digits and 6
fractional digits. The computation engine itself is able to handle much bigger
numbers though: the entire result can be up to 56 digits long (longer
intermediate results are possible, but won't be displayed).


=== LICENSE ==================================================================

rcal is published under the MIT license, as printed below.

 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:

 The above copyright notice and this permission notice shall be included in
 all copies or substantial portions of the Software.

 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 IN THE SOFTWARE.

rcal relies on the APM (Arbitrary Precision Math) library v1.0, published by
Lloyd Zusman in 1988. The APM library is falls under different licensing terms
than rcal, since it is licensed under its own license, the APM GPL. Lloyd
Zusman kindly provided his blessing to rcal using APM. The APM GPL is printed
below.

         Arbitrary Precision Math Library General Public License
                     (Written October 5, 1988)

  Copyright (C) 1988 Lloyd Zusman, Master Byte Software, Los
  Gatos, California.  Everyone is permitted to copy and distribute
  verbatim copies of this license, but changing it is not allowed.
  You can also use this wording to make the terms for other programs.

  The wording of this license is based on that of the
  "GNU EMACS GENERAL PUBLIC LICENSE" by Richard Stallman,
  Copyright (C) 1985, 1987, 1988, version of February 11, 1988,
  but since some of the text has been changed, please be sure to
  READ THIS CAREFULLY!

   This general public license is intended to give everyone the right
 to share the Arbitrary Precision Math Library (hereinafter referred to
 as the "APM Library").  To make sure that you get the rights we want
 you to have, I need to make restrictions that forbid anyone to deny
 you these rights or to ask you to surrender the rights.

   Specifically, we want to make sure that you have the right to give
 away copies of the APM Library, that you receive source code or else
 can get it if you want it, that you can change the APM Library or use
 pieces of it in new programs, and that you know you can do these
 things.

   To make sure that everyone has such rights, we have to forbid you to
 deprive anyone else of these rights.  For example, if you distribute
 copies of the APM Library, you must give the recipients all the
 rights that you have.  You must make sure that they, too, receive or
 can get the source code.  And you must tell them their rights.

   Also, for our own protection, we must make certain that everyone
 finds out that there is no warranty for the APM Library.  If the APM
 Library is modified by someone else and passed on, we want its
 recipients to know that what they have is not what we distributed, so
 that any problems introduced by others will not reflect on our
 reputation.

   Therefore we (Lloyd Zusman and Master Byte Software) make the
 following terms which say what you must do to be allowed to
 distribute or change the APM Library.

                         COPYING POLICIES

 1. You may copy and distribute verbatim copies of the APM Library
 source code as you receive it, in any medium, provided that you
 conspicuously and appropriately publish on each copy a valid copyright
 notice "Copyright (C) 1988 Lloyd Zusman, Master Byte Software, Los
 Gatos, California" (or with whatever year is appropriate); keep intact
 the notices on all files that refer to this License Agreement and to
 the absence of any warranty; and give any other recipients of the the
 APM Library program a copy of this License Agreement along with the
 program.  You may charge a distribution fee for the physical act of
 transferring a copy.

 2. You may modify your copy or copies of the APM Library source code or
 any portion of it, and copy and distribute such modifications under
 the terms of Paragraph 1 above, provided that you also do the following:

    a) cause the modified files to carry prominent notices stating
    that you changed the files and the date of any change; and

    b) cause the whole of any work that you distribute or publish, that in
    whole or in part contains or is a derivative of the APM Library or any
    part thereof, to be licensed to all third parties on terms identical
    to those contained in this License Agreement (except that you may
    choose to grant more extensive warranty protection to some or all
    third parties, at your option).

    c) You may charge a distribution fee for the physical act of
    transferring a copy, and you may at your option offer warranty
    protection in exchange for a fee.

    d) You may not charge a license fee for the whole of any work that
    you distribute or publish, that in whole or in part contains or is
    a derivative of the APM library or any part thereof, without the
    express written permission of Lloyd Zusman and Master Byte Software;
    whether this permission is granted for free or in return for goods
    services, royalties, or other compensation will be determined
    solely by Lloyd Zusman and Master Byte Software.

 Mere aggregation of another unrelated program with this program (or its
 derivative) on a volume of a storage or distribution medium does not bring
 the other program under the scope of these terms.

 3. You may copy and distribute the APM Library (or a portion or
 derivative of it, under Paragraph 2) in object code or executable form
 under all the terms of Paragraphs 1 and 2 above provided that you also
 do one of the following:

    a) accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of
    Paragraphs 1 and 2 above; or,

    b) accompany it with a written offer, valid for at least three
    years, to give any third party free (except for a nominal
    shipping charge) a complete machine-readable copy of the
    corresponding source code, to be distributed under the terms of
    Paragraphs 1 and 2 above; or,

    c) accompany it with the information you received as to where the
    corresponding source code may be obtained.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form alone.)

 For an executable file, complete source code means all the source code
 for all modules it contains; but, as a special exception, it need not
 include source code for modules which are standard libraries that
 accompany the operating system on which the executable file runs.

 4. You may not copy, sublicense, distribute or transfer the APM
 Library except as expressly provided under this License Agreement.
 Any attempt otherwise to copy, sublicense, distribute or transfer the
 APM Library is void and your rights to use the APM Library under this
 License agreement shall be automatically terminated.  However, parties
 who have received computer software programs from you with this
 License Agreement will not have their licenses terminated so long as
 such parties remain in full compliance.

 5. If you wish to incorporate parts of the APM Library into other
 programs whose distribution conditions are different, write to Lloyd
 Zusman at Master Byte Software.  We have not yet worked out a simple
 rule that can be stated here, but we will often permit this.  We will
 be guided by the goals of (1) preserving the free status of all
 derivatives of our free software; of (2) promoting the sharing and
 reuse of software; and of (3) not allowing anyone to profit from the
 use of our software without us also having the opportunity to share
 in these profits.

 Your comments and suggestions about our licensing policies and our
 software are welcome!  Please contact Lloyd Zusman, Master Byte
 Software, 127 Wilder Ave., Los Gatos, California 95030, or call
 (408) 395-5693.

                            NO WARRANTY

   BECAUSE THE APM LIBRARY IS LICENSED FREE OF CHARGE, WE PROVIDE
 ABSOLUTELY NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE
 LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING, MASTER BYTE SOFTWARE,
 LLOYD ZUSMAN AND/OR OTHER PARTIES PROVIDE THE APM LIBRARY "AS IS"
 WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
 BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY
 AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE THE APM
 LIBRARY PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
 SERVICING, REPAIR OR CORRECTION.

   IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL MASTER BYTE
 SOFTWARE, LLOYD ZUSMAN, AND/OR ANY OTHER PARTY WHO MAY MODIFY AND
 REDISTRIBUTE THE APM LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
 DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL,
 INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
 INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
 BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A
 FAILURE OF THE PROGRAM TO OPERATE WITH PROGRAMS NOT DISTRIBUTED BY
 MASTER BYTE SOFTWARE) THE PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF
 THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.

==============================================================================
