Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Microsoft BASIC
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Licenses to home computer makers== After the initial success of Altair BASIC, Microsoft BASIC became the basis for a lucrative software licensing business, being ported to the majority of the numerous [[home computer|home]] and other [[personal computer]]s of the 1970s and especially the 1980s, and extended along the way. Contrary to the original Altair BASIC, most home computer BASICs are resident in [[read-only memory|ROM]], and thus are available on the machines at power-on in the form of the characteristic "<code>READY</code>". prompt. Hence, Microsoft's and other variants of BASIC constitute a significant and visible part of the [[user interface]] of many home computers' rudimentary [[operating system]]s. Microsoft used its [[DECsystem-20]] to produce assembly code for dozens of different computer systems and CPUs from the same [[source code]], using [[conditional compilation]].<ref name="goldklang20090821">{{Cite web |last=Goldklang |first=Ira |date=2009-08-21 |title=TRS-80 Computers: TRS-80 Model 4 β Ira Goldklang's TRS-80 Revived Site |url=https://www.trs-80.com/wordpress/models/model-4/ |access-date=2025-01-08 |website=Ira Goldklang's TRS-80 Revived |language=en-US}}</ref> By 1981, Microsoft BASIC was so popular that even companies that already had a BASIC licensed the language, such as [[IBM]] for its [[IBM Personal Computer|Personal Computer]],{{r|byte198311}} and [[Atari, Inc.|Atari]], which sold both [[Atari Microsoft BASIC]] and its own [[Atari BASIC]].<ref name="cherry198706">{{cite magazine |last=Cherry |first=Charles |date=June 1987 |title=Basic Bonanza |url=https://www.atarimagazines.com/v6n2/BASICBonanza.html |magazine=Antic |access-date=2019-08-04}}</ref> IBM's [[Philip Don Estridge|Don Estridge]] said, "Microsoft BASIC had hundreds of thousands of users around the world. How are you going to argue with that?"<ref name="byte198311">{{cite news |url=https://archive.org/stream/byte-magazine-1983-11/1983_11_BYTE_08-11_Inside_the_IBM_PC#page/n89/mode/2up |title=IBM's Estridge |work=BYTE |date=November 1983 |access-date=19 March 2016 |last1=Curran |first1=Lawrence J. |last2=Shuford |first2=Richard S. |pages=88β97}}</ref> Microsoft licensed similar versions to companies that competed with each other. After licensing [[IBM BASIC#IBM Advanced BASIC|IBM Advanced BASIC]] (BASICA) to IBM, for example, Microsoft licensed the compatible [[GW-BASIC]] to makers of [[IBM PC compatible|PC clones]], and sold copies to retail customers.<ref name="pc19870113">{{cite news |url=https://books.google.com/books?id=NZrPkWywRXgC&pg=PA325 |title=PC Tutor |work=PC |date=1987-01-13 |access-date=18 January 2015 |pages=325}}</ref> The company similarly licensed an [[Applesoft BASIC|Applesoft]]-compatible BASIC to [[VTech]] for its [[Laser 128]] [[List of Apple II clones|clone]].<ref name="grevstad198612">{{cite news |url=https://archive.org/stream/inCider_86-12#page/n59/mode/2up |title=Laser 128 / An Affordable Compatible |work=inCider |date=December 1986 |access-date=29 June 2014 |author=Grevstad, Eric |pages=58}}</ref> ===Extended BASIC-80=== <!-- Section header used as link target in redirects --> * [[Tangerine Microtan 65]] * [[Spectravideo]] [[SV-318]] and [[SV-328]] Known variants: * ''NCR Basic Plus 6''<!-- this spelling according to article, but also seen "NCR Basic +6" in other sources -->, released in the first quarter of 1977 for the [[NCR Corporation#NCR 7200|NCR 7200 model VI]] data-entry terminal.<ref>{{cite journal |title=NCR Mini, Micro Among Debuts Made on NRMA Convention Floor |date=1977-01-17 |journal=Computerworld |url=https://books.google.com/books?id=XEToBl0e2NIC |access-date=2014-06-04}} (Mentions an 8080-based cassette-based [[NCR 7200 model VI]] with NCR Basic Plus 6 (Extended BASIC) to be delivered in Q1/1977. The [[NCR 7200 model I]] and [[NCR 7200 model IV|model IV]] were already released in 1975-11, but did not came with BASIC.)</ref> The adaptation of Microsoft's Extended BASIC-80 was carried out by [[Marc McDonald]] in 1976/1977.<!-- but apparently still without FAT support, since the NCR 7200 model I, IV and VI did not have disk drives. --> ===Disk BASIC-80=== <!-- Section header used as link target in redirects --> [[MBASIC]] is available for [[CP/M|CP/M-80]] and [[ISIS (operating system)#ISIS-II|ISIS-II]]. Also available for [[Tektronix#1970β1985|TEKDOS]]. MBASIC is a stripped-down BASIC-80 with only hardware-neutral functions. However, due to the popularity of CP/M, the great majority of Z80 machines ran MBASIC, rather than a version customized for specific hardware (TRS-80 BASIC was one of the few exceptions). Microsoft's CP/M card for the Apple II included a modified version of MBASIC that incorporated some of the graphics commands from Applesoft BASIC, such as <code>HPLOT</code>, but the full command set is not supported. ===Standalone Disk BASIC-80=== <!-- Section header used as link target in redirects --> The first implementation to use an [[8-bit FAT|8-bit variant]] of the [[File Allocation Table]] (FAT) was a BASIC adaptation<ref group="nb" name="NB_NCR_FAT"/> for an [[Intel 8080]]-based [[NCR 7200]],<ref group="nb" name="NB_NCR_FAT"/> [[NCR 7520|7520]],<ref group="nb" name="NB_NCR_FAT"/> or [[NCR 7530|7530]]<ref group="nb" name="NB_NCR_FAT"/> data-entry terminal with 8-inch floppy disks in 1977/1978. ===BASIC compiler=== Microsoft offered a BASIC compiler for BASIC-80 under CP/M, by 1980 or before. The compiler executable was named BASCOM or BASCOM32.<ref>[http://www.bitsavers.org/pdf/microsoft/cpm/Microsoft_BASIC_Compiler_1980.pdf Microsoft BASIC Compiler 1980]</ref> ===TRS-80 Level II/III BASIC=== The TRS-80 computer was offered initially with an adaption of Li-Chen Wang's [[Tiny BASIC]] ([[Level I BASIC]]); within a few months this was replaced by a port of BASIC-80 which incorporated some of Level I BASIC's command set, particularly the commands for setting graphics characters. Level II BASIC contained some of the features of Extended BASIC, although due to the need to include Level I commands such as <code>SET</code> and <code>PSET</code>, other features such as descriptive error messages still had to be left out; these were subsequently added into TRS-80 Disk BASIC. The TRS-80 Model 4 had a newer disk-based BASIC that utilized the BASIC-80 5.x core, which included support for 40-character variable names. Thus the ability to crunch program lines (without spaces between keywords and arguments) was no longer possible as it had been in Level II. It was no longer necessary to reserve string space. New features included user defined functions (<code>DEF FN</code>) and access to TRSDOS 6 system functions via a <code>SYSTEM</code> keyword. A modified version published later by OS provider Logical Systems, in the LS-DOS Version 6.3 update, added single-letter access to BASIC control functions (like <code>LIST</code> and <code>EDIT</code>) and direct access to LS-DOS supervisor calls. The program edit environment was still line-oriented. The facility available in Level II to sort arrays (<code>CMD"O"</code>) was not available; programmers and users had to devise their own workarounds. ==={{anchor|Standalone Disk BASIC-86|BASIC-86}}BASIC-86=== The first implementation as a standalone disk-based language system was for [[Seattle Computer Products]] [[S-100 bus]] 8086 CPU card in 1979. It was utilizing an [[8-bit FAT]] file system. Microsoft also offered a version of Standalone BASIC-86 for SBC-86/12 for Intel's 8086 [[Intel SBC-86/12|Single Board Computer]] platform in 1980. ===Texas Instruments BASIC=== This is the version of BASIC used on the [[TI-99/4A]] home computer. Although very similar to Microsoft BASIC, it was not written by Microsoft as was widely rumored. According to TI Engineer H. Schuurman, "They (in the form of Bob Greenberg of Microsoft) were contracted to develop BASIC for the SR-70 (which is also sometimes referred to as the 99/7), but the BASIC for the 99/4 was developed in-house." TI-99/4 BASIC was based on Dartmouth BASIC and complies to the American National Standard for minimal BASIC (ANSI X3.60-1978). ==={{anchor|6502 BASIC}}6502 BASIC=== Microsoft ported BASIC-80 to the 6502 during the summer of 1976; it was mostly a straight port of the 8K version of BASIC-80 and included the same prompts asking for memory size and if the user wanted floating point functions enabled or not (having them active used an extra 135 bytes of memory). The earliest machines to use 6502 BASIC were the [[Ohio Scientific]] Model 500 and [[KIM-1]] in 1977.<ref name=pagetable1>{{cite web |last1=Steil |first1=Michael |title=Bill Gates' Personal Easter Eggs in 8 Bit BASIC |url=http://www.pagetable.com/?p=43 |website=pagetable.com |access-date=4 February 2015 |ref=bgates-eggs |date=30 September 2008}}</ref> 6502 BASIC included certain features from Extended BASIC such as user-defined functions and descriptive error messages, but omitted other features like double precision variables and the <code>PRINT</code> <code>USING</code> statement. As compensation for not having double precision variables, Microsoft included 40-bit floating point support instead of BASIC-80's 32-bit floating point and string allocation was dynamic (thus the user did not have to reserve string space like in BASIC-80). However, vendors could still request BASIC with 32-bit floating point for a slightly smaller [[memory footprint]]; as one example, Disk BASIC for the Atari 8-bits used 32-bit floating point rather than 40-bit.{{Citation needed|date=April 2022}} Standard features of the 9K version of Microsoft 6502 BASIC included: * <code>GET</code> statement to detect a key press. * Line crunching{{snd}} program lines do not require any spaces except between the line number and statement. * Only supported variable types are character string, single precision floating point, and 16-bit signed integer (saves space in arrays, otherwise useless and slower than floating point, as all calculations are done in floating point anyway). * Long variable names can be used, but only the first two characters are significant. * Dynamic string allocation. 6502 BASIC lacked a standardized set of commands for disk and printer output; these were up to the vendor to add and varied widely with each implementation. Later implementations of 6502 Basic (1983β) had many vendor specific improvements; for example later versions of Commodore BASIC had the following: * Disk commands (<code>DIRECTORY</code>, <code>DSAVE</code>, <code>DLOAD</code>, <code>BACKUP</code>, <code>HEADER</code>, <code>SCRATCH</code>, <code>COLLECT</code>, <code>DVERIFY</code>, <code>COPY</code>, <code>DELETE</code>, <code>RENAME</code>, etc.) * Graphics commands (<code>CIRCLE</code>, <code>DRAW</code>, <code>BOX</code>, <code>COLOR</code> (of background, border, etc.), <code>PAINT</code>, <code>SCALE</code>) * Graphics block copy and logical operation with the existing graphical screen (<code>SSHAPE</code> and <code>GSHAPE</code> with <code>OR</code>, <code>AND</code>, <code>XOR</code>, etc.) * Sprite definition, displaying and animation commands on C128, even saving sprites to binaries * Sound commands (<code>VOL</code>, <code>SOUND</code>), later on at C=128 Music commands (ADSR and SID filter programming (<code>ENVELOPE</code> and <code>FILTER</code>), <code>PLAY</code>, <code>TEMPO</code> commands) * Signs of more structured programming: <code>IF</code>β<code>THEN</code>β<code>ELSE</code>, <code>DO</code>β<code>LOOP</code>β<code>WHILE</code>/<code>UNTIL</code>β<code>EXIT</code>. * Extended I/O commands for special features: <code>JOY</code>, function keys * Debugging commands: <code>STOP</code>, <code>CONT</code>, <code>TRON</code>, <code>TROFF</code>, <code>RESUME</code> * Extended handling of character screen: <code>WINDOW</code> * Support easier program development: <code>RENUMBER</code>, <code>NEW</code>, <code>MONITOR</code>, <code>RREG</code> ==={{anchor|BASIC-68|BASIC-69}}BASIC-68 and BASIC-69=== Microsoft catalogs from the 1980s also showed the availability of BASIC-68 and BASIC-69 for the [[Motorola 6800]] and [[Motorola 6809|6809]] microprocessors respectively, running the [[FLEX (operating system)|FLEX operating system]]s, and also mention OEM versions for [[PerkinElmer|Perkin-Elmer]], [[Ohio Nuclear]], [[Pertec]] and [[Societe Occitane d'Electronique]] systems.<ref>[http://archive.computerhistory.org/resources/access/text/2009/12/102665404.05.01.lg.pdf "MICROSOFT Software Catalog"], c1980, Computer History Museum</ref> It seems likely this is what is also the basis for the Microsoft/Epson BASIC in the [[Epson HX-20]] portable computer, which has two Hitachi 6301 CPUs, which are essentially a "souped up" 6801. Most of the core features in BASIC-68 and BASIC-69 were copied directly from BASIC-80.{{Original research inline|date=February 2019}} BASIC-69 was notably also licensed to Tandy, where it formed the nucleus of [[Color BASIC]] on the [[TRS-80 Color Computer]].{{Citation needed|date=February 2019}} Not to be confused with [[BASIC09]], a very different BASIC created by [[Microware]] as the main language for its [[OS-9]], the other OS available on the Color Computer (Microware also wrote version 2.0 of Extended Color BASIC when Microsoft refused to do it). Microsoft BASIC was also included in the Dragon 32 / 64 computers that were built in Wales and enjoyed some limited success in the UK home computer market in the early 1980s. Dragon computers were somewhat compatible with the Tandy TRS-80, as they were built on very similar hardware. ===MSX=== Microsoft produced a ROM-based [[MSX BASIC]] for use in [[MSX|MSX home computers]], which used a Z80 processor. This version supported the graphics and sound systems of the MSX computers; some variants also had support for disk drives.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)