Tiny BASIC

Programmiersprache From Wikipedia, the free encyclopedia

Tiny BASIC ist eine Version der Programmiersprache BASIC mit geringem Speicherbedarf, die in der Mitte der 1970er Jahre entworfen wurde. Der ursprüngliche Entwurf stammte von Dennis Allison, basierend auf einem Vorschlag in einem Newsletter der People's Computer Company (PCC). Das Ziel war eine minimalistische, einfach zu verstehende und zu implementierende Version von BASIC, die auf den damals neu aufkommenden Mikrocomputern mit begrenztem Speicher (typischerweise nur wenige Kilobyte RAM) lauffähig war. Die Veröffentlichung des Designs als öffentlich zugängliche Spezifikation (ein frühes „Open Source“-Modell, noch bevor dieser Begriff offiziell geprägt wurde) ermutigte Hobbyisten, eigene Interpreter zu entwickeln und zu portieren. Tiny BASIC wurde so zu einer Schlüsselkomponente der frühen Heimcomputerbewegung und trug maßgeblich zur Popularisierung von Mikrocomputern bei.

Geschichte

In den frühen 1970er Jahren war BASIC eine etablierte Sprache auf Großrechnern und Minicomputern, wie dem berühmten PDP-11 von DEC. Die aufkommenden Mikroprozessoren (z. B. Intel 8080, MOS Technology 6502) waren jedoch zu schwach, um die bestehenden, umfangreichen BASIC-Interpreter auszuführen. Der Speicherplatz war extrem kostbar, oft auf 4 KB oder 8 KB RAM begrenzt.

Altair BASIC

Die frühesten Mikrocomputer, wie der MITS Altair 8800, verfügten in der Regel über keine eingebauten Eingabe-/Ausgabefunktionen (E/A) jenseits von Frontschaltern und LED-Lämpchen. Praktische Arbeit erforderte den Einbau einer E/A-Erweiterungskarte und die Verwendung einer Form von Terminal. Zu dieser Zeit waren bildschirmbasierte Terminals sehr teuer und kosteten oft mehr als der Computer selbst, so dass viele Benutzer auf mechanische Geräte wie den Teletype Modell 33 zurückgriffen. Dieses Gerät, wie die meisten Fernschreiber dieser Zeit, beinhaltete ein Lochstreifensystem, das es Betreibern ermöglichen sollte, ihre Nachrichten vorzuschreiben, um sie dann mit „hoher Geschwindigkeit“ (ca. 10 Zeichen/s)[1] zu senden, schneller als die meisten Personen die Nachricht live tippen konnten. Für die frühen Mikrocomputer bot dies ein praktisches Datenspeicherformat, das es Benutzern ermöglichte, Programme auf Lochstreifen zu schreiben, um sie später wieder zu laden oder an andere Benutzer zu verteilen.[2]

Ein Lochstreifen mit der erweiterten 8K-Version von Microsoft BASIC

Der Homebrew Computer Club traf sich im März 1975 zum ersten Mal, und seine Mitglieder nutzten die Treffen bald, um auf Lochstreifen gespeicherte Software auszutauschen. Beim Treffen im Juni verschwand ein Streifen, der eine Vorabversion von Altair BASIC enthielt. Der Streifen wurde Steve Dompier gegeben, der ihn an Dan Sokol weitergab, der Zugang zu einem Hochgeschwindigkeits-Lochstreifenstanzer hatte. Beim nächsten Treffen lagen 50 Kopien von Altair BASIC auf Lochstreifen in einem Pappkarton.[3.1] Als Ed Roberts, der Gründer von MITS, davon erfuhr, erklärte er: „Jeder, der eine gestohlene Kopie von MITS BASIC verwendet, sollte sich als das zu erkennen geben, was er ist: ein Dieb.“[4] Bill Gates machte dies formeller, indem er den Open Letter to Hobbyists („Offener Brief an Hobbyisten“) verfasste, in dem er beklagte: „Der Großteil der Hobbyisten muss wissen, die meisten von Ihnen stehlen Ihre Software.“[3.2][5]

Dieser Brief löste in der Hobbygemeinde intensive Diskussionen aus. Viele Hobbyisten waren zwar nicht bereit, hohe Preise für Software zu zahlen, sahen aber auch die Notwendigkeit von Software für ihre Systeme. Als Antwort auf diese Situation entstand die Idee, eine einfache, legale und kostenfreie Alternative zu kommerziellem BASIC zu entwickeln – Tiny BASIC. Vor diesem Hintergrund veröffentlichte Dennis Allison im Dezember 1975 im PCC-Newsletter einen Artikel mit dem Titel „TINY BASIC: Ein 8080-Interpreter“. Es handelte sich um einen Vorschlag für einen stark reduzierten BASIC-Dialekt, der in nur 2 bis 3 KB Speicher Platz finden sollte. Der Artikel enthielt eine präzise Sprachspezifikation und den Entwurf für einen Interpreter.[6]

Die „Tiny-BASIC-Bewegung“

Die Veröffentlichung löste eine Welle der Begeisterung in der Hobbyistengemeinde aus. Anstatt ein fertiges Produkt zu liefern, forderte Allison zur Mitarbeit und zur Entwicklung eigener Implementierungen auf. Dies führte zur Entstehung der „Tiny-BASIC-Bewegung“.

Monospaced font reads "Tiny basic for Intel 8080, version 2.0 by Li-Chen Wang, modified and translated to Intel mnemonics by Roger Rausklob, 10 October 1976. @ Copyleft, All Wrongs Reserved."
Der Begriff "Copyleft" wurde 1976 geprägt

Palo Alto Tiny BASIC, kurz PATB war eine Implementierung von Tiny BASIC, die von Li-Chen Wang entwickelt und im Mai 1976 in Ausgabe 5/2 des PCC-Magazins (People's Computer Company) veröffentlicht wurde. Sein Listing trug den berühmt gewordenen Copyright-Vermerk „@COPYLEFT“ and „ALL WRONGS RESERVED“, eine frühe Formulierung des Open-Source-Gedankens, die zur uneingeschränkten Verbreitung und Modifikation aufforderte.[7] Die erste Version des Interpreters belegte 1,77 Kilobyte Speicherplatz und setzte die Verwendung einer Teletype-Maschine, z. B. Teletype Modell 33 für die Benutzereingabe/-ausgabe voraus. PATB war in einer benutzerdefinierten Assemblersprache mit nicht standardmäßigen Mnemoniken geschrieben. Dies führte zu weiteren Portierungen, die sich mit herkömmlichen Assemblern auf dem 8080 übersetzen ließen.[8]

Eine spätere Version erschien in Ausgabe 1/5 des Dr. Dobb’s Journal.[9] Es handelte sich um einen Integer-BASIC-Interpreter für die Intel 8080-CPU. Die Ankündigung in PCC lautete:

„Tiny BASIC ist eine vereinfachte Version von BASIC, die auf Minicomputern und sogar auf Tischrechnern läuft. Es ist klein, aber dennoch nützlich. Palo Alto Tiny BASIC ist eine spezifische Implementierung, die auf einem 8080-basierten System mit 2 KByte ROM und 2 KByte RAM läuft. Der Quellcode ist Public Domain und wird hier mit freundlicher Genehmigung des Autors zum Nachdruck zur Verfügung gestellt.“

PCC: Ausgabe 5/2

Palo Alto Tiny BASIC verfügte über 26 Integer-Variablen (AZ) und ein Integer-Array (@), das den restlichen freien Speicherplatz umfasste. Der Wertebereich entsprach 16 Bit, d. h. -32768…32767. Die Sprache unterstützte die üblichen BASIC-Anweisungen wie INPUT, PRINT, LET, GOTO, GOSUB, RETURN, IF, FOR...NEXT, END sowie die Funktionen RND() und ABS(). Es bot auch die USR()-Funktion zum Aufruf von Maschinensprache. Eine der bemerkenswertesten Änderungen in PATB ist die Hinzufügung der FOR...NEXT-Schleife. Im ursprünglichen TB konnten Schleifen nur mit IF und GOTO implementiert werden. Wie in Microsoft-BASIC wurden die oberen und unteren Grenzen der Schleife beim Eintritt in die Schleife festgelegt und änderten sich während des Schleifendurchlaufs nicht. Wenn also eine der Grenzen auf einem variablen Ausdruck basierte, änderte sich die Grenze durch Ändern der Variablen nicht. Der STEP-Ausdruck war wie bei MS-BASIC optional. Eine weitere wichtige Änderung war die Möglichkeit, mehrere Anweisungen in einer einzigen Zeile zu platzieren. Aus nicht näher erläuterten Gründen verwendete PATB das Semikolon ; zur Trennung von Anweisungen anstelle des bereits üblichen Doppelpunkts : Ein bemerkenswertes Merkmal war, dass der Quelltext vollständig in Assemblersprache geschrieben und mit ausführlichen Kommentaren versehen war, die die zugrundeliegenden Algorithmen und Datenstrukturen erklärten.

Andere bekannte Versionen waren „Denver Tiny BASIC“ von Fred Greenberg und „MINOL“ von Eric T. Mueller.

Auswirkungen und Vermächtnis

Markierung "LICHEN" (Li-Chen Wang) auf Exatron ROM für das TRS-80-Modell-1

Tiny BASIC war eine der ersten höheren Programmiersprachen für Mikrocomputer, die für Privatpersonen zugänglich waren. Es demonstrierte, dass leistungsfähige Software auch auf extrem limitierter Hardware lauffähig sein konnte.

Viele frühe Heimcomputer, wie der TRS-80 von Tandy/RadioShack, verwendeten in ihren ersten Modellen Varianten von „Palo Alto Tiny BASIC“, bevor sie zu leistungsfähigeren BASIC-Dialekten wechselten.

Die Bewegung um Tiny BASIC war ein frühes und einflussreiches Beispiel für die Kraft gemeinschaftlicher, offener Softwareentwicklung in der Hobbyistenszene, ein Prinzip, das später die Open-Source-Bewegung prägte.

Sprachbeschreibung

Tiny BASIC war im Vergleich zu seinem Vorbild Dartmouth BASIC stark vereinfacht. Typische Merkmale waren:

Eingeschränkter Befehlssatz: Oft nur PRINT, INPUT, LET, IFTHEN, GOTO, GOSUBRETURN, END, CLEAR, LIST, RUN.

Numerische Variablen: Unterstützung nur für numerische Variablen, meist mit Ein-Buchstaben-Namen (A–Z). Einige Implementierungen erlaubten auch zweistellige Variablen (z. B. A1).

Einfache Ausdrücke: Arithmetische Ausdrücke waren auf die Grundrechenarten (+, -, *, /) beschränkt und konnten Klammern enthalten.

Keine Zeichenketten: Die allerersten Versionen unterstützten keine String-Variablen oder -Operationen. Spätere Erweiterungen fügten einfache String-Ausgabe mit PRINT "Textausgabe" hinzu.

Eingeschränkte Programmgröße: Aufgrund des beschränkten Speichers waren Programme naturgemäß sehr klein.

Ein typisches Tiny-BASIC-Programm, das die Fibonacci-Folge berechnet, könnte so ausgesehen haben:

10 LET A = 0
20 LET B = 1
30 PRINT A
40 LET C = A + B
50 LET A = B
60 LET B = C
70 IF A < 100 THEN GOTO 30
80 END

Implementierung

Die frühen Tiny-BASIC-Interpreter wurden meist in Assemblersprache geschrieben, um maximale Effizienz und minimale Größe zu gewährleisten. Die Architektur folgte oft dem klassischen Muster eines zeilenorientierten Interpreters mit Tokenisierung: Beim Eintippen wurden BASIC-Schlüsselwörter in einzelne Token umgewandelt, um Speicherplatz zu sparen. Der Interpreter interpretierte und führte diese Token Zeile für Zeile aus. Eine Ausnahme bildet „Palo Alto Tiny BASIC“, das die Kommandos im Klartext speicherte, wobei Schlüsselworte abgekürzt werden konnten, z. B. P. statt PRINT.

Einzelnachweise

Related Articles

Wikiwand AI