Comal

Aus C64-Wiki

Wechseln zu: Navigation, Suche

Dieser Artikel behandelt die Programmiersprache COMAL in Sicht der Commodore Computersysteme.

Inhaltsverzeichnis

[Bearbeiten] Allgemeines

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).

[Bearbeiten] Beispiel

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

[Bearbeiten] Implementierungen

[Bearbeiten] C64

[Bearbeiten] C128

Comal80 Cartridge Reversed

[Bearbeiten] Literatur

Teil 1: Nov. 1984, Seiten 44-47
Teil 2: Dez. 1984, Seiten 145-147
Teil 3: Feb. 1985, Seiten 130-132

[Bearbeiten] Links

WP-W11.png Wikipedia: COMAL
Persönliche Werkzeuge