home *** CD-ROM | disk | FTP | other *** search
- ****************************< CALC.CMD >*****************************
- * This is a dBASE II calculator program which utilizes a "Keyin" func- *
- * tion and programmed function keys. The program is ready to run on *
- * TeleVideo 802s, 803s & TPC-1s. Others will require modification for *
- * cursor on and off and function key settings. *
- * The "Keyin" location is set as 17616 because I've modified my dBASE II*
- * with Gene Head's NEWBASE.ASM file. *
- * 01/15/85 Originally Written *
- ******************************< Wes Tyler >******************************
- ERASE
- *--> Cursor Off
- ? chr(27)+'.0'
- ? chr(27)+'.0'
-
- *--> Set Up Function Keys For
- *--> a carriage return followed by a symbol
- ? chr(27)+"|11"+chr(13)+"@"+chr(25)
- ? chr(27)+"|21"+chr(13)+"A"+chr(25)
- ? chr(27)+"|31"+chr(13)+"B"+chr(25)
- ? chr(27)+"|41"+chr(13)+"C"+chr(25)
- ? chr(27)+"|51"+chr(13)+"D"+chr(25)
- ? chr(27)+"|61"+chr(13)+"E"+chr(25)
- ? chr(27)+"|71"+chr(13)+"F"+chr(25)
- ? chr(27)+"|81"+chr(13)+"G"+chr(25)
- ? chr(27)+"|91"+chr(13)+"H"+chr(25)
- ? chr(27)+"|:1"+chr(13)+"I"+chr(25)
-
- SET TALK OFF
- SET INTE OFF
- *--> Sign On
- @ 7,37 SAY "CALC.CMD"
- SET INTE ON
- @ 8,30 SAY "A dBASE II Calculator"
- SET INTE OFF
- @ 9,35 SAY "by Wes Tyler"
- STORE 0 TO mcount
- DO WHILE mcount < 150
- STORE mcount + 1 TO mcount
- ENDDO
- ERASE
-
- *--> Menu For The Function Keys Set Above
- @ 13,34 SAY "F1 = ADD"
- @ 14,34 SAY "F2 = MULTIPLY"
- @ 15,34 SAY "F3 = SUBTRACT"
- @ 16,34 SAY "F4 = DIVIDE"
- @ 18,34 SAY "F7 = CE/CM"
- @ 19,34 SAY "F9 = QUIT TO CPM"
- @ 20,34 SAY "F10 = dBASE II"
-
- *--> Initialize memory and entry values
- STORE 0.0 TO memory, entry
-
- *--> Set It to not clear memory
- STORE F TO clearmem
-
- *--> Begin Calculator loop
- DO WHILE T
- @ 9,32 GET entry PICTURE '999999999999.9999'
- *--> Cursor On
- @ 9,32 SAY chr(27)+'.2'
- READ
- *--> Cursor Off
- @ 9,32 SAY chr(27)+'.0'
- @ 9,32 SAY chr(27)+'.0'
-
- *--> Function Key 'RETURNS' from above read
- *--> and loads keyin with 'maction'
- *--> This WILL NOT WORK unless your dBASE II has been modified
- *--> for a keyin feature at decimal location 17616
- STORE chr(peek(17616)) TO maction
-
- DO CASE
-
- CASE maction = '@'
- *--> ADDITION
- STORE memory + entry TO memory
- *--> Next line sets memory up for display
- STORE memory TO entry
- *--> Set It to not clear memory
- STORE F TO clearmem
- LOOP
-
- CASE maction = 'A'
- *--> MULTIPLICATION
- IF memory <> 0
- STORE memory * entry TO memory
- ELSE
- *--> If memory = 0 assume they wish
- *--> to multiply this entry to next
- *--> entry, so change this entry to memory!
- STORE entry TO memory
- ENDIF
- *--> Next line sets memory up for display
- STORE memory TO entry
- *--> Set It to not clear memory
- STORE F TO clearmem
- LOOP
-
- CASE maction = 'B'
- *--> SUBTRACTION
- STORE memory - entry TO memory
- *--> Next line sets memory up for display
- STORE memory TO entry
- *--> Set It to not clear memory
- STORE F TO clearmem
- LOOP
-
- CASE maction = 'C'
- *--> DIVISION
- IF memory <> 0
- STORE memory / entry TO round
- STORE INT((round * 10000) + .5 ) / 10000 TO memory
- ELSE
- *--> If memory = 0 assume they wish
- *--> to divide this entry by next
- *--> entry, so change this entry to memory!
- STORE entry TO memory
- ENDIF
- *--> Next line sets memory up for display
- STORE memory TO entry
- *--> Set It to not clear memory
- STORE F TO clearmem
- LOOP
-
- CASE maction = 'F'
- *--> CLEAR ENTRY/CLEAR MEMORY
- IF .NOT. clearmem
- *--> Set It to clear memory next time through
- STORE T TO clearmem
- *--> Next line sets memory up for display and clears
- *--> entry by replacing it with memory
- STORE memory TO entry
- ELSE
- *--> Set It to not clear memory
- STORE F TO clearmem
- *--> Actually clear it now
- STORE 0 TO memory, entry
- ENDIF
- LOOP
-
- CASE maction = 'H'
- *--> QUIT TO CP/M
- ERASE
- *--> If memory isn't zero we'll leave it on the screen
- IF memory <> 0
- @ 9,33 SAY memory USING '999999999999.9999'
- ENDIF
- *--> Cursor On
- @ 0, 0 SAY chr(27)+'.2'
- SET CONSOLE OFF
- QUIT
-
- CASE maction = 'I'
- *--> QUIT TO dBASE II
- ERASE
- *--> If memory isn't zero we'll leave it on the screen
- IF memory <> 0
- @ 9,33 SAY memory USING '999999999999.9999'
- ENDIF
- SET TALK ON
- CLEAR
- *--> Cursor On
- @ 0, 0 SAY chr(27)+'.2'
- CANCEL
-
- OTHERWISE
- STORE memory TO entry
-
- ENDCASE
-
- ENDDO *< DO WHILE T >*
-
- *<<<EOF CALC.CMD