BASIC programming language

Definition of the acronym
Beginner's All-purpose Symbolic Instruction Code
Apparently like QuickBASIC, but Open Source. From my initial readings, it seems it does not come with an IDE, but rather is meant to be a compiler that makes executabels for MS Windows, DOS, Linux, and Xbox. (That list of platforms comes from the FreeBASIC page on Wikipedia.) There is a GUI IDE, FBIDE, called the "Premier IDE for FreeBASIC"

This has been released as a public download licensed for use with Windows 95: OLDDOS.EXE from Microsoft includes QBasic 1.1 (and HELP.HLP from MS-DOS 6.22, and HELP.COM, but not EDIT.COM), licensed for use with Windows 95. Local copy is available from the MS-DOS page.

Although this only came with MS-DOS 5.0 and newer, an old Microsoft copyright page (as archived by the Wayback Machine) has a section for QBASIC.EXE and QBASIC.HLP which says “any machine with a valid licensed copy of MS-DOS (or Windows 95/98) is licensed to include a version of QBASIC.” Although Windows Millenium Edition isn't mentioned in the 2003 version of this page, the fact that Windows 95/98 was mentioned in parenthesis suggests that the inclusion of those operating systems is meant to be assumed when refrencing MS-DOS. Windows ME also sat on top of DOS like Windows 98 did, and its standard bootup file (COMMAND.COM) refers to itself as “MS-DOS Version 8”. On top of that logic, QBASIC.EXE comes on the WinME CD (in \Tools\OldMSDOS\.)

This program came with the later versions of MS-DOS, as well as at least some versions of OS/2. It is similar to QuickBASIC, but trimmed down (lacking some features). One key feature it does not have is the ability to compile BASIC programs into *.EXE files that any MS-DOS and compatible system can run (without the need for an executable that reads the QBASIC code).

The QBASIC.EXE executable was also the underlying technology of a couple of other programs. Running it with a parameter of the first three to seven characters of /EDITOR would cause it to identify itself as MS-DOS Editor (version 1.1, if in Win ME, or maybe older with some versions?). Running it with the parameter /QHELP would cause it to load HELP.HLP from the path and then identify itself as MS-DOS Help (Version 1.1, if in Win ME, perhaps older with some versions?).

See: MS-DOS downloads: QBASIC section. Some QBASIC files came with some versions of MS-DOS and not other versions of MS-DOS. They may be available from the MS-DOS supplemental disks.


There have been multiple versions of QuickBASIC, including at least one version for the Mac platform. The last version was QuickBASIC 4.5 for MS-DOS. There have not been any Windows versions (although its successor, Visual Basic, has been made for Windows.) This looks and feels very similar to QBASIC, but it has more features, such as creating stand-alone *.EXE files for DOS that do not require a separate file to interpret the BASIC commands.

Q35241 Using Dual Video Display Cards and Monitors with QuickBASIC (applies also to Microsoft BASIC Compiler 6.0, 6.0b, and Microsoft BASIC Professional Development System 7.0).

Visual BASIC for DOS
... "Visual BASIC for DOS is newer and fancier than QBASIC & Quick BASIC." (per vers) "Visual Basic 1.0 for DOS was released in September 1992. The language itself was not quite compatible with Visual Basic for Windows, as it was actually the next version of Microsoft's DOS-based BASIC compilers, QuickBASIC and BASIC Professional Development System." (per Wikipedia page on Visual BASIC)
Misc notes for these compilers

These notes may be common to multiple BASIC versions by Microsoft.

Q58567: “Any EGA/VGA Video RAM Above 256K Not Usable in Compiled Basic” applies to QuickBasic, Microsoft BASIC Compiler, Microsoft BASIC Professional Development System 7.0. “These compilers are compatible with video cards that conform to the IBM standard. Accessing video RAM above 256K is not part of this standard.”

Q48058: QuickBASIC optimizes graphics commands and may cause things to not look symetrical, different from GW-Basic.

From MSLFiles:
July 12 S12420 HMAKE100.EXE HELPMAKE for QuickBASIC 4.50
July 12 S12416 NOCOM450.EXE NOCOM.OBJ for QuickBASIC 4.50
July 12 S12320 QCARDS.EXE QuickBASIC 4.50 QCARDS.BAS Tutorial


This version of BASIC was a fairly well known version.

Restoring/Using a program after NEW or LOAD

One thing which is probably useless to know in most cases, but could be very nice to know if needed, is that the NEW command removed easy access to just one copy of a program in memory. It could be possible to restore the program, or most of a program (perhaps all except for the first line or two), by using appropriate commands.

There are a few references that have been found over the years. At the time of this writing, none of this code has been recently tested by this text's author, so perform tests to determine the accuracy before relying on it.

Also, even if these techniques do work as described, there might not be any available solid details that have been identified (at the time of this writing) that thoroughly explain how these techniques work.

Some details may be in page about BASIC's PEEK and POKE commands. (See: "B. BASIC's Storage Area")

GWBASIC unprotecting provided a method of listing code. This involved using the LOAD command to load a program, then typing the NEW command (and pressing return). Then press zero, apostrophe, and hold the Alt key. With the alt key held, press 1 on the numpad, and then 5 on the numpad. Then release the Alt key. Then press return. This may cause the LIST command to be able to show the file (and the SAVE command). Actually, the first small bit (perhaps about two lines / 24 bytes) of the file may be corrupted, but most of the source code will be recovered.

The following input in DOS's “DEBUG” command could also perform similar type of results:

E100 FF 1B

That apparently would create a file named UNPROT.BAS (which is what shows up after the letter N), consisting of two bytes, 0xFF1B (which are values provided in the first line). If GWBASIC were to try to LOAD this as a BASIC file, the result would not be complete destruction of a previously loaded file. (Some programs could be loaded by GWBASIC, but then GWBASIC would not LIST the contents of those programs unless loading such a file, or doing the 0'(0x15) thing described earlier.

Google Groups cache: Usenet comp.lang.basic.misc page about BASIC provided source code to do a similar thing:

1 rem ***** Unlock.bas ******
10 open "R", #1,"unlock.bas",1
20 field #1,1 as Char$
30 for i=1 to 5
40 read a:lset Char$=chr$(a):put #1,i
50 next i
60 close #1:new
70 data 255,205,10,1,0

Interestingly, the line 60 has a command to run NEW.


Perhaps built into some ROM versions, or expected to use BASIC from ROM?

Some commands to know about are SYSTEM (quits BASIC to go back to the operating system) and SHELL (runs a sub-shell).

Visual BASIC
Visual Basic for DOS
See VB for DOS's section nearby coverage on this page about QuickBASIC/QBASIC.
Visual Basic for Windows
Downloadable version(s)
Visual Basic for Windows did not have a freely downloadable release until the Visual Basic 2005 Express Edition. This required Windows 2000, XP, or later.
Service Packs/Fixes
Service Packs

Visual Basic 6 had quite a few service packs. The Software Development page has a section for multi-language products like Visual Studio where some update information can be found, including Service Pack 5. Then Service Pack 6 can be obtained, along with the Merge Modules update, from the C Programming Page (Visual C++ section), since these updates are common for both of these programming languages.

Visual Basic 6.0 Service Pack 6 ("One-File" release) URL referenced in lengthier URL which was redirected to from download redirector found on the Visual Basic 6.0 Service Pack 6 (One-File release) Download/Info page which calls this version "NETFX3.0_0407". Service Pack 6 for Visual Basic 6.0 (Multi-Part Download) Info page

For the "Merge Modules for Service Pack 6 for Visual Basic 6.0 and Visual C++ 6.0", see the section about Visual C++.

Microsoft Visual Basic 6.0 Common Controls (Fix)
KB896559 tells that Windows Common Controls 5.0 is Comctl32.ocx and Windows Common Controls 6.0 is Mscomctl.ocx. Mscomctl.ocx (from hotfox 926287) could cause an error message when reordering columns: The included is included to fix that. Microsoft Visual Basic 6.0 Common Controls (Fix) (English) referred to by lengthier URL redirected to from the redirection page visited when English is selected from a Download/Info page.
Code Advisor for VB 6.0 (requires Win98 or later and IE 6.0 or later)
"Note that the Code Advisor relies on the VBScript and MSXML components distributed in Internet Explorer 6.0." "If you are programming in Visual Basic 6.0 and planning to move to Visual Basic .NET, then the Visual Basic 6.0 Code Advisor is for you." "The Code Advisor for Visual Basic 6 is an add-in used to review your code to ensure that it meets predetermined coding standards. The coding standards are based on best practices developed by Microsoft to produce robust and easy-to-maintain code." Code Advisor for VB 6.0 (English) URL found in lengthier URL redirected to from redirect page visted when English is selected from the Code Advisor for VB 6.0 (info page)
Other fix files
Key support files (VB Runtime DLL)
Visual Basic can make executables that require runtime files. Sometimes newer runtime files would work in place of an older version if the VBRUN###.DLL was renamed to reflect the earlier version. In case they don't, multiple versions are provided here.
Code examples
DDS-BASIC Interpreter (Version 1.00)

Basically free for non-commercial use, this entry in the 7th International Obfuscated C Code Contest, which is dated from 1990, is described as a "basic interpreter, heavily compressed". The dds entry from the following year, the 8th International Obfuscated C Code Contest, is described as "basic compiler, heavily compressed." (The latter entry requires a C compiler called cc to do its thing.) This can be obtained from the IOCCC Winners (page with spoilers/descriptions) (North American mirror). All the files needed for the dds releases are available by downloading them individually from the IOCCC website, or by obtaining the *.tgz packages which have the same files (and more). The only files from the *.tgz packages that are listed on the website by the dds program are the dd* co* and *.BAS files, plus the (the only ans* file, and only *.mk file other than co*) from the 1991 release: The 1990 release did not have in the list of files related to dds.

The files can be obtained individually or they can be obtained by getting the year's (For the 1990 release, the files downloaded individually from the IOCCC page by dds are the same as the dd*, *.BAS, and files from the *.tgz files containing all the "goodies" from that year. For the 1991 release, the same is true except that it also has an that is identical.)

Author's FAQ has a FAQ:

Did you ever do any additional work on the DDS-BASIC interpreter/compiler?
No, I consider IOCCC submissions a form of art. They are not to be "improved".
The FAQ also refers to a book, which I found cheaper at cafepress than what I found used online elsewhere, although that version published by Libes, Inc. does not say (from what I could see) on the book cover that a disk is included. (The version published by John Wiley & Sons does.)

Power BASIC, Small BASIC, more BASIC versions
Here is content from an older page I started.
BASIC in system ROM code
There was a "ROM-resident BASIC included with early models of IBM's PC" (as per Wikipedia's BASICA page (also referenced on Wikipedia's GW-BASIC page), and also a BASIC interpretor built into the Apple 2 (at least some models, including the Apple //e, and perhaps all models?). For the former, Wikipedia's BASICA page says "the ROM BASIC itself runs when nothing is loaded when booting". For the latter, Apple 2 systems could get the BASIC prompt by holding Control and pressing Reset shortly after a reboot, before information is loaded from disk. In both cases, commands did not exist to LOAD or SAVE code from or to a disk, but there were alternate BASIC versions available for the computer that could be run from the disk, instead of from ROM, and these alternate BASIC environments did support SAVE and LOAD commands. Wikipedia's page says Microsoft BASICA "does not run on non-IBM PCs and even on later IBM models, since those lack the requisite ROM BASIC." However, GW-BASIC was developed by Microsoft, originally for Compaq, and this did not require the BASIC that was stored on the ROM.
Visual Basic
Microsoft's result of creating BASIC with some real object-oriented design. A web browser scripting language, VBScript, is supported in MS IE (as well as the more portable JavaScript), and would seem to be named after this language. Often executables require Runtime downloads. An Express Edition has been made which can be downloaded from Microsoft, and which requires newer versions of Windows.
Some old shareware that was touted as an easy way to make Windows 3.1 code.
One list is: BASIC compilers that are free