PASCAL - Bedienerl{uterung des Compilers V1.7 ============================================= Autoren: Doz. Dr. sc. Wolfgang Burmeister Dipl.-Math. Manfred Lehmann Dr. Klaus Vetters 1. Laden des Compilers, Speicherkonfigurationçç _____________________________________________ Ihr Kleincomputer kann mit einem 16-kByte-RAM-Erweiterungsmodul ausger}stet sein. Die Version 1.7 f}r den KC 85/4 erlaubt sogar die volle Nutzung des 64- kByte-Erweiterungsmoduls. Das Laden von Kassette erfolgt vom Betriebssystem aus durch das Kommando LOAD. Nach beendetem Ladevorgang startet der Compiler automatisch. Auf dem Bildschirm erscheint Top of RAM? Es handelt sich um den RAM-Top f}r den Compiler. Sie haben jetzt ENTER oder eine Zahl zwischen 16677 und 32768 bei einem oder eine Zahl zwischen 16677 und 49152 bei zwei Erweiterungsmodulen einzugeben. Die Eingabe von ENTER wirkt wie die Eingabe von 32768 bzw. 49152. Danach erscheint Top of RAM Es handelt sich um den RAM-Top f}r das zu erzeugende Objektcode- for 'T'? Programm. Sie k|nnen jetzt ENTER oder eine Zahl zwischen 5024 und 32768 bei einem oder eine Zahl zwischen 5024 und 49152 bei zwei Erweiterungsmodulen eingeben. Die Eingabe von ENTER bewirkt die ]bernahme des "Top of RAM" als "Top of RAM for 'T'". Als n{chste Frage erscheint Table Size? Gemeint ist die L|nge des internen Arbeitsspeichers, die von der Anzahl der im Programm benutzten Variablen, Prozeduren, Funktionen etc. abh{ngt. Jetzt kann ENTER oder eine angemessen gro~e Zahl zwischen 0 und 16300 eingegeben werden. Die Eingabe von ENTER wirkt wie die Eingabe von ("Top of RAM"-19612) DIV 16. Hinweise: --------- a) Antworten Sie auf alle drei Fragen mit ENTER, so steht Ihnen f}r Quelltext und Objektcode der Speicher von 18467 bis 32767 bei einem bzw. 18467 bis 49151 bei zwei Erwiterungsmodulen zur Verf}gung. Der interne Arbeitsspeicher ist 1021 bzw. 2045 Byte lang. b) Die angegebenen unteren Schranken besitzen nur theoretischen Wert und lassen sich nur bei extrem kurzen Programmen anwenden. c) Da die bei "Top of RAM for 'T'?" verlangte Zahl unter 16384 liegen darf, ist es m|glich, Objektcode-Programme zu erzeugen, die keinen RAM-Erweiterungs- modul ben|tigen. d) Wollen Sie die Gr|~en f}r "Top of RAM", "Top of RAM for 'T'" oder "Table Size" {ndern, so verlassen Sie den Compiler mit dem Kommando B und gelangen }ber das Kommando PASNEW wieder in die Initialisierungsphase. 2. Beschreibung des Sprachumfangsçç _________________________________ 2.1. PASCAL-Symbole ------------------- Bezeichner (Identifier) m}ssen mit einem Buchstaben beginnen und k|nnen eine Folge von Klein- und Gro~buchstaben und Ziffern enthalten. (z.B. a, B, a1B ...) Bezeichner, die sich in den ersten 10 Zeichen nicht unterscheiden, werden als identisch angesehen. a) Arithmetische und logische Verkn}pfungen Ergibtzeichen := Real- und Integerzahlen + - * / Integerzahlen DIV MOD Boole'sche Variable OR AND NOT b) Relationen IN (f}r Set-Arithmetik) c) Klammern, Trennzeichen etc. Auf der Tastatur vorhandene Zeichen: ( ) . , ; : ' # $ Weitere PASCAL-Sonderzeichen: Nr. Zeichen Ersatzzeichen Taste KC 85/4 bei Vers. 1.7 1 (/ Shift Space 2 /) 3 (* 4 *) 5 d) Programm-Grundstrukturen PROGRAM BEGIN END FUNCTION PROCEDURE e) Deklarationen TYPE LABEL ARRAY ... OF ... PACKED ARRAY ... OF ... VAR CONST SET RECORD ... END f) Schleifen FOR ... := ... TO ... DO ... WHILE ... DO ... FOR ... := ... DOWNTO ... DO ... REPEAT ... UNTIL ... Der Abbruchtest wird bei den FOR-Anweisungen zu Beginn der Schleife }ber- pr}ft, so da~ das ]bergehen der FOR-Anweisung m|glich ist. g) Verzweigungen IF ... THEN ... ELSE CASE ... OF ... END CASE ... OF ... ELSE ... GOTO Das Sprungziel mu~ im gleichen Block liegen und mittels LABEL dekla- riert sein. h) Records WITH ... DO ... i) Pointer (dynamische Variable) NIL k) Rekursiv gegenseitig definierte Funktionen und Prozeduren FORWARD 2.2. Identifikatoren -------------------- a) Konstanten FALSE TRUE MAXINT Es gilt: MAXINT=32767 b) Type-Konstanten INTEGER Mittels vorgesetzten # k|nnen INTEGER als Hexazahlen programmiert werden. In den WRITE-Anweisungen kann durch die Formatangabe :n:H die Ausgabe in Hexaform erreicht werden (n - Konstante oder Aus- druck vom INTEGER-Typ) Beispiel: 1210åDç = 4BAåH Die Anweisung WRITE(1210:n:H) ergibt f}r n=1: A ... niederwertigstes Halbbyte (Nibble) n=2: BA ... niderwertigstes Byte n=3,4: 04BA ... vollst{ndige Hexazahl n>4: rechtsb}ndiges Schreiben von 04BA im angegebenen Format REAL Die REAL-Zahlen werden in 4-Byte-Gleitkommaarithmetik verkn}pft CHAR BOOLEAN c) Arithmetische, mathematische und Boole'sche Funktionen ROUND(r) FRAC(r) ODD(i) ENTIER(r) COS(r) TRUNC(r) ABS(r) SQR(r) SQRT(r) SIN(r) EXP(r) LN(r) TAN(r) ARCTAN(r) RANDOM Erzeugung von ganzzahligen Zufallszahlen z mit 0 <= z <= 255 (durch Abfrage des Refreshregisters). EOLN Wird TRUE, falls das n{chste einzulesende Zeichen CR (Code 13) ist, sonst FALSE. Beispiel: Eingabe einer Zeichenkette variabler L{nge i:=1; REPEAT READ(a i ); i:=i+1 UNTIL EOLN d) Ordnungsfunktionen f}r Skalartypen ORD(a) liefert Position des Skalarwertes a in der durch den Typ von a festgelegten Wertemenge CHR(i) liefert ASCII-Zeichen, Steuerzeichen oder Graphikzeichen mit Code i SUCC(a) Nachfolger von a PRED(a) Vorg{nger von a Beispiele: SUCC(3) = 4 SUCC('B') = 'C' PRED(TRUE) = FALSE e) Verwaltung von dynamischem Speicherplatz NEW(p) Erzeugung einer dynamischen Variablen p MARK(q) Merken des Endes der Halde RELEASE(q) Freigabe der Halde zur}ck bis q f) Ein- und Ausgabe READ(A) READLN(A) Achtung! Beim Lesen von Zeichenketten aus dem Eingabe- WRITE(A) WRITELN(A) puffer ist das erste Zeichen stets CR (Code 13). Beispiel zur Formatsteuerung: VAR x: REAL; i,k: INTEGER\ ... WRITE(x:10:2,i:6,k:6:H) ... PAGE Seitenvorschub am Drucker bzw. L|schen des Bildschirmes INCH Tastaturabfrage, entspricht INKEY$ bei BASIC TOUT(n,a,l) Schreiben auf Band è Name n, Anfansadresse a, TIN(n,a) Laden vom Band è L{nge l in Byte Beispiel: TOUT('Feld v',ADDR(v),SIZE(v)) INP(p) Entspricht den Assembleranweisungen IN und OUT. OUT(p,c) Die Zahl p ist eine Kanaladresse und c eine Konstane oder Vari- able vom Typ CHAR. Beispiel: Umschaltung auf 20-Zeilen-Format OUT(136,CHR(12)) g) Speicherzugriff SIZE(v) L{nge der Variablen v in Byte ADDR(v) Adresse des erten Byte der Variable v POKE(n,v) Eintragen des Wertes der Variablen v ab Adresse n PEEK(n,t) Beginnend bei Adresse n wird der Speicherinhalt entsprechend dem angegebenen Typ t ausgewertet. Typ t darf sein: INTEGER, CHAR, REAL oder ARRAY 1..k OF ... h) Benutzung des Maschinen-code INLINE(F) Einf}gen der durch die Parameterfolge F definierten Code-Anwei- sungen. Als Parameter sind Ausdr}cke vom Type INTEGER oder CHAR zugelassen. i) Programm-Abbruch HALT beendet den Programmablauf mit Ausschrift des Befehlsz{hlers. 3. Kommandosçç ____________ 3.1. Hauptkommandos ------------------- B R}ckkehr zum Betriebssystem. Die erneute Aktivierung des Compi- lers erfolgt durch die Kommandos PASNEW f}r neue Initialisierung oder PASOLD f}r Beibehaltung der RAM-Tops, des Table-Size und des Quelltextes. C n ]bersetzen ab Zeile n bis Programmende. Nach fehlerfreier ]ber- setzung kann auf die Frage "RUN?" mit "Y" oder "N" geantwortet werden. Bei fehlerhaftem Text werden die Fehler angezeigt (s. Abschnitt 5). Aus der Fehleranzeige kann durch E zum Editieren der aktuellen und durch P zum Editieren der vorhergehenden Zeile }bergegangen werden. Die ]bersetzung kann durch "STOP" bzw. "BRK" unterbrochen werden, anschlie~end ist Fortsetzung oder Abbruch m|glich. D n,m L|schen der Zeilen n bis m E n,m,f,s ]bergang zum Editor auf erstem Zeichen der Zeile n. Die gesamte Zeile n wird vorher ausgeschrieben. Weitere Kommandos s. Abschn. 3.3. F n,m,f,s ]bergang zum Editor auf erstem Zeichen der ersten Zeichenkette f, die zwischen den Zeilen n und m vorkommt. Weitere Kommandos s. Abschnitt 3.3. G ,,f Laden des mit "P n,m,f" gesicherten Quelltextes von der Kassette. Ist bereits Quelltext vorhanden, wird der gesamte Quelltext von Zeilennummer 10 an mit Schrittweite 10 neu numeriert. I n,m Automatische Erzeugung der Zeilennummern, beginnend bei n mit Schrittweite m. Durch "STOP" bzw. "BRK" kann dieser Modus beendet werden. K n Stellt das Listen auf Gruppen zu n Zeilen ein. L n,m Listen des Quelltextes von Zeile n bis Zeile m. Nach jeder Gruppe kann durch "STOP" bzw. "BRK" unterbrochen werden. M n,m Die Zeile n wird zus{tzlich als Zeile m eingef}gt. N n,m Neunumerierung des gesamten Textes, beginnend mit Zeile n, Schrittweite wird m. P n,m,f Sichern des Quelltextes von Zeile n bis m auf Kassette unter dem Namen f. R Starten des zuletzt mit "C" }bersetzten Programms. Durch Syntax- fehler, Erweitern des Textes und das T-Kommando wird "R" abge- schaltet. setzten Pr