home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug056.arc / RPN.DOC < prev    next >
Text File  |  1979-12-31  |  5KB  |  220 lines

  1.  
  2. READ.ME:
  3.  
  4.  
  5. RPN 1.0 - reverse polish programmer's calculator
  6.  
  7.             (For the Osborne-1)
  8.  
  9.      by David Brower, GM Software, 10/82
  10.      This program is in the public domain.
  11.  
  12.  
  13. Description:
  14. ------------
  15.  
  16.      RP╬ 1.░ i≤ aε integer-onl∙ screeε calculator
  17. particlularl∙ useful∞ t∩ programmers«  Value≤ may
  18. bσ displayeΣ anΣ entereΣ iε an∙ oµ fou≥ formats,
  19. ASCI╔ character¼ DECIMA╠ integer¼ anΣ HE╪ or
  20. OCTA╠ integers«  Thσ prograφ i≤ writteε iε BDS-C
  21. fo≥ thσ Osborne-▒ anΣ woulΣ requirσ somσ simple
  22. modification≤ t∩ ruε oε machine≤ witΦ different
  23. termina∞ contro∞ sequences.
  24.  
  25.      Datß i≤ handleΣ oε ß stacδ iε reversσ polish
  26. notation¼ mucΦ likσ Hewlett-PackarΣ calculators.
  27.  
  28.      Thσ stacδ i≤ 3░ 16-bi⌠ word≤ deep¼ which
  29. shoulΣ bσ sufficien⌠ fo≥ jus⌠ abou⌠ anybody.
  30. Whilσ no⌠ strictl∙ necessar∙ (yo⌡ caε somehow
  31. deconvolutσ AN┘ expressioε int∩ RPN)¼ therσ is
  32. als∩ ß convenien⌠ MEMOR┘ cell«  Datß ma∙ be
  33. storeΣ o≥ recalleΣ int∩ o≥ froφ thi≤ location
  34. freely.
  35.  
  36.      Al∞ thσ norma∞ arithmetiπ operation≤ are
  37. supplied¼ a≤ wel∞ a≤ ß completσ se⌠ oµ bitwise
  38. operations«  Fo≥ thσ mos⌠ par⌠ "Có likσ notation
  39. i≤ used.
  40.  
  41.      Fairl∙ explici⌠ "HELPó informatioε i≤ built
  42. int∩ thσ display«  Thσ prograφ use≤ ß pleasant
  43. techniquσ oµ keepinτ aε up-to-datσ stacδ display
  44. whilσ maintaininτ ß smal∞ scrollinτ regioε for
  45. olΣ commands«  Thi≤ keep≤ yo⌡ full∙ informed
  46. abou⌠ you≥ curren⌠ statσ anΣ als∩ show≤ you≥ last
  47. fe≈ entries¼ givinτ yo⌡ somσ ideß ho≈ yo⌡ got
  48. wherσ yo⌡ are.
  49.  
  50.  
  51. Usage:
  52. ------
  53.  
  54.      Iε responsσ thσ thσ CP/═ promp⌠ A╛ enter:
  55. èrpn<RETURN>
  56.  
  57. Therσ arσ n∩ commanΣ linσ arguments.
  58.  
  59.  
  60. Examples:
  61. ---------
  62.  
  63. T∩ adΣ ┤ anΣ 5¼ enter:
  64.  
  65.           4
  66.           5
  67.           +
  68.  
  69. T∩ dividσ 1░ b∙ 2:
  70.  
  71.           10
  72.           2
  73.           /
  74. 
  75. T∩ pqcδ ß BC─ serΣ fro-0dhe0fou≥ chara#ter≤ "1234":
  76. (You'Σ neve≥ d∩ i⌠ thi≤ way¼ bu⌠ it'≤ aε example.)
  77.  
  78.      <ESC>░     ╗ pusΦ characte≥ 0
  79.      ╙          ╗ savσ i⌠ iε memory
  80.      <ESC>▒     ╗ pusΦ characte≥ 1
  81.      ≥          ╗ recal∞ thσ '0'
  82.      -          ╗ subtrac⌠ '0º froφ '1'
  83.      ┤          ╗ ┤ bit≤ t∩ shift
  84.      ╝          ╗ shif⌠ left
  85.      <ESC>▓     ╗ pusΦ characte≥ 2
  86.      ≥          ╗ recal∞ '0'
  87.      -          ╗ subtract
  88.      ⁿ          ╗ O╥ witΦ thσ shifteΣ '1'-'0'
  89.      16
  90.      ¬          ╗ shif⌠ lef⌠ ┤ morσ bits
  91.      <ESC>3
  92.      0xµ        ╗ Bi⌠ mask¼ jus⌠ t∩ bσ different
  93.      ª          ╗ AN─ witΦ thσ mask
  94.      ⁿ          ╗ mergσ witΦ thσ saveΣ '120'
  95.      4
  96.      <
  97.      <ESC>┤     ╗ etc.
  98.      r
  99.      -
  100.      ⁿ          ╗ BC─ no≈ oε to≡ oµ stack.
  101.  
  102.  
  103.  
  104. RP╬ COMMANDS:
  105. -------------
  106.  
  107.      Command≤ arσ alway≤ entereΣ b∙ pressing
  108. <RETURN>« Yo⌡ ma∙ usσ an∙ oµ thσ standarΣ CP/M
  109. linσ editinτ commands¼ sucΦ a≤ <DEL>¼ <BS>¼ ^U,è^╪ o≥ thσ "<-ó bacδ arro≈ oε thσ Osborne-1.
  110.  
  111.  
  112. Entering values:
  113.  
  114.      These push a value onto the top of the stack.
  115.  
  116.      <ESC>c    ASCII character
  117.  
  118.      nnnnn     decimal integer
  119.  
  120.      0xhhhh    HEX integer
  121.  
  122.      0oooooo   OCTAL integer
  123.  
  124.  
  125. Binary (two operand) operations:
  126.  
  127.      These replace the top two values on the stack
  128.      with the result of the operation.
  129.  
  130.      +     Addition
  131.  
  132.      -     Subtraction
  133.  
  134.      *     Multiplication
  135.  
  136.      /     Division
  137.  
  138.      %     Remainder (modulus)
  139.  
  140.  
  141.  
  142.      <     Bitwise LEFT shift
  143.  
  144.      >     Bitwise RIGHT shift
  145.  
  146.  
  147.  
  148.      &     Bitwise AND
  149.  
  150.      |     Bitwise OR (inclusive)
  151.  
  152.      ^     Bitwise XOR (eXclusive OR)
  153.  
  154.  
  155. Unary (single operand) Operators:
  156.  
  157.      These replace the top of the stack with
  158.      the result of the operation.
  159.  
  160.      C     bitwise complement (1's)
  161.  
  162.      N     negate, 2's complement.
  163. è
  164.  
  165. MEMORY Control:
  166.  
  167.      These move values to and from the MEMORY cell.
  168.  
  169.      S     Stores the top of the stack in MEMORY
  170.  
  171.      R     Recalls the MEMORY by pushing it's value
  172.  
  173.  
  174.  
  175. Stack Control:
  176.  
  177.      These clobber elements on the stack.
  178.  
  179.      E     erases the top of the stack
  180.  
  181.      Z     Zaps (erases) the entire stack and
  182.            the MEMORY cell.
  183.  
  184.  
  185. SPECIAL COMMAND:
  186.  
  187.      "     DITTO, repeat the last entered command.
  188.  
  189.  
  190. Program Exit:
  191.  
  192.      ^C    Ends and re-boots.
  193.  
  194.      ^Z    Ends without re-booting.
  195.  
  196.      <RETURN>     asks:
  197.  
  198.            rpn exit (y/n)? _
  199.  
  200.            Answering 'Y' or 'y' will exit.
  201.  
  202.  
  203.  
  204. Programming Notes:
  205. ------------------
  206.  
  207.      Originally from "The C Programming Language"
  208. by Kernighan & Ritchie, modified for screen stack
  209. display, ascii, hex, integer and octal modes, &
  210. bitwise operations.  Apologies to K & R for my
  211. hacks to their nice program.  The code (RPN.C) is
  212. written in Leor Zolman's BDS-C.  I could not get
  213. it to work using the "small-c" available on FOG
  214. disks 29-32.  Sorry about that.  The RPN.COM file
  215. should run on any Osborne-1 without problem.
  216.  
  217.     For all you Osborne "C" fans who haven'tèfound the magic keys:
  218.  
  219.     '{'    is ^,  (ctrl on the '<' key)
  220.     '}'    is ^.  (ctrl on the '>' key)