Benutzung --------- Nach dem Uebersetzen von scanner.pas in G-Pascal und dem Starten kann man den PL/0-Quelltext zeilenweise eingeben (immer in der obersten Bildschirmzeile). Der Compiler verzeiht keine Fehler. D.h. wenn es zu einer Fehlermeldung kommt, muss man den Compiler beenden (Restore oder "." eingeben) und von vorne anfangen. Zeitlich versetzt werden zu dem eingegeben Quelltext der erzeugte Assembler-Code ausgegeben. Nach der Eingabe eines Punktes fuer das Programmende werden die restlichen Zeilen des Assembler-Codes und die Symboltabelle ausgegeben. G-Pascal erlaubt es, die Bildschirmausgabe zeitgleich auf einen Drucker zu schicken. Wenn das Ganze in einem C64-Emulator laeuft, kann man die Druckerausgabe in eine Textdatei umleiten und hat so die Grundlage fuer die weitere Verarbeitung in ACME. Befehle ------- PL/0 ist eng verwandt mit PASCAL. Die genaue Syntax ist als EBNF in einer separaten Textdatei angegeben. Befehl | Beschreibung --------------+---------------------------------------------- const | Definition von Konstanten var | Deklaration von Variablen begin/end | Programmblock (obligatorisch fuer das Haupt- | programm; ansonsten noetig bei mehreren | Anweisungen) if/then/else | Bedingte Verzweigung while/do | Schleife mit der Ausfuehrungsbedingung am | Anfang repeat/until | Schleife mit der Abbruchbedingung am Schluss write | Bildschirmausgabe Bei Variablen gibt es als einzigen Typ Werte mit 16 Bit ohne Vorzeichen (0 bis 65535). Weitere Verarbeitung -------------------- Der vom Compiler erzeuge Assembler-Quelltext muss noch ergaenzt werden, damit er von ACME uebersetzt werden kann. Am Anfang muessen Programmname, Format und Startadresse eingefuegt werden: !to "NAME", cbm *=$c000 Es wird der Quelltext aus dem Projekte "Stackbasierte Programmierung" verwendet, wofuer folgende Ergaenzung notwendig ist (Einzelheiten sind in der dortigen Dokumentation zu finden): jmp start !source "stack.a" start +initstp Danach kommt der vom Compiler erzeuge Assembler-Quelltext. Am Schluss muessen der Ruecksprung und die Platzhalter fuer die Variablen ergaenzt werden (pro Variable zwei Bytes bzw. ein word): rts var1 !wo 0 var2 !wo 0 ... varN !wo 0