MBASIC - MBASIC

MBASIC
Paradigma Imperativ
Entworfen von Microsoft
Entwickler Microsoft
Betriebssystem CP / M.
Webseite www .microsoft .com
Beeinflusst von
BASIC

MBASIC ist die M icrosoft BASIC Umsetzung BASIC für den CP / M - Betriebssystem. MBASIC ist ein Nachkomme der ursprünglichen Altair BASIC- Interpreter, die zu den ersten Produkten von Microsoft gehörten. MBASIC war eine der beiden Versionen von BASIC, die im Lieferumfang des Osborne 1- Computers enthalten waren. Der Name "MBASIC" leitet sich vom Datenträgernamen MBASIC.COM des BASIC-Interpreters ab.

Umgebung

MBasic 5.21 läuft auf einem Z80 CP / M-System und wird auf einem für diese Zeit typischen Monochrom-Monitor angezeigt.

MBASIC Version 5 erforderte ein CP / M-System mit mindestens 28 kB Arbeitsspeicher (RAM) und mindestens einem Diskettenlaufwerk.

Im Gegensatz zu Versionen von Microsoft BASIC-80 , die von Herstellern von Heimcomputern angepasst wurden , um die besonderen Hardwarefunktionen des Computers zu nutzen, stützte sich MBASIC nur auf die CP / M-Betriebssystemaufrufe für alle Ein- und Ausgaben. Es waren nur die CP / M-Konsole (Bildschirm und Tastatur), der Zeilendrucker und die Festplattengeräte verfügbar.

MBASIC in der nicht angepassten Form hatte keine Funktionen für Grafiken , Farben, Joysticks, Mäuse, serielle Kommunikation , Netzwerke , Sound oder sogar eine Echtzeituhrfunktion. MBASIC hat die Funktionen des Host-CP / M-Betriebssystems nicht vollständig unterstützt. Beispielsweise wurden die Benutzerbereiche von CP / M zum Organisieren von Dateien auf einer Diskette nicht unterstützt. Da CP / M-Systeme in der Regel Einzelbenutzer waren und eigenständig waren, gab es keine Vorkehrungen für das Sperren von Dateien oder Datensätzen oder irgendeine Form von Multitasking . Abgesehen von diesen Einschränkungen wurde MBASIC zu dieser Zeit als leistungsstarke und nützliche Implementierung von BASIC angesehen.

Eigenschaften

Sprachsystem

MBASIC ist ein Dolmetscher . Der Programmquelltext wurde in tokenisierter Form im Speicher gespeichert , wobei die BASIC-Schlüsselwörter durch Ein-Byte-Token ersetzt wurden, wodurch Speicherplatz gespart und die Ausführung beschleunigt wurde. Jede Zeile, der eine Zeilennummer vorangestellt ist, wurde als Programmtext gespeichert. BASIC-Anweisungen, denen keine Zeilennummer vorangestellt ist, wurden sofort als Befehle ausgeführt. Programme können zur Bearbeitung auf dem Bildschirm aufgelistet oder entweder in einem komprimierten Binärformat oder als einfacher ASCII- Text auf der Festplatte gespeichert werden . Jede Quellzeile wurde mit einer Nummer identifiziert, die als Ziel einer GOTO- oder GOSUB- Übertragung verwendet werden konnte. Es wurden nur Zeilenbearbeitungsbefehle bereitgestellt. Es war oft vorteilhaft, ein Programm als einfachen Text zu speichern und mit einem voll ausgestatteten Editor zu bearbeiten.

Programmtext, Variablen, Festplattenpuffer und das CP / M-Betriebssystem selbst mussten sich den 64-Kilobyte-Adressraum des 8080-Prozessors teilen. Normalerweise steht beim ersten Start von MBASIC weniger als 32 kB Speicher für Programme und Daten zur Verfügung, selbst auf einem Computer, der mit vollen 64 Kilobyte RAM ausgestattet ist. Kommentarzeilen, denen das REM Schlüsselwort oder ein Apostroph vorangestellt ist , könnten in den Programmtext eingefügt werden, beanspruchen jedoch wertvollen Speicherplatz, was BASIC-Benutzer davon abhält, ihren Code vollständig zu dokumentieren. Um größere und komplexere Programme ausführen zu können, unterstützten spätere Versionen von MBASIC Funktionen, mit denen Teile des Programmtextes programmgesteuert eingelesen und ausgeführt werden konnten (" CHAIN " und MERGE Anweisungen). Es wurde keine Unterstützung für die Ausführung von "Shell" -Befehlen bereitgestellt, obwohl diese Funktionalität von einem bestimmten Programmierer dupliziert werden konnte.

Ein besonderer Vorteil von MBASIC waren die Volltextfehlermeldungen für Syntax- und Laufzeitfehler. MBASIC hatte auch eine "Trace" -Funktion, die Zeilennummern während der Ausführung anzeigte. Während dies den gleichen Bildschirmbereich wie die normale Programmausgabe einnahm, war es nützlich, um Bedingungen wie Endlosschleifen zu erkennen .

Dateien und Eingabe / Ausgabe

Daten könnten entweder als sequentielle Dateien (begrenzt durch die CP / M-Konvention von CR / LF am Ende jeder Zeile) oder als Direktzugriffsdateien mit fester Datensatzlänge gelesen und auf der Festplatte gespeichert werden, was bei einem ausreichend bestimmten Programmierer der Fall ist , könnte verwendet werden, um eine Datensatzmanipulation vom Datenbanktyp durchzuführen. Das Microsoft-Binärformat für Gleitkommazahlen war proprietär für die Implementierung, sodass Daten nur mit ASCII-Textdarstellung oder mit umfangreicher Programmierung zur Konvertierung des Binärformats mit anderen Programmen ausgetauscht werden konnten.

Variablen und Datentypen

MBASIC unterstützte die folgenden Datentypen:

  • 8-Bit-Zeichendaten in Zeichenfolgen mit einer Länge von 0 bis 255 Zeichen;
  • 16-Bit-Ganzzahlen;
  • 32-Bit- Gleitkomma (einfache Genauigkeit), entsprechend sechs Dezimalstellen, mit einem zweistelligen Exponenten;
  • 64-Bit-Gleitkomma (doppelte Genauigkeit), entsprechend sechzehn Dezimalstellen, mit einem zweistelligen Exponenten.

Zu den Zeichenfolgenoperatoren gehörten die Auswahl von Teilzeichenfolgen, die Verkettung, die Zuweisung und das Testen auf Gleichheit.

Arrays der oben genannten Typen waren mit bis zu 7 Dimensionen zulässig, aber keine Funktionen oder Operatoren arbeiteten an Arrays. Beispielsweise gab es keine Zuordnung von Arrays. Im Gegensatz zu einigen anderen BASIC-Implementierungen dieser Zeit bot MBASIC keine Unterstützung für Matrixoperationen , komplexe Zahlen oder einen Dezimaldatentyp (BCD) für Finanzberechnungen. Alle Gleitkommaoperationen wurden in Software ausgeführt, da typische CP / M-Systeme keine Gleitkomma-Hardware hatten . Die eingebauten mathematischen Funktionen (Sinus, Cosinus, Tangens, natürliches Log, Exponential, Quadratwurzel) lieferten nur Ergebnisse mit einfacher Genauigkeit. Ein Software- Pseudozufallszahlengenerator wurde bereitgestellt; Dies beruhte darauf, dass der Benutzer eine Startnummer eingab, um eine Folge von Zahlen zu erhalten, die für Spiele und einige Simulationen nützlich waren. MBASIC hat das LET Schlüsselwort für Zuweisungsanweisungen zugelassen, aber nicht benötigt .

Frühere Versionen von BASIC auf Mikrocomputern waren berüchtigt für ein- oder zweistellige Variablennamen, was es schwierig machte, die Bedeutung von Variablen in komplexen Programmen abzurufen. MBASIC Version 5 erlaubte Bezeichner mit einer Länge von bis zu 40 Zeichen, wodurch Programmierer Variablen lesbare Namen geben konnten.

Programmablaufsteuerung

Die Programmflusssteuerung in MBASIC wurde durch IF...THEN...ELSE... bedingte Tests, WHILE...WEND Schleifen GOTO und GOSUB Anweisungen gesteuert . Es CASE war keine Anweisung verfügbar, obwohl ein ON...GOTO... (berechnetes GOTO) Mehrwegezweige bereitstellte. Unterprogramme hatten keine Parameter und alle Variablen waren global. MBASIC machte die strukturierte Programmierung für Programmierer nicht obligatorisch und es war einfach, Spaghetti-Code zu schreiben .

PEEKs, POKEs und Benutzerfunktionen

Keine Diskussion über BASICs auf den 8-Bit-Computern der späten 70er und frühen 80er Jahre wäre vollständig, ohne die Bedeutung der PEEK- und POKE- Funktionen für das direkte Lesen und Schreiben in den Speicher zu erwähnen . Da diese Systeme normalerweise keinen Speicherschutz hatten , konnte ein Programmierer auf Teile des Betriebssystems oder auf Funktionen zugreifen, die sonst nicht verfügbar wären. Dies bot auch Benutzerprogrammen die Möglichkeit, das System aufzuhängen. Beispielsweise kann ein CP / M-Programmierer eine POKE Funktion verwenden, mit der BASIC das Konsolengerät auf die serielle Schnittstelle umschalten kann, wenn das System- BIOS dies unterstützt. Bei Maschinen mit Echtzeituhren wurde PEEK möglicherweise eine Reihe von Anweisungen verwendet, um auf die Uhrzeit zuzugreifen.

Für komplexere Operationen erlaubte MBASIC benutzerdefinierte Funktionen, die von einem BASIC-Programm aufgerufen werden konnten. Diese wurden normalerweise in einem reservierten Speicherbereich oder POKEd in Zeichenfolgenkonstanten als eine Reihe von Maschinencodes ( Operationscodes) abgelegt . MBASIC lieferte auch Hardware INP und OUT Anweisungen, die direkt in die 8080-Hardware-Eingabe- / Ausgabeports gelesen und geschrieben wurden. Dies könnte zur Steuerung von Peripheriegeräten verwendet werden, obwohl auf mindestens einem gemeinsamen CP / M-System, dem Osborne 1, alle E / A-Anweisungen für die Verwendung durch das System vorbelegt wurden.

MBASIC-Programme, die Benutzerfunktionen von PEEK und POKE und von Maschinencode verwendeten , waren ohne Änderungen nicht zwischen Maschinen portierbar.

Nachfolger von MBASIC

Neben Microsoft BASIC-80 für CP / M war auch eine Variante von MBASIC für das Betriebssystem ISIS-II verfügbar.

MSX-BASIC ist auch ein bekannter Nachfolger von MBASIC und verfügt über mehrere Erweiterungen, die für die MSX- Maschinen spezifisch sind.

Alle Funktionen von CP / M MBASIC waren in der IBM PC-Festplatten-basierten BASICA oder GWBASIC verfügbar, die die Migration von Programmen von CP / M-Systemen auf PC-kompatible Geräte ermöglichten. Die zur Darstellung von Schlüsselwörtern verwendeten Token waren unterschiedlich, sodass CP / M-Programme in ASCII-Quellform gespeichert werden mussten. In der Regel werden Escape-Sequenzen für die Bildschirmformatierung, die in die CP / M-Version eingefügt werden, durch die Cursorpositionierungsbefehle ersetzt, die in den PC-Versionen von BASIC enthalten sind. Andernfalls wäre nur ein geringes Umschreiben erforderlich.

BASCOM

Microsoft verkaufte einen CP / M BASIC- Compiler (bekannt als BASCOM ), der eine ähnliche Quellsprache wie MBASIC verwendete. Ein unter MBASIC debuggtes Programm könnte mit BASCOM kompiliert werden. Da sich der Programmtext nicht mehr im Speicher befand und die Laufzeitelemente des Compilers kleiner als der Interpreter waren, stand mehr Speicher für Benutzerdaten zur Verfügung. Die Geschwindigkeit der realen Programmausführung wurde um das Dreifache erhöht.

Entwickler begrüßten BASCOM als Alternative zum beliebten, aber langsamen und ungeschickten CBASIC . Im Gegensatz zu CBASIC benötigte BASCOM keinen Präprozessor für MBASIC-Quellcode, sodass ein interaktives Debuggen möglich war. Ein Nachteil war die Forderung von Microsoft nach einer Lizenzgebühr von 9% für jede kompilierte Kopie eines Programms und 40 USD für Hardware-Software-Kombinationen. Das Unternehmen behält sich außerdem das Recht vor, die Finanzunterlagen der Entwickler zu prüfen. Da die typischen Lizenzgebühren der Autoren für Software 10 bis 25% betrugen, gab InfoWorld 1980 an, dass die zusätzliche Lizenzgebühr von 9% von BASCOM "die Softwareentwicklung geradezu unrentabel machen könnte", und kam zu dem Schluss, dass "Microsoft die technische Lösung [für die Mängel von CBASIC] hat, aber nicht der wirtschaftliche ".

Bedeutung von MBASIC

MBASIC war ein wichtiges Werkzeug in der Ära der 8-Bit-CP / M-Computer. Erfahrene Benutzer könnten Routinen in MBASIC schreiben, um Aufgaben zu automatisieren, die in modernen Systemen von leistungsstarken Anwendungsprogrammbefehlen oder Skriptsprachen ausgeführt werden. Austausch nützlicher MBASIC Programme war eine gemeinsame Funktion von Computer - Benutzer - Gruppen . Das Eingeben langer BASIC-Einträge aus einem Zeitschriftenartikel war eine Möglichkeit, Software in ein neues CP / M-System zu "booten". Mindestens ein Compiler für eine Hochsprache wurde in MBASIC geschrieben, und viele kleine Spiele und Hilfsprogramme, die von einigen Zeilen bis zu einigen tausend Codezeilen reichten, wurden geschrieben.

Andere Verwendungen

MBASIC ist auch der Name eines kommerziellen BASIC- Compilers für die von Basic Micro, Inc. entwickelte PIC-Mikrocontrollerfamilie von Microchip Technology , die nicht mit dem CP / M-Interpreter verwandt ist.

Verweise

  • Thom Hogan und Mike Iannamico, Osborne 1 Benutzerhandbuch , (1982) Osborne Computer Corporation
  • David A. Lien, Das BASIC-Handbuch , 2. Auflage Encyclopedia of the BASIC Computer Language ", (1981), Compusoft Publishing
  • BASIC 80 Referenzhandbuch , Microsoft Corporation, ohne Datum