Content deleted Content added
→Other uses: updated spelling |
|||
(50 intermediate revisions by 36 users not shown) | |||
Line 1:
{{Short description|Dialect of the BASIC programming language}}
'''MBASIC''' is the [[Microsoft BASIC|'''M'''icrosoft '''BASIC''']] implementation of [[BASIC]] for the [[CP/M]] operating system. MBASIC is a descendant of the original [[Altair BASIC]] interpreters that were among Microsoft's first products. MBASIC was one of the two versions of BASIC bundled with the [[Osborne 1]] computer. The name "MBASIC" is derived from the disk file name of the BASIC interpreter. ▼
{{Infobox programming language
| name = MBASIC
| year =
| designer = [[Microsoft]]
| developer = [[Microsoft]]
| latest release version =
| latest release date =
| implementations =
| influenced_by = [[BASIC]]
| influenced =
| typing =
| dialects =
| paradigm = [[imperative programming|imperative]]
| logo =
| operating_system = [[CP/M]]
| license =
| website = {{url|www.microsoft.com}}
| file_ext =
}}
▲'''MBASIC''' is the [[Microsoft BASIC|'''M'''icrosoft '''BASIC''']] implementation of [[BASIC]] for the [[CP/M]] operating system. MBASIC is a descendant of the original [[Altair BASIC]] interpreters that were among Microsoft's first products. MBASIC was one of the two versions of BASIC bundled with the [[Osborne 1]] computer. The name "MBASIC" is derived from the disk file name MBASIC.COM of the BASIC interpreter. MBASIC, like its predecessor family of 8-bit interpreters [[Microsoft BASIC]], were heavily inspired by [[Digital Equipment Corporation]] [[PDP-10]]'s [[BASIC-PLUS]].
== Environment ==
[[File:MBasic 5.21.jpg|thumb|MBasic 5.21 running on a Z80 CP/M system displayed on a monochrome monitor typical for that time]]
MBASIC version 5 required a CP/M system with at least 28
Unlike versions of [[Microsoft BASIC-80]] that were customized by [[home computer]] manufacturers to use the particular hardware features of the computer, MBASIC relied only on the CP/M operating system calls for all input and output. Only the CP/M console (screen and keyboard), [[line printer]], and disk devices were available.
MBASIC in the uncustomized form had no functions for [[Computer graphics|graphics]], color, joysticks, mice, [[serial port|serial communications]], [[Ethernet|networking]], sound, or even a [[real-time clock]] function. MBASIC did not fully support the features of the host CP/M operating system, for example, it did not support CP/M's user areas for organizing files on a diskette. Since CP/M systems were typically single-user and stand alone, there was no provision for file or record locking, or any form of [[computer multitasking|multitasking]]. Apart from these limitations, MBASIC was considered at the time to be a powerful and useful implementation of BASIC.
== Features ==
=== Language system ===
MBASIC is an [[
Program text, [[Variable (computer science)|variables]], [[disk
A particular advantage of MBASIC was the full-text error messages provided for syntax and run-time errors. MBASIC also had a "trace" function that displayed line numbers as they were executed. While this occupied the same screen space as normal program output, it was useful for detecting conditions such as [[endless loop]]s.
=== Files and input/output ===
Data could be read and stored to disk as either sequential files (delimited by the CP/M convention of [[carriage return|CR]]/[[line feed|LF]] at the end of each line) or else as fixed-record-length random access files, which, given a sufficiently determined programmer, could be used to perform database-type record manipulation. The
=== Variables and data types ===
MBASIC supported the following data types:
* 8-bit character data, in strings of length 0 to 255 characters;
* 16-bit
* 32-bit [[floating point]] (single precision), equivalent to six decimal digits, with a two-digit exponent;
* 64-bit floating point (double precision), equivalent to sixteen decimal digits, with a two-digit exponent.
String operators included substring selection, concatenation, assignment, and testing for equality.
Arrays of the above types were allowed with up to 7 dimensions, but no functions
Early versions of
=== Program flow control ===
Program flow control in MBASIC was controlled by <code> IF...THEN...ELSE... </code> conditional tests, <code> WHILE...WEND </code> loops, and <code> GOTO </code> and <code> GOSUB </code> instructions. No <code> CASE </code> statement was available, although an <code> ON...GOTO... </code>(computed GOTO) provided multi-way branches. Subroutines had no parameters and all variables were global. MBASIC did not make [[structured programming]] mandatory for programmers and it was easy to write [[spaghetti code]].
== PEEKs, POKEs, and user functions ==
For more complex operations, MBASIC allowed user-defined functions that could be called from a BASIC program. These were typically placed in a reserved area of memory, or POKEd into string constants, as a series of [[Machine language|machine codes]] (
Any MBASIC programs that made use of <code>PEEK</code> and <code>POKE</code>, and of
== Successors to MBASIC ==
Besides Microsoft's BASIC-80 for CP/M, a variant of MBASIC was also available as for the [[Intel ISIS-II|ISIS-II]] operating system.
Microsoft also sold a CP/M BASIC [[compiler]] (known as BASCOM) which used a similar source language to MBASIC. A program debugged under MBASIC could be compiled with BASCOM. Since program text was no longer in memory and the run-time elements of the compiler were smaller than the interpreter, more memory was available for user data. Speed of program execution increased by 8 to 10 fold. ▼
[[MSX BASIC|MSX-BASIC]] is also a well known successor of MBASIC, featuring several extensions specific to the [[MSX]] machines.
All the functions of CP/M MBASIC were available in the IBM PC disk-based [[BASICA]] or [[GWBASIC]] which made migration of programs from CP/M systems to PC-compatibles possible. Typically screen formatting escape sequences put into the CP/M version would be replaced with the cursor positioning commands found in the PC versions of BASIC, otherwise little rewriting would be needed.▼
▲All the functions of CP/M MBASIC were available in the IBM PC disk-based [[BASICA]] or [[GWBASIC]] which made migration of programs from CP/M systems to PC-compatibles possible. The tokens used to represent keywords were different, so CP/M programs had to be saved in ASCII source form. Typically screen formatting escape sequences put into the CP/M version would be replaced with the cursor positioning commands found in the PC versions of BASIC, otherwise little rewriting would be needed.
== BASCOM ==
▲Microsoft
Developers welcomed BASCOM as an alternative to the popular but slow and clumsy [[CBASIC]]. Unlike CBASIC, BASCOM did not need a [[preprocessor]] for MBASIC source code so could be debugged interactively.<ref name="iw19800818">{{Cite magazine |date=1980-08-18 |title=Editorial |url=https://books.google.com/books?id=az4EAAAAMBAJ&pg=PT47 |magazine=InfoWorld |page=8}}</ref> While approving of its superior edit-compile-run-debug loop compared to CBASIC, and stating that binaries ran far faster, [[Jerry Pournelle]] in December 1980 denounced Microsoft's requirement of a 9% royalty for each binary copy<ref name="pournelle198012">{{cite news | url=https://archive.org/stream/byte-magazine-1980-12/1980_12_BYTE_05-12_Adventure#page/n223/mode/2up | title=BASIC, Computer Languages, and Computer Adventures | work=BYTE | date=December 1980 | access-date=18 October 2013 | author=Pournelle, Jerry | pages=222}}</ref> and $40 for hardware-software combinations. The company also reserved the right to audit developers' financial records. Because authors' typical royalty rates for software was 10-25%, ''[[InfoWorld]]'' in 1980 stated that BASCOM's additional 9% royalty rate "could make software development downright unprofitable", concluding that "Microsoft has the technical solution [to CBASIC's flaws], but not the economic one".<ref name="iw19800818"/>
== Importance of MBASIC ==
MBASIC was an important tool during the era of 8-bit CP/M computers. Skilled users could write routines in MBASIC to automate tasks that in modern-day systems would be performed by powerful application program commands or scripting languages. Exchange of useful MBASIC programs was a common function of computer [[users' group]]s. [[Type-in program|Keying in long BASIC listings]] from a magazine article was one way of "bootstrapping" software into a new CP/M system. At least one compiler for a high-level language was written in MBASIC, and many small games and utility programs ranging from a few lines to a few thousand lines of code were written.
== Other uses ==
Line 60 ⟶ 89:
* ''BASIC 80 Reference Manual'', Microsoft Corporation, no date
{{Refend}}
{{BASIC}}
[[Category:CP/M software]]
[[Category:Discontinued Microsoft BASICs]]
[[Category:BASIC programming language family]]
[[Category:Microsoft programming languages]]
|