Source file: /~heha/hs/kcemu/kcswberg.zip/DISK/PASCAL1.TXW

		 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