Important alert: (current site time 7/16/2013 2:29:25 AM EDT)
 

winzip icon

VisualProCalc Advanced Programmable Calculator (Public Release 1.0.0)

Email
Submitted on: 4/6/2007 6:06:38 AM
By: David Ross Goben 
Level: Advanced
User Rating: By 43 Users
Compatibility: VB 6.0
Views: 25237
author picture
(About the author)
 
     VisualProCalc is not just a programmable calculator - it is THE Programmable Calculator. VisualProCalc has taken a major step forward in calculator technology. By leaps and bounds it goes beyond what any other programmable calculator can do. Unlike most other "programmable calculators" you may have seen, VisualProCalc is not just a simple program exploiting Microsoft's Scripting Runtime, nor does it, but it is in fact a full-fledged programming environment boasting a TREMENDOUS instruction set that employs advanced C-style programming rules. VisualProCalc is an extremely powerful and capable personal programmable calculator created for people wanting to learn how to design programs, for professionals seeking a commanding tool to solve the many complex problems they must constantly unravel in their work, and for people just wanting an inexpensive, yet extremely powerful calculator. VisualProCalc takes the features of the best programmable calculators and expands them. Unlike any other programmable calculator in existence, not only can you write, save, and load programs in VisualProCalc, but you can also construct huge Library Modules that can be loaded directly into VisualProCalc's memory, each individual library capable of storing up to 99 separate programs, with a maximum capacity of 990,000 program instructions. And accessing each program within these Library Modules is a breeze. Those programs can be used by themselves by other non-programmers, or they can easily be accessed by running other programs the user of the Library Module writes, or even by other programs within the Library Module themselves. VisualProCalc supports named variables and multi-dimensionality, support for complex logical comparisons, powerful logical operators, strong support of C language program logic-flow, full support for looping operations such as For loops, Do loops, Do...While loops, Do...Until loops, and While loops, simple or complex Switch blocks, If, If...Else, and If...ElseIf branching structures, Constants, and Structures. It has no limits in its parentheses or subroutine invocation depth, it supports Boolean flags and flag checking, variable increment and decrement, decrementing conditionals, statistical analysis, linear regressions, combinations, permutations, factorials, Polar/Rectangular conversion, number-base operation and conversion, extensive trigonometric functions, four angle bases (Degrees, Radians, Grads, and Mils), and angle conversions. It supports Sexagesimal functions, conditional compilation, labels, named subroutines, user-defined keys with displayed button labels and status bar help-tips, formatted program output display, extensive debugging and program tracing features. VisualProCalc not only supports 100 base variables, but each of these variables can also be dimensioned singly up to a 100 variable sub-array, or doubly into a 100 x 100 variable array matrix, providing a maximum prospective for up to 10,000 variable cells for each one of its 100 base variables (this is potentially 1 million variable storage locations). VisualProCalc supports 64-bit double precision floating-point values with 16 digits of accuracy, all displayable, plus 32-bit signed integers, 8-bit unsigned (character) integers, and variable-length text strings. VisualProCalc supports and can create as many multi-program Library Modules as you want for free, each supporting up to 99 programs (you can even lock these Library Modules if you wish to, to arrest prying eyes). VisualProCalc supports complex file input/output of up to 9 files, even simultaneously, plus access not only hard disc storage space, but to external storage devices, such as floppy disks, memory cards, and Flash or Jump Drives. This is not your Dad's programmable calculator from the late '70s when programmable calculators were king; this is the programmable calculator your Dad wished he had always had.

 
winzip iconDownload code

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. Afterdownloading it, you will need a program like Winzip to decompress it.Virus note:All files are scanned once-a-day by Planet Source Code for viruses, but new viruses come out every day, so no prevention program can catch 100% of them. For your own safety, please:
  1. Re-scan downloaded files using your personal virus checker before using it.
  2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.
  3. Scan the source code with Minnow's Project Scanner

If you don't have a virus scanner, you can get one at many places on the net including:McAfee.com

 
Terms of Agreement:   
By using this code, you agree to the following terms...   
  1. You may use this code in your own programs (and may compile it into a program and distribute it in compiled format for languages that allow it) freely and with no charge.
  2. You MAY NOT redistribute this code (for example to a web site) without written permission from the original author. Failure to do so is a violation of copyright laws.   
  3. You may link to this code from another website, but ONLY if it is not wrapped in a frame. 
  4. You will abide by any additional copyright restrictions which the author may have placed in the code or code's description.


Other 15 submission(s) by this author

 


Report Bad Submission
Use this form to tell us if this entry should be deleted (i.e contains no code, is a virus, etc.).
This submission should be removed because:

Your Vote

What do you think of this code (in the Advanced category)?
(The code with your highest vote will win this month's coding contest!)
Excellent  Good  Average  Below Average  Poor (See voting log ...)
 

Other User Comments

3/19/2007 9:06:42 AMDavid Ross Goben

Murphy's Law strike again. Not 30 minutes after initial release, I stumbled upon a very minor bug in the modKbdPending.bas file that causes stand-along consecutive Sin, Cos, Tan, trig functions to generate a false error. SO obvious it took me less than a minutes to track down and fix. But, with an app this complex, I can expect to eventually find, and have reported, more. I'll upload version 0.2.1 tonight. In the meantime, PLEASE put this thing through its paces.
(If this comment was disrespectful, please report it.)

 
3/19/2007 9:14:20 AMDavid Ross Goben

BTW, I am also working on a Personal Programming Manual for this thing. I will begin releasing it when it gains in volume. I expect it to be between 200-300 pages. But if the present help file is 177 condensed printed pages alone, it may be larger. Programmable Calculators (the original PC's) were my introduction to programming in the 1970's. It was how I learned, and fell in love with programming. This project is my attempt to help others do the same.
(If this comment was disrespectful, please report it.)

 
3/19/2007 11:51:08 AMULLI

So many functions! - A pity really that most people will probably not bother to learn all that - 177 pages is a bit much, not to mention the final manual of 300+ pages.
(If this comment was disrespectful, please report it.)

 
3/19/2007 4:24:35 PMBob

HP made the first programmable calculator that I used in 1968-69. I forget the model number. It was a 'Desktop' package and was fascinating at the time.

This is a very impressive work and very worthy of the ***** vote.
(If this comment was disrespectful, please report it.)

 
3/19/2007 8:28:01 PMDavid Ross Goben

Bob, HP Desktop circa 1969 sounds like the HP-9100. Sold at $4900 and used a CRT display. It was designed to compete with the Wang 300 series. ULLI, this thing does not have enough functions, and 177 pages is nothing. Actually, most people own a scientific calculator, and they probably have not used half the functionality featured on them. I owned a Casio fx-115D and used it for 10 years before I read the manual and discovered it had more than 1 memory register. VisualCalc was designed to serve both simple needs and extremely complex one. Hopefully there will be ballance in the middle.
(If this comment was disrespectful, please report it.)

 
3/19/2007 8:31:24 PMAgam Saran

David, how much time did it take to develop this beast? 5000 years? Such a great program. 5 functions from me, thanks for sharing.
(If this comment was disrespectful, please report it.)

 
3/20/2007 7:40:44 AMTerriTop

David, very nice! This has more than enough for any user....and programmer as well! I can't wait to see how you developed the command interpretor for the C-like code....5'r from me ;-)
(If this comment was disrespectful, please report it.)

 
3/20/2007 9:02:47 AMDavid Ross Goben

Agam, it took me only 3-1/2 months to design, develop, and flesh out VisualCalc. My initial estimate was around 10 months because of everything I wanted to put into it. But somehow it simply flew together. Because of its modular design, its was incredibly easy to incorporate features. But I have been thinking about this since 1980, so maybe I can attribute that to its speed of development. Having been a top-notch C++ developer, it would have taken 18 months to get close to this in C. A lot of my fellow developers stick their noses up at VB, but what takes us 2 weeks to develop in C++ can usually be done in a day, or even 2 hours in VB, and with greater robustness. And with VB2005, you will see more of us C'ers coming over to VB.
(If this comment was disrespectful, please report it.)

 
3/20/2007 10:31:04 AMHeriberto Mantilla Santamaria

Jesus this code sounds good, I need it, thanks for sharing.
(If this comment was disrespectful, please report it.)

 
3/20/2007 2:18:15 PMEric Harris

I don't even know where to start with all the things that this can do. Hurry with the manual!!! *****
(If this comment was disrespectful, please report it.)

 
3/20/2007 3:15:29 PMmarshal

The add, subtract, multiply and divide seem to work fine. Don't know when I'll have time to get to the rest. This things a monster. Nice Job!
(If this comment was disrespectful, please report it.)

 
3/20/2007 8:03:42 PMDavid Ross Goben

Glad the basic math functions work for you, Marshal. ;-)

Actual, VisualCalc uses the AOS (Algebraic Operating System) entry method, invented by Texas Instruments and incorporated on all their calculators. Most-all calculators have 5 basic Hierarchy rules: '=' is lowest priority, '+' and '-' next, then 'x' and '÷' after that, then next are powers and roots, and finally all other functions have the highest priority. This means adds and subtracts are performed after multiplication and division. In contrast, VisualCalc is closest to C in that it has 15 levels of precedence (Search for 'Hierarchy' in the Help menu's Search option). Most of this is due to the addition of conditional, shift, logical, and binary operators. Indeed, if you look at the modMathPend.bas module, you will see that I have invented a totally new method of interpreting and implementing the AOS method that is both extremely fast, extremely efficient, and uses less code than most-all other implementations.
(If this comment was disrespectful, please report it.)


 
3/20/2007 8:17:46 PMDavid Ross Goben

A quick hint for getting around and learning everything. Simply employ the Search option under the Help menu, or use the '?' button, and then click any button, field, or even a dropdown menu entry, and the help window will give you loads of help. The help file, VCHelp.rtf, is packed with help. This thing is laden heavy with information, and it will hold your hand through most anything. Try getting help on the LRN key to learn quickly how to create a simple program, and then how to jazz it up with conditional testing. Try exploring as many functions as you can. Do not forget the OP command, which hold 88 more functions, such as OP 87, which gives you access to 22 pre-defined Physical Constants, or OP 88, which can tell you what day the last Monday in May is on, for example (its sister function, USR, is set aside for YOU to add your own personal functions to VisualCalc).
(If this comment was disrespectful, please report it.)

 
3/21/2007 1:33:57 AMDavid Ross Goben

A few people have expressed confusion over where a key listed in the help file might actually be located on the keypad. I have added a button named "Show Keypad Location" on the Search dialog (accessed from the Help menu or the Help Topic dialog) that will move the cursor to the sought key, first selecting the 2nd key as necessary. For example, if you have "Printf" displayed in the combobox, the "Show Keypad Location" button will be enabled, and pressing it will close the Search Dialog and move the cursor to the "Printf" button (the 2nd key function of the number "3" key). I use the mouse-event API to move it, but you may want to modify this code for your own apps (see the new modCtrPtrOnBtn.bas module) with the SetCursorPos() API to immediately center the pointer on controls. This will be released as version 0.2.2. I am still tweaking the help file, to include correcting misquotes stating text length can be up to 64 character, not the actual 36 (64 was the original spec).
(If this comment was disrespectful, please report it.)

 
3/21/2007 2:02:38 AMDavid Ross Goben

After using the name VisualCalc as the title of my "dream" calculator for the past 37 years (since early 1980), I thought the only toes that might get stepped on was when VisiCalc came out for the Apple, and then the TRS-80 computer. In all my previous web searches, I came up dry for matches for VisualCalc. Now it seems that various Visual Studio-based programs, mostly freeware, have also adopted the name (I used it simply because I imagined the then-revolutionary idea of a scrolling screen with graphics, something totally unheard of for calculators back in 1980). I wonder how long it will be before someone cries fowl. I would have no problem changing the name, but after 37 years, my jaw might skip a cog when I try to say a different name for this application that spent all those years in my imagination. 8O)
(If this comment was disrespectful, please report it.)

 
3/21/2007 5:22:41 AMDavid Ross Goben

Hm. I keep saying 37 years, instead of 27. Feels more like 47. Per a previous note, I may be changing the name VisualCalc to the first name I had originally come up with in October of 1979 before shortening it to VisualCalc: VisualProCalc (this was before my first draft notes made on Jan 2, 1980, when I seriously started imagining this idea), When I had come up with VisualProCalc, the "Pro" was simply short for "Programmable", but I did not want people to think myself so presumptuous, because it was likely to be misinterpreted as "Professional".
(If this comment was disrespectful, please report it.)

 
3/21/2007 11:46:11 AMtarek dia

this is a very excellent program ; i have also an other suggestion to add to this caluclator ; is to support mircroprocessor 8085 ro 8088 instruction set
(If this comment was disrespectful, please report it.)

 
3/22/2007 11:35:09 AMDavid Ross Goben

This is just a reminder that the Samples folder contains various program examples (use Ctrl-D, or the directory list option in the File menu). The companion TXT files are text formatted listing files, and will open up in your default text editor. I am also uploading version 0.2.2, which had an new button in the Search dialog, which will show you where on the keypad a function key is located. For example, if you select 'Circle' in the list, hitting this new button will enable the 2nd key and track the mouse cursor over to the Circle button.
(If this comment was disrespectful, please report it.)

 
3/22/2007 8:44:24 PMxpert

Excellent program. Original and well done.
You are very generous sharing this with all the PSC comunity.
5 globes.
(If this comment was disrespectful, please report it.)

 
3/23/2007 2:23:08 AMT.Jackson

David, congratulations on this fine piece of work. Tremendous amount of effort has been put into this. Deserves to win a place in the competition. Everyone give the man a vote. If only I was half as smart.
(If this comment was disrespectful, please report it.)

 
3/23/2007 9:29:19 AMvmock

Great job 5 globes from me
(If this comment was disrespectful, please report it.)

 
3/23/2007 9:30:50 AMvmock

great application - nice learning tool - 5 globes!
(If this comment was disrespectful, please report it.)

 
3/24/2007 6:21:41 AMDavid Ross Goben

Uploaded a new version, 0.2.3. Added more drawing modes, added new Help Menu option; Find All Text Matches, which expands the help search capabilities, allowing you to find all instances of sought text. Fixed a bug in the Plot Sbr invocation that prevented proper processing, and also removed the restriction requiring that Plot Sbr can only be defined with the Plot Screen visible.
(If this comment was disrespectful, please report it.)

 
3/28/2007 11:57:51 PMDavid Ross Goben

I am uploading version 0.2.4, which I hope to be the last Beta, before going Alpha. * Fixed Co-Display so that it would not blow up if there were no instructions and the user hit the backspace key. * Added OP 89, which provides 91 conversion factors (0-90) for translating one unit of measure to another. * Added OP 90 to compute Binomial Coefficient: n! / (j!(n-j)!). * Added OP 91 to compute Atan2 function. * Added a long segment to the help file on advanced Trig functions. * Gave 'Find all text matches' searchs a speed boost by not forcing the help file reload if the next or previous or selected text match index is found in the currently loaded topic. * Added keyboard ["] as a shortcut for [TXT] keypad command when in the Calculator Mode and the Learn Mode, when text entry not active. * Updated Search... to actually point to the target text if it is not a topic title. This emulates the functionality of the Find option, but it will only locate the first match.
(If this comment was disrespectful, please report it.)

 
3/29/2007 4:54:08 AMdafhi

woot, i thought alpha preceded beta. anyway i would also say this is the calculator my dad never knew he wished he had
(If this comment was disrespectful, please report it.)

 
3/29/2007 8:23:58 AMDavid Ross Goben

Alpha is Primary code or Release code, Beta is Pre-release or Testing code, and Gamma is Base Development code. You might notice that my major version number is 0. For me, this is used to designate testing code, before release, which starts with 1.
(If this comment was disrespectful, please report it.)

 
3/30/2007 11:38:14 AMStewart

Actually dafhi is correct I believe. Alpha testing is usually done prior to beta testing and as I've always been lead to believe is done more at the development level and usually within the company developing the software. Beta testing is when it goes out to a limited number of outside users. Anyway nice job on this. I'll give you 5.
(If this comment was disrespectful, please report it.)

 
3/30/2007 7:49:48 PMDavid Ross Goben

Strange, I have been a professional developer most of my life. I think I would know Alpha from Beta by now. Everywhere I have worked, we started at the Delta level, which was basically experimental code, then Gamma, when a project was forming up, then Beta for pre-release testing, and then Alpha code, which was the most protected and backed up, being release code. Maybe someone else goes the other way around, but I never worked for anyone like that. Actually, I do not even know why anyone is wasting space discussing this. Companies are free to follow their own piper, and are not confined to any "standard".
(If this comment was disrespectful, please report it.)

 
3/31/2007 9:29:45 AMDavid Ross Goben

I know that IBM uses (or used to use) Alpha for development code, but a couple of their former software engineers who I worked for (and just checked with) had actually reversed this schema, because it made more sense to them, because they saw Alpha as a Prime and a goal, not as the start of a progression through the Greek Alphabet, where the goal release code level is not firmly established. Everyone else I have worked for in my long career has also adopted this approach, although I am sure others have stuck to IBM's original concept, who probably also had invented it, and at the spur of the moment, like most everything else. Hence, the confusion is understandable. Truthfully, each company or individual is free to choose whatever approach to this they desire, and are not bound to IBM's standard. In light of this, I will drop the whole issue of Alpha referencing, just to alleviate further confusion.
(If this comment was disrespectful, please report it.)

 
4/3/2007 11:46:24 PMDavid Ross Goben

I am uploading version 1.0.0, the first non-beta. * Added a lot of additional comments to the code, corrected a capitalization error in a text message. * Fixed a Case Sense issue in variable name references, causing a false error report. * Fixed bug in the run-time variable indexing that caused an array index not to be found. * Gave display processing a significant speed boost. * Fixed Activate Previous Instance with a new replacement module that would restore a previous instance if it was minimized.
(If this comment was disrespectful, please report it.)

 
4/6/2007 2:27:50 AMDavid Ross Goben

I just noticed that when I had uploaded version 1.0.0 the other day, I forgot to reflect it in this page title. :P

(If this comment was disrespectful, please report it.)

 
4/7/2007 7:13:48 AMW Pell

5 Globes for sure !! Now, could you do a FINANCIAL CALCULATOR a la style " HP 12c Platinum" only better?
(If this comment was disrespectful, please report it.)

 
4/7/2007 8:48:42 AMDavid Ross Goben

I downloaded the HP-12C Platinum's user's manual from HP's website. Most of its functionality is already in VisualProCalc. Any additional command shortcuts can be easily programmed into the USR key, where you are free to add up to 100 (00-99) user-defined functions. If you look at the help for the OP key (press the [?] key and then [OP]), you can see the possibilities. For example, instead of writing a Net Present Value or Future Value program in VisualProCalc, which is easy enough to do, you could also shorted those programs even more by creating the additional built-in functions in the USR interface to to greatly shorten user keystroke entry. The USR interface was provided so that VisualProCalc could be configured to support any field, professional or otherwise, that the user requires.
(If this comment was disrespectful, please report it.)

 
4/12/2007 7:50:02 AMT.Jackson

Congratulations on wining last months contest Mr Goben. The people running PSC are all heart - normally only 4 submissions are chosen as contest winners.
(If this comment was disrespectful, please report it.)

 
7/5/2007 5:37:12 AMRAMA

BEST OF THE BEST CALC I EVER SEEN!
(If this comment was disrespectful, please report it.)

 
12/25/2008 1:49:19 PMPat

Would like very much to have you release a visual basic version 8.0 of the code.
(If this comment was disrespectful, please report it.)

 
12/25/2008 5:06:07 PMDavid Ross Goben

For all those who have asked if I will be rewriting this for VB2008 -- yes I will, but it will take some time to fit into my schedule. I am still trying to write a proper manual for this thing.
(If this comment was disrespectful, please report it.)

 
6/4/2009 9:10:05 PMChinker

nice program! thank you for your works
(If this comment was disrespectful, please report it.)

 

Add Your Feedback
Your feedback will be posted below and an email sent to the author. Please remember that the author was kind enough to share this with you, so any criticisms must be stated politely, or they will be deleted. (For feedback not related to this particular code, please click here instead.)
 

To post feedback, first please login.