GRUNDLEGENDER Atari

GRUNDLEGENDER Atari ist ein GRUNDLEGENDER Dolmetscher für die 8-Bit-Familie von Atari von 6502-basierten Hauscomputern. Der Dolmetscher hat sich ursprünglich auf einer 8-Kilobyte-Patrone eingeschifft; auf später XL/XE Mustercomputern wurde es in mit einer Auswahl gebaut, es unbrauchbar zu machen und hat angefangen, als die Maschinen ohne andere Patronen im Platz gestartet wurden. Das ganze hat kommentiert Quellcode und Gestaltungsvorschriften von GRUNDLEGENDEM Atari wurden als ein Buch 1983 veröffentlicht. Das hat das erste Mal gekennzeichnet, als Quellcode für eine Handelssprache bereitgestellt wurde.

Nomenklatur und Symbole

In der Nomenklatur der Zeit, als diese Maschinen entworfen wurden, wurde "K" gebracht, um ein Kilobyte zu bedeuten, so dass ist, wie es hier ausgedrückt wird. Ähnlich weiter, auf der Familie des Verarbeiter-Gebrauches durch Maschinen von Atari, auf der Zusammenbau-Sprache "" hat eine hexadecimal Zahl eingeführt, oder es war suffixed subscripted mit seiner Basis, so zum Beispiel "ist" "", oder "". Wenn eine Zahl ohne Basis ausgedrückt wird, wird Dezimalzahl (10) angenommen, und eine Führung 0 bezieht Oktal-nicht ein. Diese werden statt der moderneren Vereinbarung verwendet, weil sie als solcher in vielen der Quellen erscheinen und häufig von denjenigen gesehen werden, die Simulatoren und so weiter verwenden.

Hintergrund

Die Maschinen, die die 8-Bit-Familie von Atari werden würden, waren ursprünglich entwickelt worden, weil Spielkonsolen der zweiten Generation vorgehabt haben, Atari 2600 zu ersetzen. Ray Kassar, der neue Präsident von Atari, hat sich dafür entschieden, Apple Computer herauszufordern, indem er einen Hauscomputer stattdessen gebaut hat. Das hat bedeutet, dass Atari die GRUNDLEGENDE Programmiersprache, dann die Standardsprache für Hauscomputer gebraucht hat.

Atari hat getan, was viele der anderen Hauscomputergesellschaften getan haben: Sie haben den Quellcode zum MOS 6502 Version von Microsoft 8K BASIC gekauft, vorhabend, es zu tragen, um auf ihren neuen Maschinen zu laufen. Aber der Name war etwas einer falschen Bezeichnung als der 8K, der auf seine ursprüngliche Größe auf dem 8080-Befehlssatz von Intel verwiesen ist. Die niedrigere Codedichte der 6502 hat den Code zu ungefähr 9 Kilobytes ausgebreitet.

Atari hat gefunden, dass sie die Sprache ausbreiten mussten, um bessere Unterstützung für die spezifischen Hardware-Eigenschaften ihrer Computer hinzuzufügen, die dem ähnlich sind, was Apfel mit ihrem Applesoft GRUNDLEGENDEN getan hatte. Das hat die Größe von 9K bis ungefähr 11K vergrößert. Atari hatte ihr ROM-Lay-Out in 8K b/locks entworfen, und das Einschränken des Codes von 11K bis 8K hat sich erwiesen, ein bedeutendes Problem zu sein. Das Hinzufügen zum Problem war die Tatsache, dass der 6502 von Microsoft gelieferte Code undokumentiert wurde.

Sechs Monate später waren sie fast mit einer shippable Version des Systems bereit. Aber Atari hatte einen Termin mit Consumer Electronics Show (CES) nähernd und entschieden, um um Hilfe zu bitten.

Mikrosysteme von Shepardson

Im September 1978 hat Atari Mikrosysteme von Shepardson (SMI) gebeten, bei der GRUNDLEGENDEN Vollendung zu werben. Shepardson hatte mehrere Programme für die Familie der Apple II geschrieben, die denselben 6502 Verarbeiter verwendet hat, und in der Mitte des Vollendens eines neuen GRUNDLEGENDEN für den Cromemco S-100 Busmaschinen (Cromemco 32K Strukturiert GRUNDLEGEND) war. SMI hat die vorhandene Arbeit untersucht und hat entschieden, dass es zu schwierig war fortzusetzen, es einzuschränken; stattdessen haben sie empfohlen, eine völlig neue Version zu entwickeln, die leichter sein würde, 8K einzubauen. Atari hat den Vorschlag akzeptiert, und als die Spezifizierungen im Oktober 1978 beendet wurden, haben Paul Laughton und Kathleen O'Brien Arbeit an der neuen Sprache begonnen.

Das Ergebnis war eine ziemlich verschiedene Version von GRUNDLEGENDEN, bekannten als GRUNDLEGENDER ATARI. Insbesondere das neue GRUNDLEGENDE hat sich befasst angenehm spannt mehr wie Datengeneral, der grundlegend ist als Microsoft, das Schnuren verwendet hat, die denjenigen vom GRUNDLEGENDEN DEZ ähnlich sind.

Der Vertrag hat eine Lieferfrist auf oder vor dem 6. April 1979 angegeben, und das hat auch einen Dateibetriebsleiter System (später bekannt als DOS 1.0) eingeschlossen. Die Pläne von Atari waren, eine frühe 8K Version von Microsoft BASIC zum 1979-CES zu nehmen und dann auf das neue Atari GRUNDLEGENDE für die Produktion umzuschalten. Wegen einer Bonus-Klausel im Vertrag ist Entwicklung schnell weitergegangen, und eine 8K Patrone war kurz vor der Ausgabe der Maschinen verfügbar. Weil Atari GRUNDLEGEND geliefert wurde, vor Microsoft BASIC hat Atari es mit ihnen zum CES genommen.

Ausgaben

Die Programmierer von Shepardson haben Probleme während der ersten Rezension gefunden und haben geschafft, einige von ihnen zu befestigen, aber Atari hatte bereits ATARI GRUNDLEGEND zur Herstellung begangen, und die Technologie der Zeit hat Änderungen nicht erlaubt. So wurde es mit bekannten Programmfehlern verfertigt, und ist bekannt (als ein retronym) Revision A geworden.

  • Revision - die Erste Atari GRUNDLEGENDE Patrone. 8K-ROM. Diese Version hat einen Programmfehler in einem Unterprogramm enthalten, das Gedächtnis kopiert hat. Unter bestimmten Bedingungen, Linien des Codes löschend, hat zu einer als der "2-Linien-Laden bekannten Unfall-Bedingung" geführt.
  • Revision B - Befestigt alle Hauptsoftwareprogrammfehler in der Revision A. Während sie den 2-Linien-Programmfehler bestochen haben, haben sie dasselbe Problem in einer allgemeineren Routine wiedereingeführt, dadurch drastisch die Zahl von Unfällen steigernd. Gefunden eingebaut auf 600XL und früh 800XLs. Nie hat auf Patronen geliefert.
  • Revision C - Beseitigte Speicherleckstelle in Revision B. Found auf später 800XLs, 800XLF, XEGS und alle XE Computer. Beschränkte Patrone-Produktion läuft.

Ein GRUNDLEGENDER Programmierer kann die Version herausfinden, indem er eine wohl bekannte Position im Gedächtnis untersucht. Das Eingehen in den Befehl am BEREITEN schnellen wird ein Ergebnis für die Revision A, für die Revision B, und für die Revision C geben.

Beschreibung

Das Programm-Redigieren

Atari GRUNDLEGENDER Gebrauch ein Linienredakteur, wie die meisten GRUNDLAGEN des Zeitalters. Verschieden von vielen GRUNDLAGEN, jedoch, überprüft Atari GRUNDLEGEND sofort die Linie für Syntax-Fehler. Wenn ein Problem gefunden wird, dass es die Linie wieder zeigt, den Text in der Nähe vom Fehler im umgekehrten Video hervorhebend. Das kann Verfangen-Syntax-Fehler auf Atari viel leichter machen als auf anderen Redakteuren; die meisten GRUNDLAGEN werden die Fehler nicht zeigen, bis das Programm durchgeführt wird. (Die Familie von Sinclair ZX von Maschinen nimmt auch die Annäherung an, jede Linie zu überprüfen, weil darin eingegangen wurde, obwohl es sich unterscheidet es hat der Linie erlaubt, eingegangen zu werden, bis es syntaktisch richtig ist, der eine Hindernis für den Programmierer sein kann, wenn er eine Linie des Codes schreibt, aber will etwas elswehere im Programm nachschlagen.)

Wenn nicht ein GRUNDLEGENDES Programm führend, ist Atari in der direkten Weise oder unmittelbaren Weise. In Programm-Linien kann durch das Starten mit einer Linienzahl eingegangen werden, die eine neue Linie einfügen oder eine vorhandene amendieren wird. Linien ohne eine Linienzahl werden sofort, folglich der Name unmittelbare Weise durchgeführt.

Wenn der Programmierer tippt, führt das Programm von der ersten Behauptung durch. Es kann auch eine Linienzahl gegeben werden, so dass das Programm von der Linie 2000 oder die erste Linie danach führen wird, wenn Linie 2000 nicht besteht.

Verschieden von den meisten anderen GRUNDLAGEN erlaubt GRUNDLEGENDER Atari allen Befehlen, in beiden Weisen durchgeführt zu werden. Zum Beispiel erlauben die meisten GRUNDLAGEN nur, in der unmittelbaren Weise verwendet zu werden, während Atari GRUNDLEGEND ihm auch erlaubt, innerhalb eines Programms verwendet zu werden. Das wird manchmal als ein Teil einer Weise verwendet, selbst zu erzeugen, Code modifizierend.

Programm-Linien ("logische Linien") können bis zu drei Schirm-Linien ("physische Linien") von 40 Charakteren, so 120 ganze Charaktere sein. Der Cursor kann frei in diesen Linien unterschiedlich in anderen GRUNDLAGEN bewegt werden, wo man eine Linie veranstaltet, muss man unaufhörlich nach links scrollen, bis der Cursor am linken Rand gewickelt wird (und ähnlich hinunterzugehen, wenn man sich am richtigen Rand einhüllt) - obwohl das auch arbeitet außer dem Cursor, wenn es sich verlassen zum Recht einhüllt, oder das Recht auf den linken nicht steigt oder unten eine Linie. Das OS-Griff-Verfolgen, ob eine physische Linie ins folgende auf derselben logischen Linie geflossen ist; die Drei-Linien-Grenze ist ziemlich willkürlich, aber behält Linien unter 128 Charakteren und reduziert so die Chancen der Pufferüberschwemmung.

Der Cursor kann immer frei um den Schirm bewegt werden, und es wird sich auf allen Seiten einhüllen. Das Schlagen "geht HEREIN" wird dem tokenizer die (logische) Linie senden, auf der der Cursor sitzt. Also, im Beispiel, das oben (mit"") geschildert ist, muss der ganze Autor tun, um den Fehler zu befestigen, ist Bewegung der Cursor über"", Typ (hat der Redakteur nur eine überschreiben Weise), und Erfolg.

Das ist ganz eine häufige Redigieren-Technik, um, sagen wir, Linien umzunummerieren. GRUNDLEGENDER Atari hat keinen eingebauten Umnummerieren-Befehl, aber man kann schnell lernen, die Zahlen auf einer Reihe von Linien dann gerade zu überschreiben, Erfolg "GEHT" wiederholt "HEREIN", um sie ins Programm zurückzustellen. Tatsächlich erlaubt ein ein bisschen rätselhaftes, aber im Wesentlichen einfaches Idiom dem, durch das Programm selbst getan zu werden, als es läuft, erzeugend, Code selbstmodifizierend. Das ist nicht ein Kunsterzeugnis oder Schwindel um das System, aber innewohnend dem vereinigten Verhalten des Redakteurs und tokenizer.

Codierung

Die Atari Schwankung auf ASCII, genannt ATASCII, hat 128 (80) Charaktere größtenteils entsprechend ASCII, aber mit einigen Ausnahmen. Alle Charaktere haben druckfähige Formen verschieden von ASCII, wo (0-1F) Codes 0-31 "Kontrollcodes" sind, die spezielle Funktionen wie Anforderung eines Papierfutters oder das Klingeln einer Aufmerksamkeitsglocke durchführen. Charaktere 128-255 (80-FF) werden als das umgekehrte Video von Charakteren 0-127 (00-7F) gezeigt. Variablennamen müssen aus der Großschrift alphabetisch (65-90, 41-5A) und numerisch (48-57, 30-39) Charaktere zusammengesetzt werden, mit einem alphabetischen Charakter, und für Schnuren anfangend, die mit einem Dollarzeichen (36, 24) enden.

Die Codierung hat ein volles Ensemble von Charakteren der unteren Umschaltung und einigen Grafikzeichen, aber es ist üblich, Programme größtenteils in Großbuchstaben zu sehen. Das kann einfach wegen der Vereinbarung, vorherige Maschinen wie die Reihe der Apple II sein, die nicht untere Umschaltung hat; oder dass einige Geräte wie erstklassige Raddrucker untere Umschaltung nicht haben können; oder dass die Kleinschriftart im besonderen Anstrengen nicht sehr attraktiv ist, Oberlängen und Unterlängen in 8×8 zu drücken, hat befestigter Bratrost gepflegt, jeden glyph, oder 8×7 Schriftarten zu definieren, die auf vielen Punktmatrixdruckern wie eigener Atari verwendet sind.

Auf der Revision C ROMs gibt es eine alternative Schriftart einschließlich Charaktere mit diakritischen Zeichen, die für europäische Benutzer beabsichtigt sind, aber das wird selten verwendet. Das Hinzufügen benutzerbestimmter Schriftarten ist relativ leicht, und jeder nimmt 1 Kilobyte (128 Charaktere × 8 Bit hoch × 8 Bit breit).

Der ANTIC Span verwendet ein Byte, um die Startseite einer Schriftart (das Gedächtnis anzuzeigen, das aus 256 Seiten von 256 Bytes besteht). Aber nur eine Schriftart kann auf einmal ohne Maschinencodeanzeigelistenunterbrechungen verwendet werden, um die Schriftart auf halbem Wege unten der Schirm zu ändern. Selten verwendet 8×10 besteht Schriftart-Weise, wohin die Reihe von Charakteren für Briefe der unteren Umschaltung unten zwei Linien ausgewechselt wird, die so den wirklichen glyphs erlauben, 8×8 zu sein, noch Oberlängen oder Unterlängen geboten werden. Diese Weise wird nur gelegentlich teilweise verwendet, weil Punktmatrixdrucker sie nicht leicht unterstützen können. Die Bequemlichkeit, andere Schriftarten durchzuführen, bedeutet, dass viele mit Schriftart-Redakteuren und so weiter auch frei verfügbar sind.

Der tokenizer

Wie die meisten GRUNDLEGENDEN Dolmetscher, Atari GRUNDLEGENDER Gebrauch eine Scheinstruktur, um lexikalische Verarbeitung für die bessere Leistung und reduzierte Speichergröße zu behandeln. Die Tokenizer-Bekehrter-Linien mit einem kleinen Puffer im Gedächtnis und dem Programm werden als ein Syntaxanalyse-Baum versorgt. Der Scheinproduktionspuffer (gerichtet durch einen Zeigestock an LOMEM - 80, 81) ist 1 Seite (256 Bytes) lange, und jede tokenized Behauptung, die größer ist, als der Puffer einen GRUNDLEGENDEN Fehler (14 - Linie zu lange) erzeugen wird. Tatsächlich ist die im "Programm beschriebene Syntax-Überprüfung", Abteilung editierend, eine Nebenwirkung, jede Linie in eine Tokenized-Form umzuwandeln, bevor es versorgt wird. Sinclair GRUNDLEGENDER Gebrauch eine ähnliche Annäherung, obwohl es sich zwischen Modellen ändert.

Die Produktion vom tokenizer wird dann in die mehr dauerhafte Lagerung in verschiedenen Positionen im Gedächtnis bewegt. Eine Reihe von Zeigestöcken (Adressen) zeigt diese Positionen an: Variablen werden im Variablenname-Tisch versorgt (hat zu auf VNTP - 82, 83 hingewiesen), und die Werte werden im variablen Werttisch versorgt (hat zu auf VVTP - 86, 87 hingewiesen). Schnuren haben ihr eigenes Gebiet (hat zu auf STARP - 8C, 8D hingewiesen), wie den Laufzeitstapel tut (hat zu auf RUNSTK - 8E hingewiesen, 8F) hat gepflegt, die Linienzahlen von sich schlingenden Behauptungen und Unterprogramme zu versorgen. Schließlich wird das Ende des GRUNDLEGENDEN Speichergebrauchs durch eine Adresse angezeigt, die an MEMTOP - 90, 91 versorgt ist), Zeigestock.

Durch indirecting die Variablennamen auf diese Weise braucht eine Verweisung auf eine Variable nur zwei Bytes, um seinen Zugang in den passenden Tisch zu richten; der ganze Name braucht jedes Mal nicht versorgt zu werden. Das macht auch variable Umbenennung relativ trivial, wenn das Programm in der Lagerung ist, wie es einfach ein Fall ist, das einzelne Beispiel seines Namens im Tisch zu ändern, und die einzige Schwierigkeit darin besteht, wenn die Namensänderungslänge (und sogar dann, nur wenn es länger wird): Tatsächlich kann verfinsterter Code für ein beendetes Programm durch die Umbenennung von Variablen in den Namentischen - vielleicht alle zu demselben Namen erzeugt werden. Das verwirrt den Dolmetscher seitdem innerlich nicht es verwendet die Index-Werte nicht die Namen. Natürlich wird neuer Code schwierig sein beizutragen, weil der tokenizer den Namentisch suchen muss, um einen Index einer Variable zu finden und verwirrt sein kann, wenn Namen nicht einzigartig sind (obwohl es in Ordnung ist, um Namen sowohl in der "Schnur" als auch in "Variable" namespaces z.B zu haben. und weil sie getrennte Tische haben, das heißt, namespaces trennen.)

Atari GRUNDLEGENDER Gebrauch eine einzigartige Weise, abgekürzt anzuerkennen, hat Wörter vorbestellt. In Microsoft BASIC gibt es einige vorherbestimmte kurze Formen, (wie für und für). GRUNDLEGENDER Atari erlaubt jedem Schlüsselwort, mit einer Periode, an jedem Punkt schriftlich es abgekürzt zu werden. So wird dazu ausgebreitet, wie wird und (überflüssig). Um eine Abkürzung auszubreiten, wird der tokenizer seine Liste von vorbestellten Wörtern durchsuchen und das erste finden, das den gelieferten Teil vergleicht. Um die Chance eines richtigen Schätzens eines Programmierers einer Abkürzung zu verbessern, das Schreiben zu sparen, und die Geschwindigkeit des lookup zu verbessern, wird die Liste von vorbestellten Wörtern sortiert, um die mehr verwendeten Befehle zuerst zu legen. ist am sehr obersten, und kann gerade als eingetippt werden. Das beschleunigt auch lexikalische Analyse allgemein seitdem, obwohl die Zeit, um zu suchen, in der zur Länge der Liste proportionalen Theorie ist, in der Praxis wird es allgemeine Schlüsselwörter sehr schnell im Ausmaß finden, dass gute Programmierer wissen, wenn eine Linie sogar syntaktisch falsch ist, bevor der parser so sagt, weil die Zeit, die gebracht ist, um die Liste zu suchen, um es zu finden, wollend, eine Anzeige gibt, dass etwas falsch ist.

So, wohingegen Gebrauch von Microsoft BASIC getrennte Jetons für seine wenigen kurzen Formen, GRUNDLEGENDER ATARI hat nur einen Jeton für jedes vorbestellte Wort - wenn das Programm spätere Hrsg. ist, wird es immer die vollen Wörter ausschreiben (da nur ein Jeton alle möglichen Formen vertritt, kann es keinen anderen tun). Es gibt zwei Ausnahmen dazu: Hat ein Synonym, und hat ein Synonym, das die leere Schnur ist (so und haben Sie dasselbe Ding vor). Diese sind getrennte Jetons, und werden so als solcher in der Programm-Auflistung bleiben.

Einige andere zeitgenössische GRUNDLAGEN haben Varianten von Schlüsselwörtern, die Räume (zum Beispiel) einschließen. GRUNDLEGENDER Atari tut nicht. Die Hauptausnahme hier ist Schlüsselwörter, um mit der Peripherie zu kommunizieren (sieh die Abteilung "des Eingangs/Produktion", unten) solcher als und; es kommt selten vielen Programmierern vor, dass "" wirklich ein Teil des tokenized Schlüsselwortes und nicht eines getrennten Symbols ist; und das zum Beispiel "" und "" ist selbes Ding, gerade präsentiert verschieden. Es kann sein, dass die GRUNDLEGENDEN Programmierer die Form behalten haben, um sich nach anderen GRUNDLAGEN zu richten (Die Syntax ist auf Fortran zurückzuführen), obwohl es, und wahrscheinlich eine Hindernis für tokenizing völlig unnötig ist, und auf anderen Sprachen für die 8-Bit-Familie von Atari nicht verwendet wird.

Die Erweiterung von Jetons in der Auflistung kann Probleme verursachen, wenn sie editiert. Der Atari Linieneingangspuffer ist drei Linien (120 Charaktere); bis zu drei "physische Linien" machen eine "logische Linie". Danach wird eine neue "logische Linie" automatisch geschaffen. Das ist viel für die Produktion egal, aber sie tut für den Eingang, weil das Betriebssystem Charaktere in den tokenizer nach der dritten Linie nicht zurückgeben wird, sie als der Anfang einer neuen "logischen Linie" behandelnd. (Das Betriebssystem geht nach, zwischen physischen und logischen Linien kartografisch darzustellen, weil sie eingefügt und gelöscht werden; insbesondere kennzeichnet es jede physische Linie mit einer Fahne, um eine Verlängerungslinie oder eine neue logische Linie zu sein.) Aber mit Abkürzungen, wenn das Schreiben in einer Linie resultieren kann, sobald sie auf der Produktion zu einer Linie ausgebreitet worden sind, die länger ist als drei Linien und, eine mehr geringe Sorge, können einige whitespace Charaktere auf dem Eingang weggelassen werden, also zum Beispiel wird verzeichnet wie, ein längerer Charakter. Wenn man dann die Linie editieren, sich jetzt über zwei logische Linien aufspalten will, muss man die ausgebreiteten Befehle zurück durch ihre Abkürzungen ersetzen, um zu sein, legen sie zurück dem tokenizer vor. Die Moral davon ist allgemein, versuchen Sie nicht, mehr aus einer Linie zu quetschen, als, oder im Stellvertreter angemessen ist, verfinstern Sie Variablen dadurch.

Wörtliche Linienzahlen in Behauptungen, die in der Durchlaufzeit mit demselben Schwimmpunkt mathematische Routinen wie andere GRUNDLEGENDE Funktionen berechnet werden. Diese Berechnung erlaubt Unterprogrammen, auf durch Variablen verwiesen zu werden: Zum Beispiel ist so gut wie, wenn man bis 2000 untergeht. Das ist viel nützlicher, als es klingen könnte; Druckfehler werden im 6-Byte-Schwimmpunkt-Variable-Format versorgt, aber Variablen werden als ein Zwei-Byte-Zeigestock zu ihrem Platz im variablen Werttisch an VVTP versorgt, so durch das Verwenden einer Variable ist das GOTO-Ziel gerade zwei Bytes statt sechs. Natürlich nimmt die wirkliche Zahl weitere sechs, aber das wird nur einmal so versorgt, wenn dieselbe Linienzahl mehr verwendet wird als zweimal, spart man etwas Gedächtnis, obwohl die Linienzahl ein wenig länger nimmt, um aufzublicken. (Die Designwahl zu versorgen, was nur ganze Zahlen als Schwimmpunkt-Zahlen gesetzlich sein kann, wird unten besprochen.)

Es ist im GRUNDLEGENDEN ziemlich üblich, GOTO oder GOSUB zu einer Linienzahl zu verwenden, so können echte Ersparnisse gemacht werden, diese Zahlen durch Variablen zu ersetzen. Es bedeutet auch, dass, wenn der Programmierer immer sorgfältig ist, um die Variable und nicht den Druckfehler zu verwenden, Unterprogramme leicht umnummeriert werden können (bewegt im Programm), weil nur der variable Wert geändert werden muss. Das macht es üblich, am Anfang eines Atari GRUNDLEGENDEN Programms, einer Folge von GELASSENEN Behauptungszuweisen-Linienzahlen zu Variablen zu sehen.

Das Schnur-Berühren

GRUNDLEGENDER Atari unterscheidet sich drastisch von mit dem Microsoft artigen GRUNDLAGEN in der Weise, wie er Schnuren behandelt. In GRUNDLAGEN im Anschluss an das Modell von Microsoft sind Schnuren spezielle Typen, die variable Länge und verschiedene Operationen berücksichtigen. GRUNDLEGENDER Atari hat keine Schnuren dieser Sorte stattdessen mit der Reihe von Charakteren eher wie Fortran. Das hat den GRUNDLEGENDEN Sprachprogrammierern erlaubt, den ganzen Code des speziellen Zwecks zu entfernen, der erforderlich ist, um zu behandeln, von Schnuren dynamisch in der Größe anzupassen, stattdessen den Code wiederverwendend, bereits gepflegt, Reihe von Zahlen zu behandeln. Eine Schnur wird eine maximale Größe mit der Behauptung zugeteilt, obwohl sich seine wirkliche Länge an der Durchlaufzeit von 0 bis diese maximale Größe ändern kann.

Natürlich werden Schnuren von Endprogrammierern ebenso als Reihe von Zahlen - mindestens nicht normalerweise nicht verwendet - so schließt Atari GRUNDLEGEND auch eine Auswahl an Befehlen ein, um Reihe "aufzuschneiden". bezieht sich auf die komplette Schnur, wohingegen "Scheiben" die drei Charaktere 4, 5 und 6. In der Theorie ist das eine elegantere Lösung als BASIC'S von Microsoft, und Lösung, weil diese Syntax drei getrennte Befehle durch einen einzelnen ersetzt.

Obwohl diese Vereinfachung die Größe von Atari GRUNDLEGEND reduziert und einige theoretische Leistungsvorteile anbietet, ist es auch eine Hindernis für das Halten nach Backbord GRUNDLEGENDER Programme von anderen Computern bis Atari. Als Atari zuerst erzeugt wurde, war es die Norm für Programme, die als Auflistungen in Zeitschriften für Programmierer zur Verfügung zu stellen sind, um einzutippen. Sie würden sie für Beispiele dessen scannen und so weiter ein Kopfrechnen tun und sie durch das Schneiden von Befehlen ersetzen müssen. Weil Schnuren eine feste Größe zugeteilt wurden, bedeutet es allgemein, dass Programmierer pessimize werden oder die wahrscheinliche maximale Größe, das Zuteilen, vielleicht 256 Bytes für eine Schnur über den Daumen gepeilt, die nur jemals jemandes Vornamen versorgt.

Schnuren im GRUNDLEGENDEN Atari können nicht Mitglieder der Reihe selbst sein, so muss die Reihe von Schnuren vom Programmierer durchgeführt werden. Schnuren können sich im Gedächtnis bewegen, so ist es zum Beispiel nicht allgemein möglich, ihre Speicheradressen in einer Reihe zu versorgen. Für kurze Schnuren ungefähr derselben Länge stattdessen wird eine Reihe allgemein mit dem Polstern gebaut, so dass die Schnuren alle gleich sind, sind Länge und die n-te Schnur in der Reihe n×l Charaktere darin, wo l die Länge der Schnur ist. Gemäß Bill Wilkinson, dem Chefprogrammierer an SMI, war es unausführbar, um Schnur-Reihe mit Schnuren durchzuführen, die größer waren als eine Seite (256 Charaktere).

Lange Schnur-Initialisierung hat gewöhnlich Schleifen verlangt. Dennoch hat die Sprache schnelle Schnur-Initialisierung mit dem folgenden Trick ermöglicht:

REM Der folgende initialisiert A$ mit 1000 Charakteren von x

DUNKLER A$ (1000)

A$ = "x": A$ (1000) =A$: A$ (2) =A$\

Eingang/Produktion

CIO Übersicht

Der Atari OS schließt ein Subsystem für den peripherischen Gerät-Eingang/Produktion (Eingabe/Ausgabe) bekannt als CIO (Zentraler Eingang/Produktion) ein. Die ganze Eingabe/Ausgabe ist einen Mittelpunkt des Zugangs (E45C) durchgegangen, der die Adresse eines Eingabe/Ausgabe-Kontrollblocks (IOCB) passiert, eine 16-Byte-Struktur, die definiert, welches Gerät gemeint geworden ist, und welcher Operation (gelesen, schreiben, suchen usw.). Es gibt 8 solche IOCBs, die an festen Positionen in der Seite 3 des Gedächtnisses von dazu zugeteilt sind.

Die meisten Programme können deshalb geschrieben werden, unabhängig von welchem Gerät sie verwenden könnten, weil sie alle sich einer allgemeinen Schnittstelle anpassen - war das auf Hauscomputern sehr selten, als Atari GRUNDLEGEND zuerst gemacht wurde. virtuelle Geräte wie der Schirm und der Redakteur,

CIO Zugang im GRUNDLEGENDEN

Atari GRUNDLEGENDE Unterstützungen CIO Zugang mit vorbestellten Wörtern und. Es gibt Routinen im OS für die Grafik füllen und ziehen, aber sie sind als spezifische GRUNDLEGENDE Schlüsselwörter (z.B oder, als in anderen GRUNDLAGEN) nicht verfügbar, aber können an durch den allgemeinen CIO Zugang-Punkt bekommen werden, der den GRUNDLEGENDEN Befehl hat.

Es ist seltsam, dass eine Maschine, die mit Grafikfähigkeiten höchst ausgestattet ist, sie zum GRUNDLEGENDEN nicht ausgestellt hat, wenn sie bereits dort in der Hardware und dem OS sind. Man könnte annehmen, dass die GRUNDLEGENDEN Programmierer keine Zeit mehr gehabt haben oder Raum, um sie zum GRUNDLEGENDEN tokenizer hinzuzufügen: Sie sind in Varianten solcher als Turbo-grundlegend XL, und auf anderen Sprachen verfügbar.

Bis zu acht IOCBs können im Gebrauch auf einmal sein, numeriert 0 bis 7 (0, war standardmäßig, der Redakteur). Die GRUNDLEGENDE Behauptung wurde verwendet, um ein Gerät auf den Eingabe/Ausgabe-Zugang vorzubereiten:

REM Opens das Kassette-Gerät auf dem Kanal 1, um in GRUNDLEGENDEM zu lesen

ÖFFNEN SIE SICH #1,4,0, "C:MYPROG.DAT"

Hier stellen Mittel "sicher, dass Kanal 1" frei ist (ein Fehler resultiert sonst), nennen Sie den Fahrer, um das Gerät vorzubereiten (das wird die Kassette-Band-Spulen auf die Spannung setzen und vorwärts gehen die Köpfe, die die Kassette behalten, binden "Pause gemachten" Spieler;

Vorbestellter IOCBs im GRUNDLEGENDEN Atari

GRUNDLEGENDER ATARI weist Zugang zu IOCB 0 (der Redakteur,) zurück und bestellt IOCB 7 für den Druck und die Kassette-Operationen mit den eingebauten Befehlen vor, obwohl es nichts gibt, um Drucker oder die Kassette aufzuhören, die auf anderen Kanälen auch wird verwendet. IOCB 6 wird verwendet, für auf das Grafikschirm-Gerät zuzugreifen, um Linien zu ziehen, Gestalten und so weiter füllend. und Produktion die Kompakttokenized-Form des GRUNDLEGENDEN Programms, und die Produktion und der Eingang die Textquelle, gerade als ob an sie oder vom Redakteur gesandt wurde.

Für die anderen CIO-Funktionen, Atari GRUNDLEGENDER Gebrauch die Behauptung. Das gerade Blüte ein IOCB und Anrufe der CIO Zugang-Punkt; einige der anderen Befehle (und so weiter) kann mit der allgemeineren Form erreicht werden.

Aber die Form von XIO ist für GRUNDLEGENDE Benutzer nicht sehr freundlich, und es wird größtenteils für ungewöhnliche Funktionen verwendet, die zu einem besonderen Gerät spezifisch sind. Zum Beispiel besteht ein Gerät genannt "Mehrmaus", die einer Atari ST-Maus, 8 Bit trakball, Berührungsblock, oder Steuerknüppel erlaubt, als ein Gerät behandelt zu werden, wodurch die Position des Maus-Cursors gesetzt oder mit und Befehle bekommen wird. Es sollte hier nicht vergessen werden das bedeutet nicht, wie es in vielen GRUNDLAGEN tut, einen Punkt auf dem Schirm zieht, aber einen IOCB Kanal an einem spezifischen Platz in einer Datei anspitzt. In Atari DOS die zwei Rahmen zu und

Das Fehlerberühren

Eingabe/Ausgabe-Routinen haben Fehlercodes 128-255 (80-FF) über das Y-Register und das Setzen des Verarbeiters der tragen Fahne des Verarbeiters zurückgegeben. Einstellung die tragen Fahne ist ein ordentlicher Trick, da der Anrufer sofort branch-carry (BCC oder BCS Instruktionen) zu einer Fehlerroutine, eine kurze, schnelle und relokatierbare 6502 Instruktion (2 Bytes, 2 Zyklen) kann, ohne Y für prüfen zu müssen (hoffen wir), normaler Fall, wo es keinen Fehler gibt.

Als mit anderen Aspekten des CIO waren Fehlercodes über Geräte üblich, aber konnten für besondere Geräte erweitert werden. Fehlerdressierer konnten so ganz allgemein geschrieben werden, um anmutig zu scheitern, vielleicht eine Nachricht auszustellen, den Benutzer zu fragen, ob man neu verhandelt, den Fehler und so weiter fortpflanzt.

Es gab keine benutzerfreundlichen Nachrichten für Standardfehler-Codes im OS selbst. Sie würden durch die Anwendung interpretiert.

Atari GRUNDLEGEND (und andere Sprachen) hatte so die Freiheit, Fehlercodes weniger als 128 und diese beabsichtigten verschiedenen Dinge auf verschiedenen Sprachen zurückzugeben. Es gab nichts, um einen perversen implementer das Verwenden von Fehlercodes 128 oder oben, aber kein Ansporn aufzuhören, so zu tun.

Grafik

Hardware-Unterstützung

Die Atari 8-Bit-Familie der Hardware schließt ganz ein hoch entwickeltes Grafiksystem ein, von seiner Basis in Videospiel-Konsolen stammend.

Verschieden von vielen anderen Hauscomputern, der Grafik"Weise" - werden die Größe von Pixeln und die Zahl von Farben, die gezeigt werden konnten - für die ganze Anzeige nicht befestigt, aber Linie-für-Linie auf einer kleinen Mikrosteuerungssprache beschrieben, um eine Anzeigeliste zu schaffen. Jeder Zugang in dieser Liste beschreibt eine oder mehr Linien auf der Fernsehanzeige, Spitze zum Boden. Ein hingebungsvoller Grafikmikroprozessor, "ANTIC", liest diese während des horizontalen Abschalten-Zwischenraums vor, um zu bestimmen, wie man die folgende Fernsehlinie zeigt. Linien können (256 Pixel schmal sein, die an der höchsten Entschlossenheit breit sind), normal (320 Pixel) oder breit (384 Pixel). Charaktere sind 8×8, und ein Anzeigelistenzugang würde so 8 Fernsehlinien beschreiben; der ANTIC behält einen Schalter (ein Verschiebungsregister) der Linie in der Schriftart, die Pixel-Daten von für jede jener Linien zu lesen, so nur einen Zugang für die ganzen 8 Linien in der Anzeige verlangend. Ähnlich für größere, rauere Grafikweisen ist der ANTIC Span die Information nachgegangen, so dass es die Daten auf mehr als einer Fernsehlinie zeigen würde.

Der ANTIC muss so im RAM Verweise anbringen und behauptet Kontrolle über den Adressbus und Datenbus, um so zu tun. Das "stiehlt" Zyklen der 6502 Hauptzentraleinheit. Der Sinclair ZX81 hatte und

Das, amerikanische Maschinen gesagt werden, wird zu amerikanischen NTSC Videosystemen an ungefähr 1.79 MHz abgestoppt, um das vertikale 60-Hz-Formblatt und entsprechend kürzere horizontale Formblatt zu passen; aber europäische FREUND-Modelle werden an 1.77 MHz abgestoppt, um ein vertikales 50-Hz-Formblatt zu passen. Weil europäischer Maschinendienst, den weniger vertikales Formblatt pro Sekunde unterbricht, es Hauptstrecke-Programme geführt schneller, und Code mit vertikal-leeren Unterbrechungen geführt langsamer macht als amerikanische.

Ursprünglicher Atari 800 und 400 Systeme haben einen anderen Verarbeiter, CTIA eingeschlossen, der Antic beim Produzieren der Grafikproduktion geholfen hat. Kurz nach der Einführung wurde dieser Span zum in alle nachfolgenden 8-Bit-Modelle von Atari auch eingeschlossenen GTIA befördert. GTIA stellt drei neue Farbenverarbeitungsweisen zur Verfügung, die über Atari GRUNDLEGENDE GRAFIK-Verfahren 9, 10, und 11 zugänglich sind. Die alternativen Farbeninterpretationen sind die Basis von zusätzlichen Grafikweisen, aber zu den Zwecken, Atari GRUNDLEGEND zu besprechen, betreffen diese die grundlegende Beschreibung nicht, weil sie ziemlich gleicher Weg als vorhandene Weisen programmiert wurden.

Elfen (Grafik des Spielers/Rakete)

Ein Hardware-Elfe-System wird durch CTIA/GTIA behandelt. Der offizielle ATARI-Name für das Elfe-System ist "Grafik des Spielers/Rakete", seitdem es entworfen wurde, um das Bedürfnis zu reduzieren, Anzeigegedächtnis für schnell bewegende Gegenstände, wie der "Spieler" und seine Waffen, "die Raketen", in schießen Spiel zu manipulieren. Sieh die CTIA/GTIA Seite für die technische Beschreibung der Durchführung des Spielers/Rakete.

GRUNDLEGENDER Atari stellt direkte Unterstützung für die Grafik des Spielers/Rakete außer der Fähigkeit dazu nicht zur Verfügung gucken/STOßEN. Das Bewegen einer Elfe ist so horizontal einfach wie das Ändern eines Registers im CTIA/GTIA (im GRUNDLEGENDEN Atari, eine Single STOßEN Behauptung bewegt einen Spieler oder Rakete horizontal). Das Bewegen der Elfe wird vertikal durch das Block-Bewegen (oder das Drehen) die Definition seines glyph im Gedächtnis erreicht. Das ist auf 6502 Maschinensprache ziemlich schnell, wenn auch die 6502 an einer Instruktion der Block-Bewegung wie die 8080 Mangel haben, weil die Elfe genau 128 oder 256 Bytes lang ist, und so kann das Indexieren in einem Byte-breiten Register auf den 6502 leicht angepasst werden. Jedoch sind Block-Speicherbewegungen im GRUNDLEGENDEN Atari schmerzlich langsam. GRUNDLEGENDE Programme mit Elfen werden normalerweise eine von zwei Methoden verwenden, hohe Geschwindigkeitsspeicherbewegungen durchzuführen: Zuerst schließt kurzen USR Routinen ein, um die Speicherbewegungen durchzuführen. Das flexible Schnur-Management von BASIC von Atari der zweiten Großtaten, indem es eine große Schnur für die Speicherkarte des Spielers/Rakete definiert, und dann Schnur verwendet, kopiert Funktionen, die Gedächtnis mit Maschinensprachgeschwindigkeiten bewegen.

Der sorgfältige Gebrauch von Elfen mit den anderen Grafikeigenschaften der Hardware von Atari kann Grafikprogrammierung, besonders Spiele, bedeutsam einfacher machen.

Unterbrechungen

Kurze Abteilungen des Maschinensprachcodes können während des horizontalen Abschalten-Zwischenraums durchgeführt werden, und das wird normalerweise getan, um die Werte in den Farbenregistern, horizontale Elfe-Positionen und so weiter so das Geben des Äußeren von mehr Farben oder flexibleren Elfen zu ändern, als die Hardware ab initio zur Verfügung stellt. Dieser Maschinencode muss sehr kurz sein, weil es nicht viele während jedes horizontalen Formblattes verfügbare Uhr-Zyklen gibt. Diese Routinen sind als DLIs (Anzeigelistenunterbrechungen) bekannt, aber sind einfach von Grenzen zum GRUNDLEGENDEN Atari, weil es zu langsam ist, um sogar die einfachste von Aufgaben durchzuführen. Ausschließlich sollten diese "DLI Routinen" genannt werden, aber werden gewöhnlich gerade "DLIs" genannt.

Während des Zwischenraums der vertikalen Austastlücke, eines viel längeren Zwischenraums, wird eine andere Unterbrechung erzeugt und die Betriebssystemhaken darin, um einige Hauswirtschaft-Aufgaben durchzuführen. Wieder ist das für den Atari GRUNDLEGEND direkt nicht verfügbar, obwohl mit einer Manipulation und strengen Beschränkungen (weil GRUNDLEGEND nicht entworfen wurde, um einspringend zu sein) es für einen VBI (vertikale leere Unterbrechung) Routine möglich ist, eine GRUNDLEGENDE Routine zu nennen. Der VBI ist ein Lieblingsplatz, einen Code zu durchstechen, der oft durchführen muss.

Betriebssystembetreuung

Das Betriebssystem hat mehrere "Standardgrafikweisen" zur Verfügung gestellt, durch die es eine Anzeigeliste automatisch aufgestellt hat, und Gedächtnis am Spitzenende des freien Gedächtnisses zugeteilt hat. Diese haben eine Reihe von Grafikweisen einschließlich Textweisen, Grafikweisen zur Verfügung gestellt und haben Text-Und-Grafikweisen gemischt. Es waren nur diese vorherbestimmten Weisen, die für den GRUNDLEGENDEN Atari verfügbar waren.

Der Mangel an einer OS Routine für ein Mehrzweckgedächtnis bewegt in Kunsterzeugnissen des Grafikdesigns vielleicht ausgestellte Routine. Zum Beispiel, sobald ein Grafikkanal geöffnet worden war, war es nicht möglich (oder mindestens leicht), es im Gedächtnis herunterzulassen, so dass anderes Gedächtnis darüber vorbestellt werden konnte, der bedeutet hat, dass allgemein ein Programm "mehr zuteilen würde, als genug" Gedächtnis über dem hohen Speicherzeigestock (HIMEM) dann untergegangen ist, die Grafikweise (mit der Behauptung), um das Betriebssystem zu haben, teilen Gedächtnis für die Anzeige unter dem neuen Hochwasser-Zeichen zu.

Die meisten Register von ANTIC waren das nur Schreiben, ihre Werte konnten nicht gelesen werden (oder eher konnten sie sein, aber waren sinnlos oder haben verschiedene Werte von denjenigen zurückgegeben, die geschrieben sind, weil sie gleichzeitig gesandt wurden). Das Betriebssystem hat Kopien der Werte geschrieben in "Schattenregistern" in Seiten 0 und 2 des Gedächtnisses gehalten (Seite 1 war der Hardware-Stapel auf 6502 Verarbeitern), so Programmen erlaubend, die Werte zu lesen. Die Werte geschrieben hier wurden zu den ANTIC-Registern während der vertikalen leeren Unterbrechung umgeschrieben.

Das Betriebssystem hat Zugang zur Grafik auf zwei Weisen zur Verfügung gestellt: Durch das Erlauben direkt liest und schreibt (im Atari GRUNDLEGEND, durch, und befiehlt zum Gedächtnis, das wird pflegt, die Grafik, durch das Bilden verfügbar die Adresse des Anfangs dieses Gedächtnisses in einer wohl bekannten Position, und zu den Schattenregistern zu halten), und auch durch die Versorgung eines CIO Geräts, "S:", durch den CIO-Befehle ausgegeben werden konnten. Der S: Gerät hat den Mehrzweckbefehl unterstützt, der verwendet ist, um durchzuführen, und (leider das letzte wurde zum Atari GRUNDLEGEND nicht ausgestellt, und war auch ziemlich heikel, um in der besten von Zeiten in Ordnung zu bringen, weil es einen ziemlich primitiven scanline verwendet hat, füllen sich, der Linien zum Recht nach links, Boden zur Spitze gefüllt hat, aber angehalten hat, sobald eine Grenze entsprochen wurde, anstatt eine volle Überschwemmung zur Verfügung zu stellen, füllen sich).

In einem Weg gab es etwas Verwirrung und Übergreifen hier im Design. Zum Beispiel konnten der CIO und die Befehle analog dem Lesen und Schreiben der Position des Cursors betrachtet werden, aber stattdessen hatten sie eine getrennte Schnittstelle durch bestimmte Speicherpositionen. So war die Aussetzung der Grafik-API in GRUNDLEGENDE und andere Sprachen vielleicht nicht so orthogonal und mit dem Gerät unabhängig, wie es gewesen sein könnte.

Atari GRUNDLEGENDE Unterstützung

Atari GRUNDLEGENDE unterstützte Grafik mit den Behauptungen, und.

Wegen der durch das Betriebssystem zur Verfügung gestellten Unterstützung hat GRUNDLEGENDER Atari die meisten seiner Grafikbehauptungen als einfache Anrufe zu jenen Routinen durchgeführt oder hat gerade die Speicherregister für die Cursor-Position und so weiter gesetzt. In vielen Fällen hat es einfach Programmierer verlassen, um zu verwenden, und Behauptungen. Es konnte dass einige Behauptungen solcher als behauptet werden

Der Mangel an einem Befehl ist eine bemerkenswerte Weglassung denkend, dass die Routine, jedoch primitiv, im Betriebssystem verfügbar war. Es konnte mit dem Mehrzweckbefehl erreicht werden, aber war ziemlich knifflig:

REM Die Koordinaten der Ecken des füllen Vierseits muss aufgestellt werden

REM vor dem Benennen von XIO, das Verwenden STÖßT in den IOCB. Das ist ein echter Trick weil

REM, den es nicht leicht ist herauszufinden, wo der IOCB ist. Irgendwie dann tun wir:

XIO 18,#6,12,0, "S:"

REM XIO # = verlängerter IO.

REM 18 = Füllen Sich (17=Drawto).

REM #6 = Auf dem Kanal 6, kartografisch dargestellt zum Grafikschirm-Gerät.

REM 12 = Lesen/Schreiben.

REM 0 = Überflüssig (unbenutzt).

REM "S:" = Logisches Gerät, verwendet nur für den OFFENEN und eine Platte

REM befiehlt mit einem Ziel solcher bezüglich eines UMBENENNENS

REM Redundant hier, aber verwendet durch die Tagung

Es gab keine GRUNDLEGENDE Unterstützung für Elfen, obwohl sie zum Programm im GRUNDLEGENDEN Verwenden nicht besonders schwierig waren und, aber das konnte besonders schnell in, sagen wir, Spielen nicht getan werden. Ähnlich konnte die Aufstellung einer kundenspezifischen Anzeigeliste getan werden, aber war ziemlich schwierig, und wurde viel leichter auf der Maschinensprache und effektiv getan. Elfe-Daten konnten mit einer Behauptung, und dann d ins Gedächtnis definiert werden. Jedoch war das Scrollen einer Elfe vertikal zum Beispiel im GRUNDLEGENDEN nicht schnell, weil es keine "Block" Bewegungsspeicherbehauptung gab und eine langsame Schleife von s und s verlangt hat.

Hardware-Unterstützung

Im Vergleich mit den GRUNDLAGEN von einigen konkurrierenden Maschinen zurzeit hatte GRUNDLEGENDER Atari gute eingebaute Unterstützung des Tons, (der Behauptung), der Grafik (und) und peripherische Einheiten wie Steuerknüppel und Paddel . Andere Hauscomputerbenutzer wurden häufig mit rätselhaftem s für solche Programmierung verlassen.

Das, die Rahmen für viele dieser Befehle gesagt werden, waren rätselhaft, und besser im Wesentlichen klein als Maschinencode. hat vier numerische Rahmen für Wurf, Ton, Volumen und Kanal genommen (Atari 8 Bit hatten 4-Kanäle-Ton); die Behauptung hat drei gebracht, um die zahlreichen Grafikweisen zu behandeln,

Ähnlich waren fortgeschrittene Aspekte der Hardware wie Elfen völlig aus für GRUNDLEGENDE Programmierer, und der Mangel am Zugang zu Zeitmessern hat gesunde Programmierung schwierig besonders gemacht, weil nordamerikanische Maschinen auf verschiedenen Uhr-Geschwindigkeiten vom Rest der Welt gelaufen sind (grundsätzlich, weil sie an die Geschwindigkeit des Fernsehsystems gebunden wurden).

Leistung

Auf der ursprünglichen Ausrüstung laufend, ist GRUNDLEGENDER Atari langsamer als andere GRUNDLAGEN auf der gleichzeitigen Ausrüstung für denselben Hausmarkt manchmal durch einen überraschenden Betrag besonders wenn man die Tatsache in Betracht zieht, dass die Zentraleinheit von Atari fast zweimal so schnell wie die von den meisten anderen 6502-basierten Computern dieses Zeitalters abgestoppt wurde. Die meisten dieser Probleme haben von zwei besonders schlecht durchgeführten Bit des Codes gestammt.

Man ist eine Nebenwirkung dessen, wie Atari GRUNDLEGEND Linienzahlen wiederberechnet, als das Programm geführt wird. Das bedeutet, dass ein Haben, um einen kleinen Betrag des zusätzlichen Codes zu führen, um zu finden, dass die Linie dazu springt. Das würde normalerweise ein geringes Problem sein, aber derselbe Code wird auch verwendet, um in... Schleife durchzuführen, so senkt es drastisch Leistung dieser sehr allgemeinen Schleifen (tatsächlich, die einzige Schleife-Struktur im Atari GRUNDLEGEND). Es ist offensichtlich, dass eine Linienzahl weniger als 65536 (10000) können in einer nicht unterzeichneten ganzen 16-Bit-Zahl versorgt werden, aber vermutlich haben die Entwerfer beschlossen, es als schwimmen lassend Punkt aus anderen Gründen zu versorgen.

GRUNDLEGENDER Atari ist mit Variablen der ganzen Zahl nicht gesund; alle Zahlen werden als schwimmen lassend Punkt versorgt. GRUNDLEGENDER Atari hat sich auf die eingebauten Schwimmpunkt-Routinen des Atari OS verlassen (BCD Notation), die im Vergleich zu anderen Darstellungen sogar auf derselben Hardware relativ langsam sind. Aber der grösste Teil der Langsamkeit der Durchführung liegt in einer besonders schlechten Durchführung des multiplizieren überall in den Mathebibliotheken verwendeten Unterprogramms. Das ist wirklich nicht ein Problem der Sprache selbst, aber des zu Grunde liegenden OS, aber es trägt zur allgemeinen schlechten Leistung bei. Mehr spectactularly, wirklich, die Tatsache, dass einfache Operationen der ganzen Zahl hin und her zum Schwimmpunkt wirklich umgewandelt werden, hebt den Fehler hervor, besonders denkend, dass sich die besten Eigenschaften von Atari auf die spezielle Hardware verlassen (für die Grafik, klingen Sie und so weiter), der sich rein in ganzen Zahlen befasst: Bytes oder Zwei-Byte-Wörter. Es gibt nicht sogar im Atari GRUNDLEGEND eine leichte Weise, bitwise Operationen durchzuführen.

Der MOS 6502 Verarbeiter hatte eine spezielle Weise, um sich mit BCD (und Instruktionen zu befassen, jeden 4 Bit eines Bytes als eine BCD Ziffer zu behandeln), und vielleicht der für die Entwerfer besonders attraktiv war, um Schwimmpunkt als BCD durchzuführen. Der jetzt fast universale IEEE, der 754 Standard der Darstellung von Schwimmpunkt-Zahlen noch in der Designbühne war, als die 8-Bit-Familie von Atari und seine Zeitgenossen zuerst gekommen sind, um einzukaufen, so war das Design einer FP Durchführung sehr viel bis zum OS oder GRUNDLEGENDEN Entwerfer.

Mehrere kommerzielle und shareware GRUNDLAGEN waren auf der Plattform verfügbar, die einige oder alle diese Probleme angeredet hat, auf Leistung hinauslaufend, die 3 bis 5mal schneller war als die Version von Atari. Mit diesen GRUNDLAGEN war Atari einer der schnellsten Hauscomputer seines Zeitalters.

Atari hat später eine Diskette-basierte Version von Microsoft BASIC, Atari Microsoft BASIC verkauft, und hat später geschafft, es auf eine Patrone ebenso zu passen, aber kein Bearbeiter oder Durchlaufzeit waren für die Neuverteilung verfügbar.

Fortgeschrittene Techniken

Trotz seines kleinen Fußabdrucks (8 Kilobytes) hat GRUNDLEGENDER Atari einige Eigenschaften, die ihm einige Mächte mehr fortgeschrittener, größerer Versionen von GRUNDLEGENDEN geben.

Unterprogramme

GRUNDLEGENDER Atari hat keine Durchführung von Unterprogrammen, oder eher, er hat kein Konzept lokaler Variablen. In der Fortran Fachsprache sind alle Variablen ÜBLICH.

Aber Programmierer können Benutzerfunktionen wegen der Weise vortäuschen, wie der GOSUB-Befehl in einer Variable Verweise anbringen kann. Zum Beispiel konnte ein Programmierer ein Unterprogramm an der Linie 10000 anfangen und das Programm haben initialisieren eine Variable mit dieser Zahl z.B. Der Benennen-Code kann dann einige gegenseitig verstandene Variablen initialisieren und die Behauptung verwenden, um das Unterprogramm anzurufen. Das Unterprogramm, das an der Linie anfängt, kann dann seine Operation auf den vorher bestimmten Variablen tun und Rückergebnisse in Variablen stellen, die danach verfügbar sind.

Durch die Erweiterung, wenn sich die zwei über zwei Variablen, eine Reihe genannt, sagen wir, und eine numerische genannte Variable einigen, dann kann ein Stapel in der Software durchgeführt werden, wodurch lokale Variablen gestoßen und zum Stapel knallen gelassen werden und so lokale Variablen durchführen. Zum Beispiel:

10 DUNKLER STAPEL (100)

20 STACKTOP = 0

35 LINIENZAHLEN VON REM VON EINIGEN FUNKTIONEN FOLGEN

40 FACTORIAL = 8000

60 PUSHSTACK = 2100

70 POPSTACK = 2200

75 REM WOLLEN WIR ACHT FACTORIAL SCHÄTZEN

80 LASSEN STACKVALUE = 8: GOSUB PUSHSTACK

90 GOSUB FACTORIAL

100 GOSUB POPSTACK

110 DRUCK "ACHT FACTORIAL IST"; STACKVALUE

120 ENDE

2099 UNTERPROGRAMM VON REM PUSHSTACK

2100-STAPEL (STACKTOP) = STACKVALUE: STACKTOP = STACKTOP + 1: GEBEN SIE ZURÜCK

2199 UNTERPROGRAMM VON REM POPSTACK

2200 STACKTOP = STACKTOP - 1: STACKVALUE = STAPEL (STACKTOP): GEBEN SIE ZURÜCK

7999 UNTERPROGRAMM VON REM FACTORIAL

8000 GOSUB POPSTACK

8010 WENN STACKVALUE

GRUNDLEGENDE oder FORTRAN Fans können bemerken, dass Linie 8010 optimiert werden kann, weil ein von einer RÜCKKEHR gefolgter GOSUB dasselbe als ein GOTO ist, weil das Unterprogramm die RÜCKKEHR für uns tun wird:

Das ist natürlich ein süßes Beispiel dessen, warum die GOTO Behauptung Schädlich Betrachtet wird.

Schließt ein

Weil Atari GRUNDLEGEND in Linien des Codes von jedem Gerät, nicht nur der Redakteur lesen kann, ist es möglich, Blöcke des Codes zu sparen und dann sie zu lesen in und sie in ein einzelnes Programm zu verschmelzen, gerade als ob sie in den Redakteur getippt worden waren. Natürlich bedeutet das, dass die Linien, die darin lesen werden, Linienzahlen haben müssen, die im Hauptprogramm nicht verwendet werden. Der zu verschmelzende Code wird einem Gerät als Text mit dem Befehl geschrieben, und kann ins Programm mit dem Befehl zurückgestellt werden. So ist der Strom des Textes auf dem Gerät aus dem Gesichtspunkt des GRUNDLEGENDEN Dolmetschers, nicht verschieden davon hatte es gewesen getippt in den Redakteur.

Indem

sie Blöcke von Linienzahlen sorgfältig verwenden, die nicht überlappen, können Programmierer Bibliotheken von Unterprogrammen bauen (Funktionen als oben vortäuschend), und sie in neue Programme, wie erforderlich, verschmelzen.

Eingebettete Maschinensprache

GRUNDLEGENDER Atari hat keinen eingebauten Zusammenbau-Sprachverarbeiter. Maschinencode wird allgemein als Bytes in Schnuren versorgt. Maschinencodefunktionen werden vom Atari angerufen, der mit der Behauptung grundlegend ist, die auf die ziemlich gleiche Weise als, aber mit weniger Garantien arbeitet.

String-Variablen können einigen der 256 in der ATASCII Codierung verfügbaren Charaktere halten, und so kann jedes Byte des für eine String-Variable vorbestellten Gedächtnisses jede Zahl von 0 bis 255, einschließlich der Charaktere 34 (22, "Zitat") und 155 (9B halten, "HEREINGEHEN"), obwohl diese heikel sind, um einzutippen. Kurze relokatierbare 6502 Maschinensprachroutinen können zu ATASCII Charakteren umgewandelt und in der String-Variable versorgt werden. Die Maschinensprachroutine kann als eine Funktion mit genannt werden

Diese Routinen müssen relokatierbaren Maschinencode verwenden: Das heißt, können sie nicht Instruktionen wie oder diesen Gebrauch absolute Adressen verwenden, außer zu wohl bekannten Adressen im OS und so weiter; sie können nur Zweiginstruktionen solcher als verwenden (Zweig, wenn klar tragen), die umgekehrt oder vorwärts um ungefähr 128 (80) springen, weil die Schnuren im Gedächtnis bewegt werden konnten. Aus diesem Grund ist (0600-06FF) Seite 6, eine Seite des Gedächtnisses, das nicht durch den GRUNDLEGENDEN oder das Betriebssystem verwendet ist, sehr populär, um kleine Routinen zu versorgen; aber natürlich führt man die Gefahr, dass eine andere Routine auch dort könnte versorgt werden mögen.

Auf den 6502 ist Wiederposition nicht trivial. An diesen Tagen nehmen wir an, dass Programme ziemlich viel überall im Gedächtnis sitzen; der Lader und Verarbeiter arbeiten zusammen, um das geschehen zu lassen. Aber Mikroprozessoren dieses Zeitalters haben das nicht getan. Die 6502 wurden besonders gehindert, indem sie sehr wenige Umweg-Instruktionen gehabt worden ist, und diejenigen hatte es waren asymmetrisch: und in verschiedenen Richtungen indirekte Register. Das führt entweder zum ziemlich plumpen Code, der für immer Zeug zwischen Registern oder klugen, aber stumpfen Code bewegt, der sie behält, wo sie sein müssen, selbst wenn es offensichtlicher scheinen würde, etwas anderes dort zu durchstechen. Der 6502 Befehlssatz ist klein genug, dass, im Laufe einer kurzen Zeit, Programmierer den kompletten Verarbeiter in ihren Köpfen sogar unten zum Wissen modellieren können, wie viele Zyklen jede Instruktion nimmt, und dann fangen Sie an, kluge Tricks zu machen.

Sowie mit dem Maschinencode für fortgeschrittene Funktionen werden ziemlich triviale Routinen manchmal einfach verwendet, um Zugang zu Funktionen im Atari OS zu gewinnen, die durch den GRUNDLEGENDEN Atari nicht zur Verfügung gestellt worden sind: Zum Beispiel Block-Anordnung zu und von Geräten (lässt Atari GRUNDLEGEND es nur byteweise, mit getan werden und, der viel länger nimmt, um gerade hin und her durch die OS Schichten zu schlurfen, als das wirkliche Schreiben des eines Bytes von Daten), oder um Blöcke über das Gedächtnis zu lesen und zu schreiben (und Befehle waren auch wegen der numerischen Probleme unnötigerweise langsam, die oben beschrieben sind).

Maschinencode kann auch als Zahlen in Behauptungen versorgt werden, aber das ist darin pathologisch ein Byte wird dann als sechs Bytes versorgt, die Punkt-Zahl plus mehrere andere allgemeine Kosten schwimmen lassen, um einfach sonst wohin als ein Byte gelegt zu werden. Diese Methode wird manchmal für sehr kurze Routinen verwendet, wo Größe nicht wichtig ist, aber die Bequemlichkeit des Gebrauches ist (keine speziellen Lader oder kluge tippende Routinen erforderlich sind), oder für einmalige Programme, die dann den resultierenden Block von Bytes ausschreiben (wahrscheinlich versorgt in einer Schnur), wird als ein Programm ausgeschrieben, das im späteren Byte-für-Byte gelesen werden kann.

Atari GRUNDLEGENDE Schlüsselwörter

ABS:

ADR:

UND:

ASC:

ATN:

AUF WIEDERSEHEN:

CHR$:

CLOAD:

KLOTZ:

NAHE:

CLR:

FARBE:

COM:

CONT:

WEIL:

CSAVE:

DATEN:

DEG:

DUNKEL:

DOS:

DRAWTO:

ENDE:

GEHEN SIE HEREIN:

EXP:

FÜR:

FRE:

KOMMEN SIE:

GOSUB:

GOTO und GEHEN ZU:

GRAFIK:

WENN:

EINGANG:

INTERNE NUMMER:

LEN:

LASSEN SIE:

LISTE:

LAST:

LASSEN SIE SICH NIEDER:

KLOTZ:

LPRINT:

NEU:

ALS NÄCHSTES:

NICHT:

ZEICHEN:

AUF:

OFFEN:

ODER:

PADDEL:

PIEPSEN:

ANSCHLAG:

PUNKT:

STOßEN SIE:

KNALL:

POSITION:

DRUCK und?:

PTRIG:

STELLEN SIE:

RAD:

LESEN SIE:

REM:

STELLEN SIE WIEDER HER:

RÜCKKEHR:

RND:

GEFÜHRT:

SPAREN SIE:

SETCOLOR:

SGN:

SÜNDE:

TON:

SQR:

STATUS:

SCHRITT:

STOCK:

HALT:

STRIG:

STR$:

DANN:

ZU:

FALLE:

USR:

VAL:

XIO:

Das Laufen ohne GRUNDLEGENDEN Atari

Auf den XL/XE Modellen konnte GRUNDLEGENDER Atari durch das Unterdrücken des AUSWAHL-Schlüssels arbeitsunfähig sein, während er den Computer gestartet hat. Der XEGS würde GRUNDLEGEND, wenn angetrieben, ohne die beigefügte Tastatur unbrauchbar machen.

Wenn eine andere Patrone eingefügt wurde, kann sie auch Atari GRUNDLEGEND unbrauchbar machen, wenn sie denselben Adressraum verwendet haben.

Siehe auch

  • GRUNDLEGEND + - Ein verlängerter GRUNDLEGENDER für Atari, von Optimized Systems Software (OSS)
  • Turbogrundlegend XL - Freeware GRUNDLEGEND vereinbar mit dem Atari GRUNDLEGEND, auch verfügbar mit einem Bearbeiter für die größere Geschwindigkeit und Extrabefehle.
  • - Ein Detaillieren des Dialekts und Dolmetschers

Zeichen

Außenverbindungen


Romsey Abbey / Abc (Programmiersprache)
Impressum & Datenschutz