QuickBASIC 2.0 and the Tandy 1000 ================================== Some of you with Tandy 1000's may have been contemplating the purchase of Microsoft's new BASIC compiler, as well you might. More than just a compiler for interpreted BASIC programs, this new product transforms BASIC into a serious program development system. Just consider these new features : 1) A complete programming environment with integrated editor, debugger, and "compile to memory" options. 2) The elimination of mandatory line numbers in the BASIC source code. Line numbers are now optional; needed only for GOTO or GOSUB statements. In fact, in lieu of line numbers, alpha labels may be substituted, thus allowing for easily recognizable routines. (E.G. GOSUB HEADER for a routine that clears the screen and prints a title for the option selection instead of, say, GOSUB 40000.) The system even comes with a utility (written in QB 2.0 and provided in source code form) which will remove unneeded line numbers from old interpreted programs. 3) Multi-line IF statements. This function, combined with the already available WHILE ... WEND statement (which, for the first time, can be executed without line numbers) at last gives BASIC a structured look and "feel" similar to languages like PASCAL while still retaining compatibility with older interpreted programs. 4) The availability of SUB-PROGRAMS to further aid modular programming completes BASIC's graduation to adulthood. Variables assigned within a sub-program are "private" to that section of code. This allows BASIC to become a serious development system since a main program can be written with calls to sub-program "stubs", and various programmers can be assigned responsibility for each stub. 5) As in Turbo Pascal, the compiler can call up the built-in editor and position the cursor at the source of a possible compile error. Unlike Turbo, however, the compiler will make a complete run through the source code, noting errors as they occur, (up to a maximum of 25) and then present them one by one for correction via the editor. As each error is encountered, a "Error-Message" window opens at the bottom of the screen with a (usually) comprehensive explanation of the error. 6) The built-in debugger (activated with our old friends TRON and TROFF) provides a variable DEBUG WINDOW at the bottom of the screen which indicates the currently executing line of source code. The speed of the debugging action can be continuously varied, and the size of the debug window can be increased to show additional lines of code. 7) The system comes with a beautiful 600 page manual outlining all the new features and providing a "Statement and Function Reference" that clearly lists all compiler deviatons from the interpreter on a statement by statement basis. And the whole package lists for only $99.95 retail. There are also a number of additional enhancements (such as support for EGA graphics, LOCK and UNLOCK functions for the Tandy VIANET and IBM NET, a fix for the notorious QB 1.0 "Child of Basic" bug, etc.) which are too numerous to go into here. In short, this is the BASIC everybody has dreamed of since that first 4K paper tape Microsoft "Tiny BASIC" was loaded into the Altair 8800's shaky Parisitic Engineering memory board some 10 years ago. Ah, but for us Tandy 1000 owners, has this BASIC really arrived ? The fact of the matter is that trying to run this system on a 1000 amounts to masochistic torture. Here are the main problems which constitute the proverbial "flys in the ointment" for our machine : 1) There is no support for the Tandy's arrow keys from within the editor. Instead, the 8-2-4-6 diamond on the numeric keypad must be substituted. 2) The QB editor doesn't recognized the status of the Tandy CAPS LOCK key. The only way to tell if one is in caps mode is to reference the on-screen indicator in the upper right-hand corner of the screen. If one is in CAPS, and then switches to lowercase, it will generally take several presses of the CAPS key to finally get back to uppercase. 3) If SideKick is called upon while working from within the QB 2.0 environment and the Tandy arrow keys are used to, for example, page through the ASCII table, one will find QB 2.0 totally locked-up upon leaving SideKick. This condition can sometimes be cured by pressing ALT-SPACEBAR and then ESC. 4) Many of you will also be upset by the lack of support for the Tandy's (and, incidentally, PC Jr's) enhanced CGA graphics modes. These all seem like minor problems, and, in fact, if an outboard editor more compatible with the T1K is utilized in lieu of the QB 2.0's built-in editor, then the problems disappear entirely. The problem is that if you opt to do that then you lose the integrated programming enviornment you thought you had purchased. Also, Turbo Pascal (which Microsoft has obviously aimed this product at) has no problems with any aspect of the T1K keyboard, and, of course, works well with SideKick. Why should the large body of Tandy 1000 owners have to put up with these anomalies when it's obvious that we don't have to ? And why has Microsoft (seemingly) forgotten its roots ? Before there was an IBM PC there was the TRS-80 MODEL I with Microsoft BASIC in ROM. That's right ! Radio Shack was the _very first_ company to include MS BASIC in ROM. (The original Apple II came with a Woz-produced integer BASIC in ROM; MS BASIC was available only on cassette tape until the advent of the II+). Indeed, the popularity of the Model I helped propel Microsoft BASIC to its dominant position as the standard BASIC for micro-computers, and thereby eventually led to its liaison with IBM. THIS COMPANY OWES US ONE ! I suggest that we let Microsoft know, in no uncertain terms, that we are very displeased with the current implementation of this package on the Tandy 1000 and that we want a QB 2.0 tailored for our machines. Current estimates indicate that there are now close to as many Tandy 1000 owners as there are owners of the Macintosh. If we all get together on this it's quite possible that we can persuade Microsoft of the economic feasibility of releasing a Tandy 1000 QuickBASIC 2.0. --- Joseph