Comal
Dieser Artikel behandelt die Programmiersprache COMAL in Sicht der Commodore Computersysteme.
Inhaltsverzeichnis
Allgemeines[Bearbeiten]
COMAL ist eine 1973 in Dänemark von Benedict Löfstedt (Benedict Løfstedt) und Börge Christensen (Børge Christensen) entwickelte höhere Programmiersprache. Der Name wurde als Akronym aus Common Algorithmic Language gebildet.
Bei der Ausgestaltung dieser Sprache standen leichte Erlernbarkeit, Lesbarkeit und Bedienung im Vordergrund, da sie nicht nur von ausgebildeten Programmierern angewendet werden sollte. In COMAL wurden Elemente von BASIC (Einfachheit, Befehle), Pascal (strukturiertes Programmieren) und LOGO (Turtle-Grafik) übernommen und weiterentwickelt.
Ein COMAL-System verhält sich sowohl wie ein Interpreter als auch wie ein Compiler (3-Pass-Interpreter).
- Im Direktmodus wird jede Anweisung (z.B. PRINT 5*2) sofort nach der Eingabe ausgeführt.
- Anweisungen können als Programm im Speicher abgelegt werden. Vor der eigentlichen Ausführung findet dann eine Prüfung der Programmstruktur statt. Dabei werden auch Sprungadressen vorberechnet, was eine Beschleunigung des anschließenden Programmlaufes bewirkt (auf dem C64 etwa um Faktor 3).
Beispiel[Bearbeiten]
Beispiel für ein strukturiertes Programm in Comal mit aussagekräftigen Namen für Unterprozeduren und Variablen. Die Zeilennummern dienen in Comal nur noch als Angabe der Reihenfolge der Quelltextzeilen, nicht mehr als Sprungziele wie in BASIC.
Die dargestellte Formatierung des Quelltextes wird von Comal automatisch beim Auflisten vorgenommen, die interne Darstellung ist kompakter.
0010 PROC set'cursor(x#,y#) CLOSED 0020 POKE 211,x# 0030 POKE 214,y# 0040 SYS 58640 0050 ENDPROC set'cursor 0060 0070 PROC set'color(REF color#) CLOSED 0080 POKE 53280,color# 0090 POKE 53281,color# 0100 ENDPROC set'color 0110 0120 PRINT CHR$(147), // Clear Screen 0130 PRINT "!!! Das C64-Wiki Sterne-Demo !!!" 0140 farbe#:=0 0150 set'color(farbe#) 0160 0170 // Endlosschleife. 0180 // Kann nur mit RUN/STOP abge- 0190 // brochen werden. 0200 WHILE TRUE DO 0210 farbe#:=RND(0,15) 0220 POKE 646,farbe# // Textfarbe 0230 set'cursor(RND(0,39),RND(0,24)) 0240 PRINT "*", 0250 // 1/25 Chance, dass Hintergrund- 0260 // farbe geaendert wird. 0270 IF RND(1,25)=1 THEN 0280 set'color(farbe#) 0290 ENDIF 0300 ENDWHILE
Implementierungen[Bearbeiten]
C64[Bearbeiten]
C128[Bearbeiten]
CBM[Bearbeiten]
Literatur[Bearbeiten]
- Buch: Borge R. Christensen: "COMAL Reference Guide", 1984
- Buch: Neuber, Sperling: "COMAL 2.01 Handbuch für Commodore 64", 1986
- Buch: F. Nestle u. D. Pohlmann: "Comal 80 Programmierpraxis", 1987
- Buch: H. Göhner, B. Hafenbrak "Arbeitsbuch COMAL", 1988
- Was ist Comal in 64'er, August 1984, Seiten 41-43
- Comal - eine Einführung von Volker Everts in 64'er,
- Teil 1: Nov. 1984, Seiten 44-47
- Teil 2: Dez. 1984, Seiten 145-147
- Teil 3: Feb. 1985, Seiten 130-132
- COMAL in Neue Möglichkeiten mit dem Commodore 64 (128), Kap. 6/4
- Online
Weblinks[Bearbeiten]
Wikipedia: COMAL |
- engl. COMAL-Bücher als PDF auf www.bombjack.org