This page (revision-8) was last changed on 03-Feb-2023 15:21 by Florian Dingler 

This page was created on 26-Jan-2011 09:59 by Gromit

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
8 03-Feb-2023 15:21 8 KB Florian Dingler to previous
7 28-Jan-2011 11:01 8 KB Gromit to previous | to last
6 28-Jan-2011 11:00 8 KB Gromit to previous | to last
5 26-Jan-2011 10:02 243 bytes Gromit to previous | to last
4 26-Jan-2011 10:02 274 bytes Gromit to previous | to last
3 26-Jan-2011 10:01 266 bytes Gromit to previous | to last
2 26-Jan-2011 10:00 268 bytes Gromit to previous | to last
1 26-Jan-2011 09:59 268 bytes Gromit to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 10 changed one line
Heute kommen wir zur vierten Folge unseres Action!-Centers. Wir haben bereits eine Reihe von Zuschriften und Anrufen von Lesern erhalten. die an den Artikeln im __ATARI''magazin''__ lebhaftes Interesse zeigten, sich aber unter dem Namen Action! nichts Konkretes vorstellen konnten. Das ist Grund genug für uns, sich dieser Leser anzunehmen und näher auf Grundlagen und Philosophie dieser Sprache einzugehen.
Heute kommen wir zur vierten Folge unseres Action!-Centers. Wir haben bereits eine Reihe von Zuschriften und Anrufen von Lesern erhalten, die an den Artikeln im __ATARI''magazin''__ lebhaftes Interesse zeigten, sich aber unter dem Namen Action! nichts Konkretes vorstellen konnten. Das ist Grund genug für uns, sich dieser Leser anzunehmen und näher auf Grundlagen und Philosophie dieser Sprache einzugehen.
At line 12 changed one line
Am besten beginnt man in einem solchen Fall mit der Geschichte. Alles begann 1978. als sich Atari auf der Suche nach einem Basic für die damals in Entwicklung befindlichen Computer der Serien 400 und 800 befand. Das zu diesem Zeitpunkt bereits populäre Microsoft-Basic wollte nicht so recht in das zur Verfügung stehende 8-KByte-ROM der neuen Rechner passen. jedenfalls nicht mit den Grafik- und Sound-Befehlen, die man sich bei Atari vorstellte. Daher wurde die kleine Firma Shepardson Microsystems Inc., die auch schon ein DOS für Apple entworfen hatte, mit einer Neuentwicklung beauftragt.
Am besten beginnt man in einem solchen Fall mit der Geschichte. Alles begann 1978, als sich Atari auf der Suche nach einem Basic für die damals in Entwicklung befindlichen Computer der Serien 400 und 800 befand. Das zu diesem Zeitpunkt bereits populäre Microsoft-Basic wollte nicht so recht in das zur Verfügung stehende 8-KByte-ROM der neuen Rechner passen, jedenfalls nicht mit den Grafik- und Sound-Befehlen, die man sich bei Atari vorstellte. Daher wurde die kleine Firma Shepardson Microsystems Inc., die auch schon ein DOS für Apple entworfen hatte, mit einer Neuentwicklung beauftragt.
At line 14 changed one line
So entstand das Atari-Basic, welches sich in wenig veränderter Form auch heute noch im 130XE befindet. Bei dieser Firma arbeitete Bill Wilkinson. der auch schnell erkannte, dass hier das letzte Wort noch nicht gesprochen war. Er gründete zusammen mit Mike Peters die Firma Optimized System Software (OSS), die wohl jedem Atari-Besitzer ein Begriff ist. OSS entwickelte das diskettenorientierte Basic/A+, das CP/A-DOS, schließlich mit Basic XL die erste Programmiersprache in einer Supercartridge, den MAC/65, das DOS XL und in direkter Folge das Basic XE.
So entstand das Atari-Basic, welches sich in wenig veränderter Form auch heute noch im 130XE befindet. Bei dieser Firma arbeitete Bill Wilkinson, der auch schnell erkannte, dass hier das letzte Wort noch nicht gesprochen war. Er gründete zusammen mit Mike Peters die Firma Optimized System Software (OSS), die wohl jedem Atari-Besitzer ein Begriff ist. OSS entwickelte das diskettenorientierte Basic/A+, das CP/A-DOS, schließlich mit Basic XL die erste Programmiersprache in einer Supercartridge, den MAC/65, das DOS XL und in direkter Folge das Basic XE.
At line 16 changed one line
Spezialisiert auf die Produktion von Programmiersprachen, griff man bei OSS auch zu, als Clinton Parker der Firma ein gänzlich neues und vielversprechendes Produkt anbot, das Action! heißen sollte. OSS verpackte diese komplette Programmierumgebung in die damals gerade fertig gestellte Supercartridge, und im August 1983 war es dann soweit. Action! begeisterte die amerikanische Fachpresse, und so bestellte auch ich eine der damals noch poppig orangefarbenen Cartridges für knapp 300 DM. Es war kein Fehlgriff. wie sich in den folgenden Jahren herausstellen sollte.
Spezialisiert auf die Produktion von Programmiersprachen, griff man bei OSS auch zu, als Clinton Parker der Firma ein gänzlich neues und vielversprechendes Produkt anbot, das Action! heißen sollte. OSS verpackte diese komplette Programmierumgebung in die damals gerade fertig gestellte Supercartridge, und im August 1983 war es dann soweit. Action! begeisterte die amerikanische Fachpresse, und so bestellte auch ich eine der damals noch poppig orangefarbenen Cartridges für knapp 300 DM. Es war kein Fehlgriff, wie sich in den folgenden Jahren herausstellen sollte.
At line 18 changed one line
Clint Parker hatte sich beim Entwurf von Action! nicht nur an bestehenden Standardsprachen wie Pascal, C oder Basic orientiert‚ sondern nahm lediglich das, was er für positiv hielt. Besonders wichtig war auch, dass sich all dies effektiv auf einem 6502 programmieren ließ. So entwickelte er einen der schnellsten (wenn nicht überhaupt den schnellsten) Compiler für die 6502-Rechner. Dies bezieht sich sowohl auf die Kompilierzeit als auch auf die erzeugten Programme.
Clinton Parker hatte sich beim Entwurf von Action! nicht nur an bestehenden Standardsprachen wie Pascal, C oder Basic orientiert‚ sondern nahm lediglich das, was er für positiv hielt. Besonders wichtig war auch, dass sich all dies effektiv auf einem 6502 programmieren ließ. So entwickelte er einen der schnellsten (wenn nicht überhaupt den schnellsten) Compiler für die 6502-Rechner. Dies bezieht sich sowohl auf die Kompilierzeit als auch auf die erzeugten Programme.
At line 20 changed one line
Man kann Action! also getrost als eine Mischung aus vielen Programmiersprachen betrachten. Die Einfachheit der Bedienung ist einem Basic-Interpreter vergleichbar, die Struktur der Sprache erinnert an Pascal. und die Möglichkeit, fast auf Maschinenebene zu programmieren. ist eigentlich eine Spezialität von C. Nicht zuletzt kann man die Geschwindigkeit der erzeugten Programme wohl nur mit Assembler erreichen. Zu all dem gesellte sich der überaus elegante Texteditor. der mit seiner Fähigkeit, zwei Texte gleichzeitig zu bearbeiten. für 8-Bit-Computer Maßstäbe setzte.
Man kann Action! also getrost als eine Mischung aus vielen Programmiersprachen betrachten. Die Einfachheit der Bedienung ist einem Basic-Interpreter vergleichbar, die Struktur der Sprache erinnert an Pascal, und die Möglichkeit, fast auf Maschinenebene zu programmieren, ist eigentlich eine Spezialität von C. Nicht zuletzt kann man die Geschwindigkeit der erzeugten Programme wohl nur mit Assembler erreichen. Zu all dem gesellte sich der überaus elegante Texteditor, der mit seiner Fähigkeit, zwei Texte gleichzeitig zu bearbeiten, für 8-Bit-Computer Maßstäbe setzte.
At line 24 changed one line
Strukturiert bedeutet. dass ein Programm strikt in Module zu unterteilen ist, die jeweils nur einen Eingang und Ausgang besitzen. Auf diese Weise wird der berüchtigte “Spaghetti-Code" vermieden, der bei allzu sorgloser Programmierung in Basic häufig resultiert. Strukturierte Sprachen erfordern außerdem. dass alle Variablen vor der Verwendung definiert werden.
Strukturiert bedeutet, dass ein Programm strikt in Module zu unterteilen ist, die jeweils nur einen Eingang und Ausgang besitzen. Auf diese Weise wird der berüchtigte “Spaghetti-Code" vermieden, der bei allzu sorgloser Programmierung in Basic häufig resultiert. Strukturierte Sprachen erfordern außerdem, dass alle Variablen vor der Verwendung definiert werden.
At line 26 changed one line
Wichtig ist auch. dass Action! eigentlich nur aus einer sehr kleinen Anzahl von Befehlen besteht (s. Kasten). Hierzu zählen die Kommandos zur Definition von Variablen (BYTE, CARD und TYPE) sowie zur Ablaufsteuerung (IF, ELSE, WHILE und UNTIL). Nicht zum Grundvokabular gehören jedoch Anweisungen wie PRINT, INPUT, DRAWTO usw. Sie sind nur als Prozeduren (Unterprogramme) oder Funktionen implementiert.
Wichtig ist auch, dass Action! eigentlich nur aus einer sehr kleinen Anzahl von Befehlen besteht (s. Kasten). Hierzu zählen die Kommandos zur Definition von Variablen (BYTE, CARD und TYPE) sowie zur Ablaufsteuerung (IF, ELSE, WHILE und UNTIL). Nicht zum Grundvokabular gehören jedoch Anweisungen wie PRINT, INPUT, DRAWTO usw. Sie sind nur als Prozeduren (Unterprogramme) oder Funktionen implementiert.
At line 28 changed one line
Dieses Konzept wird jedem C-Programmierer sehr bekannt erscheinen; auch dort müssen die I/O-Funktionen als lnclude-Datei zum Sprachkern hinzugeladen werden. Um den Action!-Usern diese Mühe zu ersparen, wurde eine Library mit den wesentlichsten Befehlen erstellt. Diese. Unterprogrammbibliothek ist gleich im ROM der Action!-Cartridge enthalten.
Dieses Konzept wird jedem C-Programmierer sehr bekannt erscheinen; auch dort müssen die I/O-Funktionen als Include-Datei zum Sprachkern hinzugeladen werden. Um den Action!-Usern diese Mühe zu ersparen, wurde eine Library mit den wesentlichsten Befehlen erstellt. Diese Unterprogrammbibliothek ist gleich im ROM der Action!-Cartridge enthalten.
At line 30 changed one line
Diese Lösung hat nun aber Vor- und Nachteile. Größter Vorteil ist sicherlich, dass beim Kompilieren kein lnclude-File notwendig ist. Ein Diskettenlaufwerk ist also nicht unbedingt Voraussetzung. Der Nachteil dieser Methode besteht allerdings darin, dass Action!-Programme. die diese Library benutzen. nur mit eingesteckter Cartridge lauffähig sind. Ein geschickter Programmierer kann diesen Mangel jedoch einfach umgehen. indem er die Bibliotheksfunktionen durch eigene ersetzt. Auf dieser Basis gibt es auch ein sogenanntes Run-Time-Package, das Programme vom Steckmodul unabhängig macht. Leider ist es in Deutschland nur schwer erhältlich. Leser der CK-Computer Kontakt konnten jedoch bereits ein einfaches Run-Time-Modul abtippen.
Diese Lösung hat nun aber Vor- und Nachteile. Größter Vorteil ist sicherlich, dass beim Kompilieren kein Include-File notwendig ist. Ein Diskettenlaufwerk ist also nicht unbedingt Voraussetzung. Der Nachteil dieser Methode besteht allerdings darin, dass Action!-Programme, die diese Library benutzen, nur mit eingesteckter Cartridge lauffähig sind. Ein geschickter Programmierer kann diesen Mangel jedoch einfach umgehen, indem er die Bibliotheksfunktionen durch eigene ersetzt. Auf dieser Basis gibt es auch ein sogenanntes Run-Time-Package, das Programme vom Steckmodul unabhängig macht. Leider ist es in Deutschland nur schwer erhältlich. Leser der CK-Computer Kontakt konnten jedoch bereits ein einfaches Run-Time-Modul abtippen.
At line 39 changed one line
Alle Befehle, die zwischen DO und OD (die Umkehrung von DO) eingeschlossen sind, werden endlos wiederholt. Will man eine Begrenzung der Durchläufe erreichen, so gibt es viele Möglichkeiten. Die einzige. die ein Pendant in Basic besitzt, ist die FOR-Schleife:
Alle Befehle, die zwischen DO und OD (die Umkehrung von DO) eingeschlossen sind, werden endlos wiederholt. Will man eine Begrenzung der Durchläufe erreichen, so gibt es viele Möglichkeiten. Die einzige, die ein Pendant in Basic besitzt, ist die FOR-Schleife:
At line 49 changed one line
Wie bereits erwähnt. muss eine Variable vor der Verwendung definiert werden — daher die BYTE-Deklaration. Interessant ist auch der PRINT-Befehl. PRINTBE ist eine Funktion, die einen BYTE-Wert und ein Endof-Line ausgibt. Bei der Ausgabe von Zahlen ist also genau festzulegen. von welchem Typ die auszugebende Variable ist. Eine andere Verwendung der DO-OD-Blocks wäre:
Wie bereits erwähnt, muss eine Variable vor der Verwendung definiert werden — daher die BYTE-Deklaration. Interessant ist auch der PRINT-Befehl. PRINTBE ist eine Funktion, die einen BYTE-Wert und ein Endof-Line ausgibt. Bei der Ausgabe von Zahlen ist also genau festzulegen, von welchem Typ die auszugebende Variable ist. Eine andere Verwendung der DO-OD-Blocks wäre:
At line 55 changed one line
Wenn Sie dieses Programm in Basic umsetzen wollen, dann müssen Sie mit einigen GOTO-Befehlen arbeiten. und die klare Struktur geht auch schon verloren:
Wenn Sie dieses Programm in Basic umsetzen wollen, dann müssen Sie mit einigen GOTO-Befehlen arbeiten, und die klare Struktur geht auch schon verloren:
At line 60 changed 2 lines
Man könnte dies natürlich auch anders schreiben. aber es geht ja schließlich ums Prinzip. Action!-Programme sind dank der festen Struktur einfach besser lesbar. Ein anderes Stilmittel stellen die Abfragen dar. Während lF-Abfragen in Basic auf eine Zeile begrenzt sind. können sich IF FT Blöcke über beliebig viele erstrecken. Da auch Befehle wie ELSE und ELSEIF vorhanden sind. bleibt dem Programmierer so mancher Umweg
über GOTO erspart:
Man könnte dies natürlich auch anders schreiben, aber es geht ja schließlich ums Prinzip. Action!-Programme sind dank der festen Struktur einfach besser lesbar. Ein anderes Stilmittel stellen die Abfragen dar. Während IF-Abfragen in Basic auf eine Zeile begrenzt sind, können sich IF FI Blöcke über beliebig viele erstrecken. Da auch Befehle wie ELSE und ELSEIF vorhanden sind, bleibt dem Programmierer so mancher Umweg über GOTO erspart:
At line 63 changed one line
Oben (i)
Oben ()
At line 76 changed one line
Daneben gestattet Action! auch den direkten Zugriff auf den Speicher. da man Variablen und auch Feldvariablen direkt in bestimmte Zellen legen kann:
Daneben gestattet Action! auch den direkten Zugriff auf den Speicher, da man Variablen und auch Feldvariablen direkt in bestimmte Zellen legen kann:
At line 83 changed one line
Schneller geht es nun wirklich nicht mehr. und damit ist unsere kleine Reise durch das Action!-Steckmodul auch schon wieder beendet.
Schneller geht es nun wirklich nicht mehr. Und damit ist unsere kleine Reise durch das Action!-Steckmodul auch schon wieder beendet.
At line 87 changed 2 lines
{{{{
AND Fl OR UNTIL
{{{
AND FI OR UNTIL