home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug060.arc / CPM#006.LBR / CALC.CMD < prev    next >
OS/2 REXX Batch file  |  1979-12-31  |  5KB  |  174 lines

  1. ****************************<   CALC.CMD   >*****************************
  2. * This is a dBASE II calculator program which utilizes a "Keyin" func-  *
  3. * tion and programmed function keys.  The program is ready to run on    *
  4. * TeleVideo 802s, 803s & TPC-1s.  Others will require modification for  *
  5. * cursor on and off and function key settings.                          *
  6. * The "Keyin" location is set as 17616 because I've modified my dBASE II*
  7. * with Gene Head's NEWBASE.ASM file.                                    *
  8. *                     01/15/85  Originally Written                      *
  9. ******************************< Wes Tyler >******************************
  10. ERASE
  11. *--> Cursor Off
  12. ? chr(27)+'.0'
  13. ? chr(27)+'.0'
  14.  
  15. *--> Set Up Function Keys For 
  16. *--> a carriage return followed by a symbol
  17. ? chr(27)+"|11"+chr(13)+"@"+chr(25)
  18. ? chr(27)+"|21"+chr(13)+"A"+chr(25)
  19. ? chr(27)+"|31"+chr(13)+"B"+chr(25)
  20. ? chr(27)+"|41"+chr(13)+"C"+chr(25)
  21. ? chr(27)+"|51"+chr(13)+"D"+chr(25)
  22. ? chr(27)+"|61"+chr(13)+"E"+chr(25)
  23. ? chr(27)+"|71"+chr(13)+"F"+chr(25)
  24. ? chr(27)+"|81"+chr(13)+"G"+chr(25)
  25. ? chr(27)+"|91"+chr(13)+"H"+chr(25)
  26. ? chr(27)+"|:1"+chr(13)+"I"+chr(25)
  27.  
  28. SET TALK OFF
  29. SET INTE OFF
  30. *--> Sign On
  31. @ 7,37 SAY "CALC.CMD" 
  32. SET INTE ON 
  33. @ 8,30 SAY "A dBASE II Calculator"
  34. SET INTE OFF
  35. @ 9,35 SAY "by Wes Tyler"
  36. STORE 0 TO mcount
  37. DO WHILE mcount < 150
  38.  STORE mcount + 1 TO mcount
  39. ENDDO
  40. ERASE
  41.  
  42. *--> Menu For The Function Keys Set Above 
  43. @ 13,34 SAY "F1 = ADD"
  44. @ 14,34 SAY "F2 = MULTIPLY"
  45. @ 15,34 SAY "F3 = SUBTRACT"
  46. @ 16,34 SAY "F4 = DIVIDE"
  47. @ 18,34 SAY "F7 = CE/CM"
  48. @ 19,34 SAY "F9 = QUIT TO CPM"
  49. @ 20,34 SAY "F10 = dBASE II"
  50.  
  51. *--> Initialize memory and entry values
  52. STORE 0.0 TO memory, entry
  53.  
  54. *--> Set It to not clear memory
  55. STORE F TO clearmem
  56.  
  57. *--> Begin Calculator loop
  58. DO WHILE T
  59.  @  9,32 GET entry PICTURE '999999999999.9999'
  60.  *--> Cursor On
  61.  @  9,32 SAY chr(27)+'.2'
  62.  READ
  63.  *--> Cursor Off
  64.  @  9,32 SAY chr(27)+'.0'
  65.  @  9,32 SAY chr(27)+'.0'
  66.  
  67.  *--> Function Key 'RETURNS' from above read 
  68.  *--> and loads keyin with 'maction'
  69.  *--> This WILL NOT WORK unless your dBASE II has been modified
  70.  *--> for a keyin feature at decimal location 17616
  71.  STORE chr(peek(17616)) TO maction
  72.  
  73.  DO CASE
  74.  
  75.  CASE maction = '@'
  76.   *--> ADDITION
  77.   STORE memory + entry TO memory
  78.   *--> Next line sets memory up for display
  79.   STORE memory TO entry
  80.   *--> Set It to not clear memory
  81.   STORE F TO clearmem
  82.   LOOP
  83.  
  84.  CASE maction = 'A'
  85.   *--> MULTIPLICATION
  86.   IF memory <> 0
  87.    STORE memory * entry TO memory
  88.   ELSE
  89.    *--> If memory = 0 assume they wish
  90.    *--> to multiply this entry to next
  91.    *--> entry, so change this entry to memory!
  92.    STORE entry TO memory
  93.   ENDIF
  94.   *--> Next line sets memory up for display
  95.   STORE memory TO entry
  96.   *--> Set It to not clear memory
  97.   STORE F TO clearmem
  98.   LOOP
  99.  
  100.  CASE maction = 'B'
  101.   *--> SUBTRACTION
  102.   STORE memory - entry TO memory
  103.   *--> Next line sets memory up for display
  104.   STORE memory TO entry
  105.   *--> Set It to not clear memory
  106.   STORE F TO clearmem
  107.   LOOP
  108.  
  109.  CASE maction = 'C'
  110.   *--> DIVISION
  111.   IF memory <> 0
  112.    STORE memory / entry TO round
  113.    STORE INT((round * 10000) + .5 ) / 10000 TO memory
  114.   ELSE
  115.    *--> If memory = 0 assume they wish
  116.    *--> to divide this entry by next
  117.    *--> entry, so change this entry to memory!
  118.    STORE entry TO memory
  119.   ENDIF
  120.   *--> Next line sets memory up for display
  121.   STORE memory TO entry
  122.   *--> Set It to not clear memory
  123.   STORE F TO clearmem
  124.   LOOP
  125.  
  126.  CASE maction = 'F'
  127.   *--> CLEAR ENTRY/CLEAR MEMORY
  128.   IF .NOT. clearmem
  129.    *--> Set It to clear memory next time through
  130.    STORE T TO clearmem
  131.    *--> Next line sets memory up for display and clears
  132.    *--> entry by replacing it with memory
  133.    STORE memory TO entry
  134.   ELSE
  135.    *--> Set It to not clear memory
  136.    STORE F TO clearmem
  137.    *--> Actually clear it now
  138.    STORE 0 TO memory, entry
  139.   ENDIF
  140.   LOOP
  141.  
  142.  CASE maction = 'H'
  143.   *--> QUIT TO CP/M
  144.   ERASE
  145.   *--> If memory isn't zero we'll leave it on the screen
  146.   IF memory <> 0
  147.    @ 9,33 SAY memory USING '999999999999.9999'
  148.   ENDIF
  149.   *--> Cursor On
  150.   @  0, 0 SAY chr(27)+'.2'
  151.   SET CONSOLE OFF 
  152.   QUIT
  153.  
  154.  CASE maction = 'I'
  155.   *--> QUIT TO dBASE II
  156.   ERASE
  157.   *--> If memory isn't zero we'll leave it on the screen
  158.   IF memory <> 0
  159.    @ 9,33 SAY memory USING '999999999999.9999'
  160.   ENDIF
  161.   SET TALK ON
  162.   CLEAR
  163.   *--> Cursor On
  164.   @  0, 0 SAY chr(27)+'.2'
  165.   CANCEL
  166.  
  167.  OTHERWISE 
  168.   STORE memory TO entry  
  169.  
  170.  ENDCASE
  171.  
  172. ENDDO *< DO WHILE T >*
  173.  
  174. *<<<EOF CALC.CMD