Winzige BASIC - Tiny BASIC

Winzige BASIC
Entworfen von Dennis Allison
Erstmals erschienen 1975
Implementierungssprache IL (Interpretative Sprache)
Lizenz Gemeinfrei
Dialekte
Denver Tiny BASIC, Enhanced 6800 Tiny BASIC, MINOL, National Industrial Basic Language, Palo Alto Tiny BASIC, 6800 Tiny BASIC, TBI68K, Tiny BASIC Extended
Beeinflusst von
Dartmouth BASIC , 8008 BASIC
Beeinflusst
Astro BASIC , Atari BASIC , Level I BASIC

Tiny BASIC ist eine Familie von Dialekten der BASIC - Programmiersprache , die in 4 oder weniger passen KB von Speicher . Tiny BASIC wurde als Reaktion auf den offenen Brief von Bill Gates entwickelt, in dem er sich über die Piraterie von Altair BASIC beschwerte , das für 150 US-Dollar verkauft wurde. Tiny BASIC sollte eine völlig kostenlose Version von BASIC sein, die auf den gleichen frühen Mikrocomputern laufen würde .

Tiny BASIC wurde als Spezifikation und nicht als Implementierung veröffentlicht und in der September-Ausgabe 1975 des Newsletters der People's Computer Company (PCC) veröffentlicht. Der Artikel forderte Programmierer auf, es auf ihren Computern zu implementieren und die resultierende Assembler- Sprachimplementierung zur Aufnahme in eine Reihe von drei geplanten Newslettern zurückzusenden. Dr. Li-Chen Wang , Autor von Palo Alto Tiny BASIC, hat den Begriff „ Copyleft “ geprägt, um dieses Konzept zu beschreiben. Die Resonanz der Community war so überwältigend, dass der Newsletter als Dr. Dobb's Journal neu aufgelegt wurde , die erste regelmäßige Zeitschrift, die sich auf Mikrocomputer-Software konzentrierte. Dr. Dobb's bestand 34 Jahre in gedruckter Form und dann bis 2014 online.

Die geringe Größe und der freie Quellcode machten diese Implementierungen in den frühen Tagen der Mikrocomputer Mitte der 1970er Jahre, als RAM teuer war und die typische Speichergröße nur 4 bis 8 KB betrug , von unschätzbarem Wert . Während die Minimalversion von Microsofts Altair BASIC auch auf 4-KB-Rechnern laufen würde, blieben nur 790 Bytes für BASIC-Programme frei. Mehr freier Speicherplatz war ein wesentlicher Vorteil von Tiny BASIC. Um diese strengen Größenbeschränkungen einzuhalten, fehlten Tiny BASIC-Dialekten im Allgemeinen eine Vielzahl von Funktionen, die normalerweise in anderen Dialekten zu finden sind, zum Beispiel fehlten den meisten Versionen String-Variablen , keine Gleitkomma- Mathematik und erlaubten nur aus einem Buchstaben bestehende Variablennamen.

Winzige BASIC-Implementierungen werden auch heute noch für die Programmierung von Mikrocontrollern wie dem Arduino verwendet .

Geschichte

Altair BASIC

Ein Papierband mit der erweiterten 8k-Version von Micro-Soft BASIC.

Die frühesten Mikrocomputer , wie der MITS Altair 8800 , hatten im Allgemeinen keinen eingebauten Eingang/Ausgang (I/O) außer Frontschaltern und LED- Lampen. Nützliche Arbeiten erforderten im Allgemeinen das Hinzufügen einer E/A- Erweiterungskarte und die Verwendung eines Terminals . Zu dieser Zeit waren videobasierte Terminals sehr teuer, viel mehr als der Computer selbst, so dass sich viele Benutzer mechanischen Geräten wie dem Teletype Model 33 zuwandten . Das Modell 33 enthielt , wie die meisten Fernschreiber der Ära, ein Lochstreifensystem , das es den Bedienern ermöglichen sollte, ihre Nachrichten vorab aufzuzeichnen und sie dann mit "hoher Geschwindigkeit" abzuspielen, schneller als die Nachricht live zu tippen. Für die frühen Mikrocomputer stellte dies ein bequemes Computerspeicherformat bereit , das es den Benutzern ermöglichte, Programme auf Papierband zu schreiben und sie an andere Benutzer zu verteilen.

Der Homebrew Computer Club traf sich zum ersten Mal im März 1975 und seine Mitglieder nutzten die Treffen bald, um Software auf Lochstreifen auszutauschen. Bei der Juni-Sitzung verschwand ein Band mit einer Vorabversion von Altair BASIC . Das Band wurde Steve Dompier übergeben, der es an Dan Sokol weitergab, der Zugang zu einer Hochgeschwindigkeits-Bandstanze hatte. Beim nächsten Treffen erschienen 50 Exemplare von Altair BASIC auf Papierband in einem Karton. Als Ed Roberts , der Gründer von MITS, davon erfuhr, sagte er: "Jeder, der eine gestohlene Kopie von MITS BASIC verwendet, sollte sich als das ausweisen, was er ist, ein Dieb." Bill Gates machte dies formeller und schrieb einen offenen Brief an Bastler , in dem er sich beschwerte: "Wie die Mehrheit der Bastler wissen muss, stehlen die meisten von Ihnen Ihre Software."

Winzige BASIC

Die Beschwerde wurde nicht gut aufgenommen. Unter den vielen Antworten war Bob Albrecht, ein weiteres Homebrew-Mitglied und Gründer der People's Computer Company (PCC), der Meinung, dass die beste Antwort darin bestehen würde, sein eigenes BASIC zu produzieren, das von jedem völlig kostenlos verwendet werden kann. Er wandte sich an Dennis Allison , ein Mitglied der Fakultät für Informatik der Stanford University , um eine Spezifikation für eine BASIC-Version zu schreiben, die in 2 bis 3 Kilobyte Speicher passen würde. Um die Portierung zu erleichtern , basierte das Design auf einer Zwischensprache (IL), einem Interpreter für den Interpreter, was bedeutete, dass nur ein kleiner Teil des gesamten Codes portiert werden musste.

Allisons ursprüngliches Design wurde in der Ausgabe des PCC-Newsletters vom September 1975 zusammen mit einer Intel 8080- Version des IL-Interpreters veröffentlicht. Der Artikel forderte Programmierer auf, das Design auf ihrem Computer zu implementieren und die resultierende Assembler-Sprachversion an das PCC zurückzusenden. Sie gaben ihre Pläne bekannt, drei spezielle Newsletter zu veröffentlichen, die diese von Benutzern eingereichten Versionen zusammen mit Fehlerkorrekturen, Programmen, die im neuen BASIC geschrieben wurden, sowie Vorschlägen und Verbesserungen enthalten. Das Konzept fand weitere Beachtung, als es in der Januar-Ausgabe 1976 der ACM Special Interest Group on Programming Languages wiederveröffentlicht wurde . Einsendungen strömten herein. Zu den bemerkenswerten frühen Versionen gehörte Tiny BASIC Extended von Dick Whipple und John Arnold, das in 3K RAM lief, FOR...NXT- Schleifen hinzufügte und ein einzelnes numerisches Array zuließ. Sie vermieden die Verwendung der IL und schrieben sie mit octal direkt in Maschinencode .

Der erste der drei geplanten Newsletter mit dem Titel "Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Running Light Without Overbyte" erschien im Januar 1976. Er beginnt mit einer Notiz von Albrecht, unter dem Pseudonym "the Dragon", dass drei Ausgaben nicht ausreichen würden, und fragte die Leser, ob sie eine Fortsetzung wünschen würden. Es druckte auch den Originalartikel über Tiny BASIC von PCC nach, enthielt die vollständige Liste von Extended TB und enthielt eine Reihe kleiner BASIC-Programme, einschließlich Tipps und Tricks von Allison. Die Resonanz auf die erste Ausgabe war so beeindruckend, dass bereits in der Einleitung zur zweiten Ausgabe die Entscheidung stand, den neuen Newsletter unter dem vereinfachten Namen Dr. Dobb's Journal weiter zu veröffentlichen . In den nächsten Ausgaben wurden weitere Versionen der Sprache veröffentlicht und ähnliche Artikel erschienen in anderen Zeitschriften wie Interface Age .

Ausbreitung

Monospaced Schriftart lautet "Tiny basic for Intel 8080, Version 2.0 von Li-Chen Wang, modifiziert und in Intel-Mnemonik übersetzt von Roger Rausklob, 10. Oktober 1976. @ Copyleft, All Wrongs Reserved."
Die Verwendung von "Copyleft; All Wrongs Reserved" im Jahr 1976

Mitte 1976 waren Tiny BASIC-Interpreter für die Prozessoren Intel 8080 , Motorola 6800 und MOS Technology 6502 verfügbar . Dies war ein Vorläufer der kollaborativen Entwicklung der Freie-Software-Gemeinschaft, bevor das Internet eine einfache Übertragung von Dateien ermöglichte, und war ein Beispiel für ein Freie-Software-Projekt vor der Freie-Software-Bewegung . Computerbastler tauschten Papierbänder, Kassetten aus oder tippten sogar die Dateien aus den gedruckten Listen neu ab.

Jim Warren, Herausgeber von Dr. Dobb's , schrieb im Juli 1976 im ACM Programming Language Newsletter über die Motivationen und Methoden dieses erfolgreichen Projekts. Er begann damit: „Es gibt eine praktikable Alternative zu den Problemen, die Bill Gates in seinem wütenden Brief an Computerbastler bezüglich des ‚Abreißens‘ von Software angesprochen hat . Wenn Software kostenlos oder so billig ist, dass es einfacher ist, dafür zu bezahlen als zu duplizieren dann wird es nicht 'gestohlen'." Der Brief von Bill Gates wurde geschrieben, um aus Software Produkte zu machen . Die alternative Methode bestand darin, das Gesamtdesign von einem erfahrenen Fachmann durchführen zu lassen und dann eine Implementierungsstrategie zu skizzieren. Erfahrene Amateure würden das Design für eine Vielzahl von Computersystemen implementieren. Warren sagte voraus, dass diese Strategie fortgesetzt und ausgeweitet werden würde.

Die Ausgabe Mai 1976 von Dr. Dobbs hatte Li-Chen Wang ‚s Palo Alto Tiny BASIC für den 8080. Die Liste mit den üblichen Titel begann, den Namen des Autors und das Datum , aber es hatte auch‚@COPYLEFT ALL Wrongs RESERVED‘. Ein Mitglied des Homebrew Computer Club , Roger Rauskolb, modifiziert und verbessert das Programm von Li-Chen Wang, und dies wurde in der Dezember-Ausgabe 1976 des Interface Age Magazins veröffentlicht. Roger fügte seinen Namen hinzu und bewahrte die COPYLEFT-Mitteilung auf.

Beschreibung

Grundlegendes Konzept

Siehe BASIC-Interpreter

Tiny BASIC wurde entwickelt, um so wenig Speicher wie möglich zu verbrauchen, und dies spiegelt sich in den wenigen Funktionen sowie in den Details seines Interpretersystems wider . Frühen Mikrocomputern fehlten RAM und Sekundärspeicher für einen BASIC- Compiler , der eher für Timesharing-Systeme typisch war.

Wie die meisten BASICs der Ära war Tiny Basic interaktiv, indem der Benutzer Anweisungen in eine Befehlszeile eingab. Da Mikrocomputer der damaligen Zeit oft mit Fernschreibern oder "dummen" Terminals verwendet wurden, war eine direkte Bearbeitung von bestehendem Text nicht möglich und der Editor verwendete stattdessen Takeout-Zeichen, oft den Backslash, um anzuzeigen, wo der Benutzer gesichert hat, um vorhandenen Text zu bearbeiten.

Wenn der Benutzer eine Anweisung in die Befehlszeile eingab, überprüfte das System sie, ob sie mit einer Zahl begann. Wenn dies nicht der Fall war, wurde die Zeile sofort geparst und bearbeitet, wodurch möglicherweise eine Ausgabe über generiert wurde PRINT. Dies wurde als "Direktmodus" bezeichnet.

Wenn die Zeile mit einer führenden Zahl eingegeben wurde, wurde die Zahl aus dem Dezimalformat, wie "50", und in einen 8-Bit-Wert umgewandelt, in diesem Fall $32 hexadezimal . Diese Nummer wurde als Index für einen Array- ähnlichen Speicherbereich verwendet, in dem der Rest der Zeile in genau dem Format gespeichert wurde, in dem sie eingegeben wurde. Wenn der Benutzer LISTin die Befehlszeile eintippte, überflog das System das Array, konvertierte die Zeilennummer zurück in das Dezimalformat und druckte dann den Rest des Textes in der Zeile aus.

Wenn ein Programm im Speicher vorhanden war und der Benutzer den RUNBefehl eingibt, geht das System in den "indirekten Modus" über. In diesem Modus wird ein Zeiger so gesetzt, dass er auf die erste Zeile des Programms zeigt, zum Beispiel 10 ($0A hex). Der Originaltext für diese Zeile wird dann aus dem Speicher abgerufen und ausgeführt, als ob der Benutzer ihn gerade im Direktmodus eingegeben hätte. Der Zeiger rückt dann zur nächsten Zeile vor und der Prozess wird fortgesetzt.

Formale Grammatik

Die Grammatik ist unten in Backus-Naur-Form aufgeführt , fast genau so, wie sie in der Design Note angegeben wurde. In der Auflistung bezeichnet ein Sternchen („ * “) null oder mehr des Objekts links davon – mit Ausnahme des ersten Sternchens in der Definition von „ term “, das der Multiplikationsoperator ist; Klammern gruppieren Objekte; und ein Epsilon (" ε ") bezeichnet die leere Menge. Wie in der grammatikalischen Notation von Computersprachen üblich, unterscheidet der vertikale Strich (" | ") Alternativen ebenso wie ihre Auflistung in separaten Zeilen. Das Symbol " CR " bezeichnet einen Wagenrücklauf (normalerweise durch die "Enter"-Taste einer Tastatur erzeugt). Ein BREAK von der Konsole unterbricht die Ausführung des Programms.

    line ::= number statement CR | statement CR
 
    statement ::= PRINT expr-list
                  IF expression relop expression THEN statement
                  GOTO expression
                  INPUT var-list
                  LET var = expression
                  GOSUB expression
                  RETURN
                  CLEAR
                  LIST
                  RUN
                  END
 
    expr-list ::= (string|expression) (, (string|expression) )*
 
    var-list ::= var (, var)*
 
    expression ::= (+|-|ε) term ((+|-) term)*
 
    term ::= factor ((*|/) factor)*
 
    factor ::= var | number | (expression)
 
    var ::= A | B | C ... | Y | Z
 
    number ::= digit digit*
 
    digit ::= 0 | 1 | 2 | 3 | ... | 8 | 9
 
    relop ::= < (>|=) | > (<|=) | =

    string ::= " ( |!|#|$ ... -|.|/|digit|: ... @|A|B|C ... |X|Y|Z)* "

Beachten Sie, dass die Zeichenfolge in der Designnote nicht definiert wurde.

Diese Syntax, so einfach , wie es war, fügte eine Innovation: GOTOund GOSUBeinen Ausdruck nehmen könnte und nicht nur eine Zeilennummer, eine Bereitstellung zugewiesen GOTO anstatt die switch - Anweisung von der GOTO/GOSUB ... OF ..., die eine Struktur dann in der unterstützten HP Time-sharing BASIC und datierend ON ... GOTO. Die Syntax, die es erlaubt IF-THEN statement(im Gegensatz zu nur einer Zeilennummer zu verzweigen) wurde in Dartmouth BASIC zu diesem Zeitpunkt noch nicht unterstützt, sondern wurde von Digital eingeführt und von Microsoft kopiert.

Implementierung in einer virtuellen Maschine

Die Design Note spezifizierte eine virtuelle Maschine , in der der Tiny BASIC- Interpreter selbst auf einem virtuellen Maschinen-Interpreter ausgeführt wird. Die Idee des Designers, eine virtuelle Anwendungsmaschine zu verwenden, geht auf Val Schorre (mit META II , 1964) und Glennie (Syntax Machine) zurück. Die Wahl eines virtuellen Maschinenansatzes sparte Speicherplatz und Implementierungsaufwand, obwohl die darauf laufenden BASIC-Programme etwas langsam ausgeführt wurden.

Zu den Dialekten, die die virtuelle Maschine verwendeten, gehörten Tiny BASIC Extended, Tom Pittmans Tiny BASIC und NIBL. Andere Dialekte wie Denver Tiny BASIC (DTB) und Palo Alto Tiny BASIC waren direkte Interpreten. Einige Programmierer, wie Fred Greeb von DTB, behandelten das IL-Programm (Interpretive Language) als Pseudocode für den Algorithmus , der in Assembler implementiert werden soll; Denver Tiny BASIC verwendete keine virtuelle Maschine, sondern folgte dem IL-Programm.

Dies ist ein repräsentativer Auszug aus dem 120-Zeilen-IL-Programm:

S1:  TST     S3,'GO'       ;GOTO OR GOSUB?
     TST     S2,'TO'       ;YES...TO, OR...SUB
     CALL    EXPR          ;GET LABEL
     DONE                  ;ERROR IF CR NOT NEXT
     XFER                  ;SET UP AND JUMP
S3:  TST     S8,'PRINT'    ;PRINT.

Ein übliches Muster im Programm besteht darin, ein Schlüsselwort oder einen Teil eines Schlüsselworts zu testen und dann auf diese Informationen zu reagieren. Jeder Test ist eine Feststellung, was als nächstes im Zeilenpuffer ist. Wenn die Assertion fehlschlägt, springt die Steuerung zu einem nachfolgenden Label (normalerweise auf der Suche nach einem neuen Schlüsselwort oder Token). Hier bewegt das System seinen Puffercursor über alle Leerzeichen und testet auf GO, und wenn es ihn nicht findet, springt es zu Zeile S3 . Wenn es gefunden wird, wird die Ausführung mit dem nächsten AWL-Befehl fortgesetzt. In diesem Fall testet das System als nächstes auf TO und springt zu Zeile S2, wenn es fehlschlägt (ein Test für SUB , um zu sehen, ob dies stattdessen ein GOSUB- Befehl ist). Wenn es bestanden wird, wird die Kontrolle fortgesetzt; In diesem Fall wird eine IL-Unterroutine aufgerufen , die bei der Marke EXPR beginnt und einen Ausdruck analysiert. In Tiny BASIC ist GOTO X*10+100(ein berechnetes GO TO) genauso legal wie GOTO 100und die Alternative zum ON-GOTO größerer BASIC-Implementierungen. Das Unterprogramm EXPR schiebt das Ergebnis des Ausdrucks auf den arithmetischen Stapel (in diesem Fall die Zeilennummer). DONE überprüft, ob dem Ausdruck kein anderer Text folgt, und gibt einen Fehler aus, wenn dies der Fall ist. XFER holt die Nummer vom Stack und übergibt die Ausführung (GOes TO) an die entsprechende Zeilennummer, falls vorhanden.

Die folgende Tabelle gibt eine unvollständige Liste der 32 Befehle der virtuellen Maschine, in der der erste Tiny BASIC-Interpreter geschrieben wurde.

TST lbl , Zeichenfolge
Wenn string mit der BASIC-Zeile übereinstimmt, bewegen Sie den Cursor über string und führen Sie den nächsten IL-Befehl aus; wenn der Test fehlschlägt, führen Sie den IL-Befehl mit dem Label lbl . aus
CALL - LBL
Führe das AWL- Unterprogramm ab lbl aus ; Speichern Sie die AWL-Adresse nach dem CALL auf dem Control Stack
GETAN
Syntaxfehler melden, wenn nach dem Löschen führender Leerzeichen der Cursor nicht positioniert ist, um einen Wagenrücklauf zu erreichen
XFER
Testwert an der Spitze des AE-Stapels, um innerhalb des Bereichs zu liegen. Wenn nicht, melden Sie einen Fehler. Versuchen Sie in diesem Fall, den Cursor in dieser Zeile zu positionieren. Falls vorhanden, beginnen Sie dort mit der Interpretation; wenn nicht, melden Sie einen Fehler.
JUMP lbl
Ausführung der AWL am angegebenen Label fortsetzen
RTN
Kehren Sie zum IL-Speicherort zurück, der oben im Kontrollstapel angegeben ist
PRS
Zeichen aus dem BASIC-Text bis einschließlich des schließenden Anführungszeichens drucken
PRN
Drucken Sie die Nummer, die Sie erhalten, indem Sie den oberen Teil des Ausdrucksstapels öffnen
SPC
Leerzeichen einfügen, um den Druckkopf in die nächste Zone zu bewegen
NLINE
CRLF an den Drucker ausgeben

Tom Pittman sagt über die IL: „Der TINY BASIC-Interpreter wurde von Dennis Allison als rekursiver Descent-Parser entwickelt . Ein Teil der eleganten Einfachheit dieses Designs ging durch die Zugabe von syntaktischem Zucker in die Sprache verloren, aber die Grundform bleibt. Die IL ist aufgrund der allgemeinen rekursiven Natur ihrer Prozeduren und der Einfachheit der TINY BASIC-Token besonders für das rekursive Absteigen von TINY BASIC geeignet.Die IL-Sprache ist effektiv für die Interpretation von TINY optimiert.Die Erfahrung hat gezeigt, dass die Schwierigkeit der Addition Neue Funktionen der Sprache stehen in keinem Verhältnis zur Art der Funktionen. Normalerweise ist es notwendig, zusätzliche Maschinensprachen-Unterprogramme hinzuzufügen, um die neuen Funktionen zu unterstützen. Oft überwiegt die Schwierigkeit die Vorteile."

Abweichungen vom Design

Pittman definiert Tiny BASIC für den Homebrew Computer Club und schreibt: "Tiny BASIC ist eine richtige Teilmenge von Dartmouth BASIC, die nur aus den folgenden Anweisungstypen besteht: LET, PRINT, INPUT, IF, GOTO, GOSUB, RETURN, END, CLEAR, LIST ., RUN Arithmetik ist in 16-Bit-Integer nur mit den Operatoren + -. * / und verschachtelten Klammern Es gibt nur die 26 einzelnen Buchstaben Variablennamen A, B, ... Z, und keine Funktionen gibt es keine Strings oder Arrays. ... Tiny BASIC spezifiziert Zeilennummern kleiner als 256." Anschließend beschrieb er seine Implementierung: "Diese Sprache wurde um die Funktionen RND, USR sowie PEEK und POKE erweitert, sodass der Benutzer aus dem BASIC-Programm auf alle seine Systemkomponenten im 6800 zugreifen kann."

Viele Implementierer brachten ihre eigenen Erfahrungen mit HP Time-Shared BASIC oder DEC BASIC-PLUS in ihre Designs ein und lockerten die formale Tiny BASIC-Sprachspezifikation. Von den sieben prominenten Implementierungen, die bis 1977 veröffentlicht wurden:

  • Alle haben eine Art Zufallszahlenfunktion hinzugefügt, normalerweise RND() . Obwohl nicht in der Spezifikation enthalten, forderte ein Newsletter-Artikel vor der Design Note für Tiny BASIC nur diese Funktion.
  • Alle aktivierten LET sind optional und die meisten let-Ausdrücke in Zuweisungsanweisungen enthalten relationale Operatoren .
  • Alle außer 6800 TB unterstützten Anweisungstrennzeichen in Zeilen, normalerweise : obwohl TBX $ und PATB verwendet ; .
  • In IF- Anweisungen haben alle außer MINOL die Notwendigkeit beseitigt, dass Ausdrücke relationale Operatoren enthalten (z. B. war gültig). Implementierungen entfernten THEN ganz oder machten es optional oder unterstützten es nur für implizites GOTO .IF X THEN LET Y=X
  • Viele haben PRINT modifiziert , um Druckzonen zu unterstützen, indem sie verwendet werden ,, um zur nächsten Zone zu gehen und ;den Cursor nicht vorzurücken.
  • Alle außer 6800TB und DTB hinzugefügt NEU .
  • Alle außer 6800TB und MINOL haben eine Funktion hinzugefügt, um die Speichergröße zurückzugeben: TBX hatte SZE , DTB und PATB hatten SIZE , L1B hatte MEM und NIBL ​​hatte TOP .
  • Vier Implementierungen fügten Arrays hinzu, sei es ein einzelnes, nicht dimensioniertes Array in PATB und L1B oder DIM- fähige Arrays in TBX und DTB.
  • Vier Implementierungen haben die REM- Ark-Anweisung hinzugefügt .
  • Vier Implementierungen fügten die FOR- Schleife hinzu: PATB, NIBL ​​und L1B boten FOR-TO-STEP/NEXT , während TBX STEPdas Schlüsselwort nicht unterstützte und verwendete NXT, um eine Schleife zu beenden.
  • Nur NIBL ​​hatte mit DO/UNTIL eine Anspielung auf strukturierte Programmierung, trotz Allisons Klage in Ausgabe 2 über Probleme mit BASIC.

Als Alternative zur Tokenisierung, um RAM, TBX, DTB und MINOL abgeschnittene Schlüsselwörter zu speichern: PR für PRINT , IN für INPUT , RET für RETURN . Die vollständigen, traditionellen Schlüsselwörter wurden nicht akzeptiert. Im Gegensatz dazu erlaubte PATB akzeptierte traditionelle Schlüsselwörter, erlaubte aber auch, jedes Schlüsselwort auf seine minimale eindeutige Zeichenfolge mit einem abschließenden Punkt abzukürzen. Zum Beispiel könnte PRINT P. geschrieben werden , obwohl PR. und andere Variationen haben auch funktioniert. Dieses System wurde in Level I BASIC für den TRS-80 beibehalten , der PATB verwendet, und wurde später auch in Atari BASIC und dem BASIC verschiedener Sharp Pocket Computers gefunden .

Dialekte

Die bekanntesten Dialekte von Tiny BASIC waren die ursprüngliche Design Note, Tiny BASIC Extended, Palo Alto Tiny BASIC und 6800 Tiny BASIC. Es gab jedoch viele andere Versionen von Tiny BASIC.

Liste bekannter Dialekte

Tiny BASIC wurde erstmals in einem Newsletter-Ableger der People's Computer Company veröffentlicht , einem Newsletter, der zu Dr. Dobb's Journal , einem langlebigen Computermagazin, wurde. Ungefähr zehn Versionen wurden in der Zeitschrift veröffentlicht.

Prominente Dialekte von Tiny BASIC (in Dr. Dobb's Journal)
Veröffentlichungsdatum Problem Dialekt Autor Prozessor Größe
Dezember 1975 1 Designhinweis Dennis Allison N / A N / A
Februar 1976 2 Winziges BASIC Extended (TBX) Dick Whipple & John Arnold 8080 2.9K
März 1976 3 Denver Tiny BASIC (DTB) Fred Greeb 8080 2.75K
März 1976 3 6800 Tiny BASIC (6800 TB) Tom Pittmann 6800 2K
April 1976 4 MINOL Eric T. Müller 8080 1,75K
Mai 1976 5 Palo Alto Tiny BASIC (PATB) Li-Chen Wang 8080 1,77K
November 1976 10 Nationale Industrielle Grundsprache (NIBL) Mark Alexander & Steve Leininger SC/MP 4K
Oktober 1980 49 Verbessertes 6800 Tiny BASIC Robert Hudson 6800 N / A
Februar 1985 100 TBI68K Gordon Brandly 68000 N / A
Januar 2006 351 Rückkehr von Tiny BASIC Tom Pittmann Nicht zutreffend ( C ) N / A

TBX war auch als Texas Tiny BASIC bekannt.

Sowohl SCELBAL als auch 6800 Tiny BASIC wurden im Magazin angekündigt, veröffentlichten jedoch ihren Quellcode nicht.

Palo Alto Tiny BASIC

Palo Alto Tiny BASIC
Entwickler Li Chen Wang
Erstmals erschienen 1976
Lizenz Gemeinfrei
Dialekte
3K-Steuerung Basic
Beeinflusst von
Tiny BASIC Design Note, Tiny BASIC Extended
Beeinflusst
Astro BASIC , Level I BASIC , Sharp PC-1211 BASIC

Eine der beliebtesten der vielen Versionen von Tiny BASIC war Palo Alto Tiny BASIC, kurz PATB, von Li-Chen Wang . PATB erschien erstmals in der Mai 1976 Ausgabe von Dr. Dobbs , geschrieben in einer benutzerdefinierten Assemblersprache mit nicht standardmäßigen Mnemoniken. Dies führte zu weiteren Portierungen, die mit herkömmlichen Assemblern auf dem 8080 funktionierten. Die erste Version des Interpreters belegte 1,77 Kilobyte Speicher und ging von der Verwendung einer Teletype Machine (TTY) für die Benutzereingabe /-ausgabe aus . Ein Erratum zum Originalartikel erschien in der Juni/Juli-Ausgabe von Dr. Dobb's (Band 1, Nr. 6). Dieser Artikel enthält auch Informationen zum Hinzufügen zusätzlicher E/A-Geräte, am Beispiel des Codes für die VDM -Videoanzeige von Processor Technology .

Wang war einer der ersten, der das Wort Copyleft benutzte . In der Vertriebsmitteilung von Palo Alto Tiny BASIC hatte er "@COPYLEFT ALL WRONGS RESERVED" geschrieben. Tiny BASIC wurde nicht unter irgendeiner formellen Form von Copyleft-Verteilungsbedingungen verteilt, sondern in einem Kontext präsentiert, in dem Quellcode geteilt und modifiziert wurde. Tatsächlich hatte Wang schon früher Änderungen an Tiny BASIC Extended beigesteuert, bevor er seinen eigenen Interpreter schrieb. Er ermutigte andere, seinen Quellcode anzupassen und ihre Anpassungen zu veröffentlichen, wie bei Roger Rauskolbs Version von PATB, die in Interface Age veröffentlicht wurde . Er selbst hat eine dritte Version im Reference Book of Personal and Home Computing des PCC veröffentlicht .

Eine der bemerkenswertesten Änderungen in PATB ist die Hinzufügung der FOR...NEXT-Schleife . In der ursprünglichen TB konnten Schleifen nur mit IFund implementiert werden GOTO. Wie in Microsoft BASIC wurden die oberen und unteren Grenzen der Schleife beim Schleifeneintritt festgelegt und änderten sich während der Schleife nicht. Der STEPModifikator war wie bei MS optional.

Eine weitere bedeutende Änderung war die Möglichkeit, mehrere Anweisungen in einer einzigen Zeile zu platzieren. Aus nicht erläuterten Gründen verwendete PATB das Semikolon ;zur Trennung von Anweisungen anstelle des bereits üblichen Doppelpunkts :.

Andere Änderungen umfassen das Hinzufügen eines einzelnen numerischen Arrays mit dem Variablennamen @, STOPzusätzlich zu ENDund die Verwendung von #für ungleich in Vergleichen im Gegensatz zu <>.

PATB verwendete Wörter für Fehlermeldungen anstelle von Zahlen. Um den Speicherbedarf zu reduzieren, gab es nur drei Nachrichten und diese bestanden aus einzelnen Wörtern. Das System reagierte mit WHAT?bei Syntaxfehlern, HOW?bei Laufzeitfehlern wie GOTOs auf eine nicht vorhandene Zeile oder numerischen Überläufen und SORRYbei Problemen mit unzureichendem Speicher.

Wang schrieb auch ein STARTREK- Programm in seinem Tiny BASIC, das in der Juli-Ausgabe 1976 des People's Computer Company Newsletter erschien .

Später passte er die Sprache in 3K Control Basic für Cromemco an und fügte variable Namen der Form Buchstabe-Ziffer (zB A0bis Z9), Logikfunktionen ( AND(), OR(), XOR()), einen CALLBefehl zum Ausführen von Maschinensprachenroutinen, weitere PRINTFormatierungsoptionen und andere hinzu ( GET()und PUT()statt PEEKund POKE; I/O-Port-Funktionen).

Palo Alto Tiny BASIC wurde für viele andere Implementierungen angepasst, darunter Level I BASIC (1977), BASIC für den Sharp PC-1211 Taschencomputer (1980) und Astro BASIC (1982, von Jamie Fenton ).

MINOL

Geschrieben von einem Junior in der High School, war MINOL die einzige Implementierung, die nicht die vollständige Design Note unterstützte, es fehlte die Operator-Priorität , sie hatte nur drei Wiederholungen (<, =, #), das Weglassen von GOSUBund RETURN. Es unterstützte nur 8-Bit-Präzision ohne Vorzeichen (im Gegensatz zur 16-Bit-Präzision mit Vorzeichen für jede andere Implementierung) und Zeilennummern von 0 bis 254.

Außer in Zeichenfolgen waren keine Leerzeichen erlaubt; !gibt eine Zufallszahl zurück, $bevor ein Ausdruck einen String an dieser Adresse lädt; OSkehrt zum Betriebssystem zurück. Der Speicher war adressierbar, als ob er ein zweidimensionales Array von High- und Low-Bytes wäre (zB "(0,0)" bis "(255,255)"); CALLführt eine Maschinensprache-Subroutine aus.

Verschiedene Dialekte

Viele Dialekte erschienen in verschiedenen anderen Publikationen.

Die Ausgabe vom Mai 1977 enthielt ein Floppy-ROM mit MICRO-BASIC.

Inspiriert von PCCs Ruf nach Tiny BASICs, schrieb Robert Uiterwyk MICRO BASIC 1.3 für das SWTPC (ein 6800- System), das SWTPC in der Juni-Ausgabe 1976 des SWTPC-Newsletters veröffentlichte. Uiterwyk hatte die Sprache handschriftlich auf ein legales Tablet geschrieben. Später erweiterte er die Sprache auf 4K und fügte Unterstützung für Gleitkomma hinzu; Diese Implementierung war unter BASIC-Interpretern einzigartig, da sie Binärkodierte Dezimalzahlen mit einer Genauigkeit von 9 Stellen mit einem Bereich von bis zu 10 99 verwendet und kostenlos als "Floppy ROM"-Magazinbeilage veröffentlicht wurde. Eine 8K-Version fügte String-Variablen und Trigonometrie- Funktionen hinzu. Sowohl die 4K- als auch die 8K-Version wurden von SWTPC verkauft. Im Januar 1978 verkaufte Uiterwyk die Rechte des Quellcodes an Motorola .

Thomas F. Waitman schrieb 1976 ein Tiny BASIC für die Terminals HP-2640 und HP-2645 von Hewlett-Packard (die die Prozessoren Intel 8008 und 8080 verwendeten), das im Hewlett-Packard Journal veröffentlicht wurde .

In der Dezember-Ausgabe 1976 von Interface Age wurde LLL ( Lawrence Livermore Laboratory ) BASIC veröffentlicht, dessen erster Entwurf von Steve Leininger aus Allisons Spezifikation entwickelt wurde, bevor Leininger National Semiconductor zur Tandy Corporation verließ . Der endgültige Dolmetscher wurde von John Dickenson, Jerry Barber und John Teeter an der University of Idaho im Rahmen eines Vertrags mit LLL entwickelt. Mit 5K enthielt es ein Gleitkommapaket, das von David Mead, Hal Brand und Frank Olken entwickelt wurde. Das Programm wurde von LLL gemeinfrei gemacht, das das System unter der Schirmherrschaft der US-amerikanischen Energieforschungs- und Entwicklungsbehörde entwickelt hat.

4K-BASICs

Altair BASIC , 4K BASIC, könnte in einem 4kB-RAM-Rechner laufen, so dass nur etwa 790 Byte für Programmcode frei bleiben. Die Tiny BASIC-Initiative startete als Reaktion auf die 150 US-Dollar Gebühr für Altair 4K BASIC.

1975 trat Steve Wozniak dem neu gegründeten Homebrew Computer Club bei , der seine Kollegen Li-Chen Wang (Palo Alto Tiny BASIC) und Tom Pittman (6800 Tiny BASIC) hatte. Wozniak kam zu dem Schluss, dass seine Maschine über ein eigenes BASIC verfügen müsste, das hoffentlich das erste für den MOS Technology 6502- Prozessor sein würde. Da die Sprache 4 kB RAM benötigte, machte er dies zum minimalen Speicher für das Design. Integer BASIC wurde ursprünglich 1976 auf Compact Cassette veröffentlicht.

1977 veröffentlichte Radio Shack (wie es damals hieß) ihren ersten Computer, den TRS-80 , ein Z80- System mit Level I BASIC in einem 4kB ROM. Tandy- Mitarbeiter Steve Leininger hatte während seiner Tätigkeit bei National Semiconductor den ersten Entwurf des NIBL-Interpreters (National Industrial Basic Language) für den SC/MP geschrieben . Da er diesen Quellcode nicht mitnehmen konnte, passte er Li-Chen Wangs Palo Alto Tiny BASIC für den ursprünglichen Prototyp des TRS-80 Model I an. weiße Grafiken und Aussagen. READ/DATA/RESTORE

Ursprünglich 1979 entwickelt, verwendete Sinclair 4K BASIC , geschrieben von John Grant, als Sprachdefinition den Minimal BASIC-Standard des American National Standards Institute (ANSI) von 1978 , war aber selbst eine unvollständige 4Kb-Implementierung mit nur ganzzahliger Arithmetik.

Mikrocontroller-Dialekte

Winzige BASIC-Implementierungen wurden für die Prozessorsteuerung und für Mikrocontroller wie den Arduino angepasst :

  • Stephen A. Ness schrieb 1977 XYBASIC für die Mark Williams Company, eine 4K-Integer-Implementierung. Die Sprache wurde häufig für Prozesssteuerungsanwendungen verwendet.
  • Arduino BASIC - Adaptiert von Gordon Brandlys 68000 Tiny BASIC, portiert auf C von Mike Field.
  • Tiny Basic Plus - Adaptiert von Arduino BASIC von Scott Lawrence.
  • Half-Byte Tiny Basic - Angepasst von Arduino BASIC.
  • Tiny Basic auf dem Mikro: Bit - Adaptiert von Palo Alto Tiny BASIC.

Spätere Implementierungen

Im Jahr 2002 veröffentlichten Emmanuel Chailloux, Pascal Manoury und Bruno Pagano ein Tiny BASIC (fehlt GOSUB/ RETURN) in Developing Applications with Objective Caml als Beispiel einer Objective Caml- Anwendung.

2013 veröffentlichte Alex Yang eine Implementierung in Python .

2019 veröffentlichte Sergey Kuznetsov eine Version in Ruby .

Dialekte im Vergleich

Die folgende Tabelle vergleicht die Sprachfunktion von Tiny BASIC-Implementierungen mit anderen bekannten BASICs, die ihnen vorausgegangen sind.

Vergleich von BASIC-Implementierungen - Tiny BASICs und andere BASICs
Datum der
Veröffentlichung
Dialekt
Programmierer Prozessor Typ EINGANG LASSEN DRUCKEN GEHE ZU WENN, DANN GOSUB RÜCKKEHR ENDE LAUF AUFFÜHREN KLAR NEU REM FÜRS NÄCHSTE LESEN/DATEN/WIEDERHERSTELLEN BASIC-Befehle hinzugefügt Anpassungen Ausdrücke relop Funktionen RND Speicherfunktion Linien Nummern Anweisungstrennzeichen Fehler Präzision Arithmetik Variablen Arrays Saiten
Oktober
1964
DTSS Dartmouth BASIC
(Version 2)
(Dartmouth-Studenten) GE-225 Kompilieren und loslegen N / A [!] LET var = Ausdruck DRUCKEN ausdruckliste { , / ; / } GEHE ZU Nummer IF-Ausdruck relop-Ausdruck THEN Zeilennummer GOSUB-Nummer RÜCKKEHR ENDE LAUF LISTE--starten NEU [aufforderung nach Programmname] REM FÜR/ZU/SCHRITT/WEITER LESEN, DATEN HALT N / A Vorrang, ^ < <= = >= > <> INT, SIN, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FN RND(0) 0..1 1 bis 99999 Keiner 22 definiert 9 Ziffern ±999.999.999; E-Notation Basis 2 -256 bis +255 (E±76). AZ, A0-Z9 DIM (ein Buchstabe, zwei Dimensionen); wenn weggelassen, wird angenommen, dass es von 0 bis 10 geht; bis zu 1500 Elemente über alle Arrays Keiner
Februar
1970
DEZ BASIC-8
(DEC-Mitarbeiter) PDP-8 Kompilieren und loslegen INPUT var-Liste LET var = Ausdruck DRUCKEN ausdruckliste { , / ; / } GEHE ZU Nummer IF-Ausdruck relop-Ausdruck [THEN/GO TO] Zeilennummer GOSUB-Nummer RÜCKKEHR ENDE LAUF LISTE (erste (, letzte)) NEU [aufforderung nach Programmname] REM FÜR/ZU/SCHRITT/WEITER LESEN, DATEN, WIEDERHERSTELLEN STOPP, ALT, SPEICHERN, UNSPEICHERN LÖSCHEN (erste (, letzte)), Tschüss Vorrang, ^ < <= = >= > <> INT, SGN, SIN, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FN RND(0) 0..1 1 bis 2045 Keiner 23 definiert ? ±134.217.727; 14E-38<N<1.7E38 AZ, AA-Z9 DIM (ein Buchstabe, zwei Dimensionen) Keiner
Juni
1974
UIUC BASIC
Alfred Weaver, Michael Tindall, Ronald Danielson 8008 Dolmetscher INPUT <Variable> {, <Variable>}* LET var = Formel PRINT <Zeichenfolge> / <Formel> {, <Zeichenfolge> / <Formel>}* GEHE ZU Nummer IF-Ausdruck THEN Zeilennummer GOSUB-Nummer RÜCKKEHR ENDE LAUF nicht dokumentiert nicht dokumentiert nicht dokumentiert REM FÜR/ZU/SCHRITT/WEITER DEF FN, STOP N / A Vorrang, ^ < <= = >= > # UND ODER NICHT FNA..Z, SIN, COS, LOG, SQR, EXP, ATN 0 bis 999 Keiner nicht dokumentiert 4-Byte-Mantisse und 1-Byte-Exponent [Datenpunkt 2200 Gleitkomma-Arithmetikpaket] nicht dokumentiert AZ, A0-Z9 DIM (ein Buchstabe, drei Dimensionen) Keiner
1975
Altair 4K BASIC
Bill Gates, Paul Allen, Monte Davidoff 8080 Dolmetscher INPUT ("String") var-liste (LET) var = Ausdruck DRUCKEN ausdruckliste { , / ; } GOTO-Nummer IF-Ausdruck THEN Zeilennummer/Anweisung GOSUB-Nummer RÜCKKEHR ENDE LAUF LISTE (Anfang) NEU REM FÜR/ZU/SCHRITT/WEITER LESEN, DATEN, WIEDERHERSTELLEN HALT Vorrang < <= = >= > <> ABS, INT, SGN, SQR, TAB, USR RND(X) <0, neu unter Verwendung von X als Startwert; =0, wiederholen; >0, weiter 1 bis 65535 : 12 definiert 40-Bit-Operand Floating ? ? DIM (eine Dimension) Keiner
Dezember
1975
Designhinweis
Dennis Allison N / A Dolmetscher INPUT var-Liste LET var = Ausdruck Ausdrucksliste DRUCKEN GOTO-Ausdruck IF-Ausdruck relop-Ausdruck THEN-Anweisung GOSUB-Ausdruck RÜCKKEHR ENDE LAUF AUFFÜHREN [Gl. zu NEU] Vorrang < <= = >= > <> >< Keiner Keiner 1 bis 255 Keiner 8 definiert 16-Bit ± 32767 AZ Keiner Keiner
Februar
1976
Tiny BASIC Erweitert
Dick Whipple & John Arnold 8080 Dolmetscher IN (LET) var = Ausdruck ;} GEHE ZU IF-Ausdruck [keine THEN]-Anweisung GO SUB RET ENDE LAUF LST (erste (, letzte)) NEU FOR-NXT (kein SCHRITT) DTA (Array-LET) Vorrang < <= = >= > <> >< TB() Leerzeichen im Druck RN (zufällig 0-10000) Größe 1 bis 65535 $ 14 definiert 16-Bit ± 32767 AZ DIM, 1- oder 2-dimensional, 255x255 max Keiner
März
1976
Denver Tiny BASIC
Fred Greeb 8080 Dolmetscher IN (LET) var = Ausdruck ;} GEHE ZU IF-Ausdruck [keine THEN]-Anweisung GOSUB RET ENDE LAUF LISTE (erster letzter) [Gl. zu NEU] BAND [SPEICHERN], LADEN CLRS [CLS] Vorrang < <= = >= > <> >< RND(0), RND(1) GRÖSSE 2 bis 255 : 20 definiert 16-Bit ± 32767 AZ, A1 bis A6 bis Z6 DIM, 1 Dimension Keiner
März
1976
6800 Tiny BASIC
Tom Pittmann 6800 Dolmetscher INPUT (Ausdruck) var-list LET var = Ausdruck DRUCKEN ausdruckliste { , / ; } GOTO-Ausdruck IF-Ausdruck relop-Ausdruck THEN-Anweisung GOSUB-Ausdruck RÜCKKEHR ENDE LAUF LISTE (erster letzter) [Gl. zu NEU] REM Vorrang < <= = >= > <> >< USR() RND() 1 bis 65535 Keiner 53 definiert 16-Bit ± 32767 AZ Keiner Keiner
April
1976
MINOL
Eric T. Müller 8080 Dolmetscher IN (LET) var = Ausdruck PR-Ausdrucksliste {;} [GOTO 0 springt zurück zum Anfang der Direktanweisung] IF-Ausdruck relop-Ausdruck ; Stellungnahme N / A N / A ENDE LAUF AUFFÜHREN CLEAR [nur Variablen] NEU Keine Leerzeichen außer in Zeichenfolgen erlaubt Keine Operator-Priorität < = # $ [CHR$] ! [RND] 1 bis 254 : 6 definiert 8 Bit 0 bis 255 AZ (H,L) Speicherplatz einzelnes Zeichen
Mai
1976
Palo Alto Tiny BASIC
Li-Chen Wang 8080 Dolmetscher INPUT [(Ausdruck) var]* (LET) var = Ausdruck Ausdrucksliste DRUCKEN GOTO-Ausdruck IF-Ausdruck [keine THEN]-Anweisung GOSUB-Ausdruck RÜCKKEHR HALT LAUF LISTE (Anfang) NEU REM FÜR/ZU/SCHRITT/WEITER HALT Vorrang < <= = >= > # ABS() RND() GRÖSSE 1 bis 32767 ; 3 definiert 16-Bit ± 32767 AZ @(1 Array mit 1 Dimension) Keiner
November
1976
NIBL
Mark Alexander & Steve Leininger SC/MP Dolmetscher EINGANG ($)var (LET) var = Ausdruck PR/PRINT-Ausdrucksliste GOTO-Ausdruck IF-Ausdruck (THEN)-Anweisung GOSUB-Ausdruck RÜCKKEHR ENDE LAUF LISTE (Anfang) CLEAR [Variablen & Stapel] NEU REM FÜR/ZU/SCHRITT/WEITER MACHEN BIS Speicheradressierung (@ [PEEK/POKE], STAT, PAGE) Vorrang < <= = >= > <> MOD(), UND, ODER, NICHT, RND(A,Z) OBEN 0 bis 32767 : 13 vierstellige definiert 16-Bit ± 32767 AZ Speicheradressierung INPUT$, PRINT$, $exp=exp
August
1977
Stufe I BASIC
Steve Leininger Z80 Dolmetscher INPUT (#Stelle) [(Ausdruck) var]* (LET) var = Ausdruck PRINT (#Ziffer) ausdruckliste GOTO-Nummer IF-Ausdruck THEN-Anweisung GOSUB-Nummer RÜCKKEHR ENDE AUSFÜHREN (starten) LISTE (Anfang) NEU REM FÜR/ZU/SCHRITT/WEITER LESEN, DATEN, WIEDERHERSTELLEN STOP, WEITER, ON-GOTO/GOSUB CLOAD, CSAVE, CLS, SET, RESET, Vorrang < <= = >= > <> >< ABS(), INT(), MEM, PUNKT(X,Y) RND() MEM 1 bis 32767 : 3 definiert 16-Bit ± 32767 AZ A(1 Array mit 1 Dimension) A$, B$
Juni
1976
MICRO BASIC 1.3
Robert Uiterwyk 6800 Dolmetscher INPUT var-Liste (LET) var = Ausdruck DRUCKEN ausdruckliste { , / ; } GOTO-Ausdruck IF-Ausdruck relop-Ausdruck THEN-Anweisung GOSUB-Ausdruck RÜCKKEHR ENDE LAUF LISTE (erste (, letzte)) NEU FOR/TO/NEXT (kein SCHRITT) TAB() Vorrang < <= = >= > <> >< RND, GRÖSSE RND [Rückgabe 1-32762] SIZE (Anweisung, die Bytes verwendet und Bytes frei druckt) 1 bis 65535 Keiner 17 definiert 16 Bit [später BCD!] ± 32767 AZ DIM (zwei Dimensionen, maximale Größe von 255) Keiner
Juni
1976
Scientific ELementary
BAsic Language
(SCELBAL)
Mark Arnold & Nat Wadsworth 8008 Dolmetscher INPUT var-Liste (LET) var = Ausdruck DRUCKEN ausdruckliste {, / ; / } GOTO-Nummer DANN-Anweisung GOSUB-Nummer RÜCKKEHR ENDE LAUF AUFFÜHREN Kratzen] REM FÜR/ZU/SCHRITT/WEITER SPEICHERN, LADEN UDF [USR] Vorrang, ^ < <= = >= > <> INT, SGN, ABS, SQR, CHR [nur in PRINT verwendbar], TAB RND(0) 0..1 1 bis 999999 Keiner 18 definiert 32-Bit-Operand Gleit- oder Festkomma ±134.217.727; 14E-38<N<1.7E38 ? DIM (ein Buchstabe, eine Dimension; bis zu 4 Arrays mit insgesamt bis zu 64 Einträgen) Keiner
Oktober
1976
Apfel I BASIC
Steve Wozniak 6502 Dolmetscher INPUT ("String") var-liste (LET) var = Ausdruck DRUCKEN ausdruckliste { , / ; } GOTO-Ausdruck IF-Ausdruck relop-Ausdruck THEN Zeilennummer/Anweisung GOSUB-Ausdruck RÜCKKEHR ENDE AUSFÜHREN (starten) LISTE (erste (, letzte)) SCR REM FÜR/ZU/SCHRITT/WEITER AUTO, DEL, POKE TAB (Befehl), CALL Vorrang < <= = >= > <> # UND ODER NICHT MOD SGN, ABS, PEEK(), LEN() RND(X) 0..X (oder X..0!) HIMEM, LOMEM 1 bis 32767 Keine [frühe Version, dann :] 16 definiert 16-Bit ± 32767 AZ gefolgt von beliebig vielen alphanumerischen DIM (eine Dimension) dimensioniert
Dezember
1976
LLL BASIC
(Mitarbeiter der University of Idaho) 8080 Dolmetscher INPUT var-Liste (LET) var = Ausdruck Ausdrucksliste { , / ;} GEHE ZU Nummer IF-Ausdruck Relop-Ausdruck (THEN)-Anweisung GO SUB-Nummer RÜCKKEHR ENDE LAUF AUFFÜHREN SCR REM FOR/TO/NEXT (kein SCHRITT) HALT CALL, GET(), PUT() Vorrang < <= = >= > <> >< Kein RND? 0 bis 32767 : 14 definiert 32-Bit-Operand-Gleitkomma ? AZ, A0-Z9 DIM (nur ganze Zahlen, ein Buchstabe, eine Dimension, maximale Größe von 255) Keiner

Siehe auch

Anmerkungen

Verweise

Zitate

Literaturverzeichnis

Externe Links