Hello SpagettiCoder,
I don't know what your experience and/or knowledge of True Basic and other basics is, so please excuse me if I get too detailed about stuff that you already know.
There aren't any references to MS PDS v7.1, I think, because True Basic, which was born as "Dartmouth B.A.S.I.C." way back in the early 60's, of course predates Microsoft's interpreter basic, (and many other "BASIC"'s such as QUICK BASIC, North Star basic, etc.) which appeared in the early days of "PC"s. As far as I remember, the old MS and other basics were "watered down" versions of the original Dartmouth B.A.S.I.C. and have essentially no "compatibility" per se with True BASIC. There doesn't need to be; if one can read those basics, one can pretty much just compose a TB program by inspection right off the bat by making a few changes.
John Kemeny and Tom Kurtz had invented BASIC at Dartmouth, and it had all the math then that it has now. (It was supposed to be "for scientists, who didn't have time to fool around trying to deal with a main-frame computer" which was a real hassle at that time.)
MS stripped out a lot of the good math stuff because "the average person who might buy a PC isn't going to need or understand all that math stuff anyway; they'll just want to save recipes, do their check book balancing, and a few other such things" or words to that effect.
In those early days, line numbers, "GOTO"s, and that sort of thing were in vogue; in fact line numbers were required.
The earliest implementation of Dartmouth BASIC that I'm aware of was the C.E.I.R system which employed teletype-type machines to connect to the main "downtown mainframe computer". I first used this at work, around 1967. Subsequently, HP put their implementation of the Dartmouth basic into such machines as their HP 9830 (the only numbered one I remember of three types we had) and I used that until retiring about 30 years ago. A version of that basic called "HP Basic" was marketed back then as well, and versions of that may still be being offered. (It was very expensive.)
Later on, Kemeny and Kurtz decided to market their original BASIC under the name "True BASIC", and that version was for DOS. When Windows came out, I upgraded to the Windows version. I have had every version from the first up to GOLD v5.5b19.
The first thing to realize is that the underlying CORE CODE of True Basic is EXACTLY as it was at its inception. Never has changed. That's why, for instance, there is no provision for the "mouse wheel"; there wasn't any such thing back then. And similarly for other more "modern" things found in computer languages today.
Unfortunately, there seems to be no one left who can interpret the machine language in which TB was initially written. Consequently, there have been no changes to the "core" code. What has been added are the various "outer wrappers" as it were, which attempt to make the basic code run under Windows, and earlier, on Mac computers. Changes in these two systems have necessitated the various "versions" of TB which have evolved. These changes were just to make the thing deal with the latest version of the OS. Finally, the MAC OS got so drastically changed that TB just wasn't able to keep up with it. A major loss for MAC users. The libraries which come with TB add all sorts of "extras" which allow programs to have more "windows-like" features than was possible under DOS. But these are not part of the "core" code.
The latest version "v.6xxx" has a new editor (which also isn't actually part of the TB core code); this new editor tries to add a few more "modern" features to what the old TB editor had. (I just use a common old third party text editor, since TB programs are nothing but ASCII text files anyway. That allows me to have and see line numbers which aren't actually IN the program code itself. Then when an error pops up at "line xxx", I can quickly find it in the open text editor. I never use line numbers in programs anymore.)
Regarding line numbers, they are OPTIONAL in True Basic. Either you USE them, or you DON'T. If you use Line numbers, the archaic GOTO and GOSUB can be used. If NOT using line numbers, one instead uses the "structured code" as suggested in the various manuals. (The most annoying thing to me about line numbers was not having enough lines between line numbers when making changes and having to disrupt all train of thought to go address the adding or renumbering lines, etc.)
Those who are used to the line-numbered basics will be used to such things as:
"120 GOSUB 400"; then at the END of whatever code started at line 400, one had to command a return back to the line "121" following the GOSUB command, or otherwise "GOTO" some other line. I did this type programming for many years until relief came with the "Structured" concept. In my opinion this latter concept is infinitely superior. In the above example, for instance, one would instead have this:
At the place in the code where Line "120 GOSUB 400" was, you would have: "CALL [blah]", where [blah] is some name with which you have labeled the SUBroutine which started at Line "400" in the above example. The format of a subroutine is simply:
"SUB [blah]"; then the lines of code to be performed by the subroutine; then the return statement: "END SUB". The "END SUB" command always returns to the line after the line which CALLed the SUB. Of course, one SUB can CALL another, and on and on; each returning to whence it was called.
You can put the SUBroutine code anywhere in the program you want. It is best to put SUBs after the program END statement, to avoid cluttering up your code with all the stuff that's inside the SUB.
Even more conveniently, you can save the various SUBs you write in "LIBRARY"s. Then in your program, invoke the required SUB from the LIBRARY by simply stating the path and file name of the LIBRARY. An example of invoking a Library takes the form:
LIBRARY "[complete path to the Library][file name of the Library with .tru or .txt as the case may be]"
Put this line at any place in your program PRIOR to the CALL for the SUB.
Also, Defined FUNCTIONs follow the same general idea. Both SUBs and DEFs can have arguments passed in. All this is covered in the various manuals.
The only thing GOLD offers over SILVER is the ability to create dll's (in C) to do things which are beyond the scope of the TB. These dll's can be invoked by GOLD (provided one knows how to program them in C). There are a couple of other features in the GOLD version but since they don't interest me I can't describe them off the top of my head. I usually just use the SILVER v5.33. All of these "extra" features are described in the GOLD and SILVER pdf's which are available as downloads.
"Are there any functions or libraries to deal with QB45 [or PDS] conversions of CVS, CVD, CVSMBF, CVDMBF, MKS$, MKD$, MKSMBF$ and MKDMBF$? Are these included in the pre-written libraries or add-ons?" No. Numeric values are stored in the standard IEEE eight-byte format, which is discussed in the manuals. However, by using the LIBRARY HugeLIB.trc, you should be able to get any number of decimal places you need.
The header to this LIBRARY says:
! Version 1.1, 1.2
! Copyright (c) 1993, 1998, 1999
! True BASIC, Inc.
! All Rights Reserved.
I have never really needed values to 16 places, except in writing DXF files, where I wrote my own thing to SAVE 16-digit numbers as STRINGs.
I have never used the above HUGELIB.trc LIBRARY, but you can apparently set any number of digits you want. The default is 30. The LIB shows examples using 126 digits! I think it PACKs 8-bit ones together somehow to do this, but I don't offhand know how. There are no "instructions" on how to deploy that library that I know of. I believe there were some answers on the OLD forum. But that does us no good at this point, since they can't seem to find the old posts.
A former frequent poster, BigJohn Arscott, could undoubtedly shed light on this, but he hasn't been posting lately. (BigJohn authored the New Editor which v.6xxx has. Formidable piece of work.) Perhaps John, or someone else who knows about the HUGELIB, will post on the forum and provide some insight.
As for the "2000+ pre-written Libs" you mentioned, there are a slew of them in the TBlibs directory, which is supposed to be sent with the TB files. But unless they are counting the all the SUBs and Defs and stuff inside these TBlib libraries, there aren't anywhere near 2000.
Three additional things that to me are extremely valuable are the fact that :
Arrays/matrices can be redimensioned at any time in the program, and
You can create an executable .exe file with the click of one menu item, and
you can even put your own icon on it in place of the TB icon.
I don't know what else to tell you; I'm just a random poster, not anyone connected to TB, Inc.
Hope this helps a little.
Regards,
Mike C.