DOS Days

DOS BASIC

History of Microsoft BASIC

In 1975, Microsoft wrote the first BASIC interpreter for the Intel 8080 microprocessor. BASIC, or Beginners All-purpose Symbolic Instruction Code, was the most popular high-level programming language during the late 70s and 80s, offering easy accessibility for non-programmers to be able to leverage the power of a computer.

The Microsoft family of BASIC interpreters includes the following products:

  1. BASIC-80 Interpreter. 8K, Extended, Disk, and Standalone Disk versions are available. Versions were available for the Intel 8080 and Zilog Z80 microprocessors using CP/M, ISIS-II, and TEKDOS operation systems. BASIC-80 enjoyed a long life with five major releases up to Release 5.0.
  2. BASIC-86 Interpreter. Microsoft BASIC for the Intel 8086. Came in Extended and Disk versions.
  3. BASIC Compiler. A compiled BASIC with the language features of BASIC-80.
  4. BASIC-86 and BASIC-69. Microsoft BASIC for the Motorola 6800 and 6809 microprocessors.
  5. 6502 BASIC. A 9K BASIC interpreter for the MOS 6502 microprocessor.

IBM's first PC, Model 5150, came with what was called "Cassette BASIC", an interpreter that was stored in ROM. If you started up a PC without a boot disk in the drive, it would initiate the code in the ROM to bring up the BASIC interpreter. Cassette BASIC allowed the machine to communicate (read and write) with a cassette recorder for storage and retrieval of data, hence its name.

When IBM moved away from cassettes, which proved unpopular anyway in business machines, and moved towards floppy disks in the Model 5160 (IBM PC-XT), they supplied two files BASIC.COM and BASICA.COM on its DOS disks. These versions provided BASIC commands to read and write BASIC programs to floppy disk. Both these files were very small because they didn't actually contain a full command interpreter of the language BASIC - they simply hooked into the Cassette BASIC that was still on ROM.

You could tell if you were in the original IBM Cassette BASIC, later "Disk" BASIC, or later BASICA, simply by reading the version number. Cassette BASIC had a 'C' prefix, Disk BASIC had a 'D' prefix, and BASICA had an 'A' prefix. For example, Version C1.1 is Cassette BASIC version 1.1.


Cassette BASIC on an IBM PC

BASICA (IBM Advanced BASIC) shipped from IBM PC-DOS 1.00 through to PC-DOS 3.30. It would not run on non-IBM PCs or even later IBMs for the aforementioned reason of the lack of the Cassette BASIC ROM chip. The language itself supported simple graphics commands, driving of the PC speaker for sound output, and event handling for communications and joystick movements. Early versions of BASICA did not support subdirectories, just as early versions of IBM PC-DOS didn't.

BASIC.COM was dropped after Microsoft MS-DOS 4.0, and BASICA.COM last appeared on IBM PC-DOS 5.02.

GW-BASIC

Around the time PC "compatibles" started appearing in 1983, Microsoft merged BASIC.COM and BASICA.COM to form GW-BASIC (some believe this stood for "Gee Wizz BASIC"), since these clones did not come with a BASIC ROM chip. GW-BASIC supported all the graphics modes and features of BASICA. It was originally written for Compaq, to be shipped with their PC-compatible computer.

Microsoft also sold a BASIC compiler, called BASCOM. This was compatible with GW-BASIC, and was designed for consumers who required more speed. BASCOM v1.0 came out around the time of MS-DOS 2.0, so at this time it didn't even support subdirectories.

GW-BASIC was still an interpreter only, not a compiler.

QBASIC

GW-BASIC was replaced in MS-DOS 5.00 with QBASIC which was the interpreter-version of Microsoft's QuickBASIC compiler. Think of this is a "lite" version.

For years Microsoft had received criticism for the clunky text editor EDLIN (a line editor), which had been essentially unchanged for years. They also wanted to update their old GW BASIC interpreter which had not been improved for years. Microsoft took the QuickBASIC IDE, stripped out the compiler, de-tuned the threaded p-code interpreter so it was slower than QuickBasic's QB.EXE (I suspect that QBASIC may be based on the QuickBASIC 4.0 QB.EXE rather than 4.5), added the '/EDITOR' command line option so QBASIC could double as a screen-based text editor, and released the result as QBASIC 1.0 with MS-DOS 5.0. For easy user interface, Microsoft created a tiny program EDIT.COM which executed QBASIC with the /EDITOR option, and passed it's own command line tail. This combo replaced GW BASIC and EDLIN with much improved products. When MS-DOS 6.0 was released in 1993, QBASIC version 1.1 came with it, and this continued through to MS-DOS 6.22.

QBASIC obviously lacks the QuickBASIC compiler, so it can only read, edit, debug, and run QBASIC source code. It also does not have QuickBASIC's Load, Unload, Create File, DOS Shell, Undo, nor some View, Search, Run, and Debug options, has no Calls function, or right-click options. It does come with mouse support and an extensive help file, and in fact this new editor doubled up as the help system for DOS commands when they were added in MS-DOS 5.00!

Microsoft QuickBASIC Versions for MS-DOS

Version Release Date Comments
1.00 18th August 1985 Released on 5.25" 360 KB floppy diskette, this was a new version of Microsoft's PC BASIC compiler (it was BASCOM relabelled as QuickBASIC - the file used to compile is called BASCOM.EXE). This version required 256 KB of RAM and DOS 2.0 or higher.
1.01 January 1986 Corrects some problems with v1.00. Does not include any major enhancements. This version was discovered to have problems compiling medium-sized programs.
1.02 6th February 1986 Corrects problems with v1.01. No major enhancements.
2.00 15th August 1986 Added a built-in editor environment. Support for dynamic numeric arrays using far heap (up to 64K each). Multiline block IF..THEN..ELSE..ENDIF statements. EGA graphics card support. BLOAD/BSAVE statements. Some programmers consider the built-in editor to be clunky. This version was released on 3.5" floppy disk on 15th August 1986, and on 5.25" floppy disk on 29th September 1986.
2.01 20th January 1987 Corrects problems discovered in Version 2.00. Addition of keyboard driver for Tandy 1000 and IBM EXTENDED keyboard.  3.5" disk version was also released, on 2nd February 1987.
3.00 13th April 1987 Comes with QB.EXE and QB87.EXE, giving QuickBasic both a compiler and an interpreter for quick testing turn around. The QB87.EXE program supports the math coprocessor. The editor is significantly improved over 2.0. The following additional new language statements are added: SELECT CASE, DO LOOP, and CONST.
The editor includes insert/overtype mode command. You can use the editor with SuperKey, Prokey, or Borland's Sidekick. Other features include a simple debugger to set breakpoints and watch variables. The editor can take advantage of 43-line mode on the Enhanced Graphics Adapter (EGA) card.
4.00 10th October 1987 Introduction of threaded p-code technology, which error-checks lines when typed and runs programs almost instantly in the editor environment. You can load multiple modules within the editing environment.
The following new features are added: Hercules graphics support. Recursive SUBprogram procedures. User-defined TYPE variables (TYPE...END TYPE). Huge dynamic arrays (larger than 64K). Fixed-length strings. CALLs to high-level languages (Microsoft C, FORTRAN, Pascal).
Enhanced debugger in editor allows setting breakpoints, watch points, and watch variables, plus MS CodeView compatibility. New on-line help for Basic syntax. Version 4.0is a favorite with some programmers, and some still the 4.0 manuals, because they are better than the 4.5 manual (much more detail, etc.).
4.00a 20th February 1988 QuickBASIC Version 4.00a was released with the Microsoft Basic Compiler Version 6.00. Version 4.00a provided corrections to problems discovered in Version 4.00. QuickBASIC Version 4.00a was never sold as a product separate from the Microsoft Basic Compiler 6.00.
4.00b 5th May 1988 Almost the same as Version 4.00a, except some memory-management and data-communications problems in Version 4.00a (and Version 4.00) are corrected. Version 4.00b is enhanced to support the AT&T and Olivetti high-resolution screens. A copy of QuickBASIC Version 4.00b is also distributed with the Microsoft BASIC Compiler Version 6.00b package.
4.5 21st October 1988 New user interface with complete context-sensitive help that contains the entire language reference manual. On-line help system also contains examples that can be cut and pasted directly into programs. 4.50 corrects some problems discovered in Version 4.00b. 4.5 was produced in both an early, boxed, two-manual version with 3.5" or 5.25" diskettes, or a later, single manual with diskettes inside the cover and shrinkwrap around the book.

Beyond QuickBASIC version 4.5, Microsoft released MS BASIC 7.00 as their new commercial product - this was branded Professional Development System, or PDS, and was released in September 1989. Version 7.1 of PDS was released in 1990. Both these versions allowed the developer to put strings into FAR memory (beyond the 64 KB data segment), which freed up a lot more memory for simple variables and thus allowing for much larger programs. These PDS packages also came bundled with the Programmer's Workbench, Microsoft CodeView debugger, Cross Reference tool and a Help file compiler.