.po10 Kà - PASCAÌ - BENUTZERHINWEISE ------------------------------ KÃ-PASCAÌ isô eiî Maschinenprogramm®  Eó wirä beií Einleseî  auæ deî  Bereicè 800...4D8° geladen®  Nacè seineí Erstaufruæ miô  deí neueî   Men}worô  PASCAÌ  verschiebô  eó  sicè  auæ  deî  Bereicè 800..506³  unä isô fortaî miô deî Men}worteî  PASCAÌ  (Kaltstart© unä REPASCAÌ (Warmstart© voí Betriebssystemzustanä auó aufrufbar® Arbeitsbereichå    voî    Kà   - PASCAÌ   sinä    10...1²    unä 5064...memory_end, sowiå diå bekannteî CAOS-Arbeitsbereiche. Beií  Erstaufruæ  werdeî memory_enä (Standarä 7FFF© unä  Runtime Stacë (Standarä 8000© abgefragt®  Durcè Eingabå geeigneteò  Wertå (dezimal!© k|nneî diå Standardó ver{nderô werden. Kà - PASCAÌ -Kommandos: ----------------------- Allgemeiî  besteheî  Kommandoó auó eineí  Kommandobuchstabeî  unä m|glicherweiså bió zõ vieò durcè Kommatá getrennteî Argumenten.  R}ckkehò zõ CAOS à[von]  Compilierunç deó PASCAL-Programmó  beginnenä  miô Zeilå von®  Ií Fehlerfalì wirä daó Symbol¬ daó zuí Fehlerzustanä  f}hrte¬   markierô  unä  einå  odeò mehrerå  Fehlernummerî ausgegeben®  Durcè  Eingabå voî  Å odeò Ð gehô maî unmittelbaò iî deî Editier moduó  }ber¬  wobeé diå aktuellå bzw®, falló  jenå existiert¬   diå  vorhergehendå  Zeilå   angeboteî werden®    Falló   keinå   Fehleò   ií   Quelltexô festgestellô   wurden¬   wirä   miô  ruî   ?(Y(N)© abgefragt¬ oâ einå Ausf}hrunç gew}nschô wird. Ä von,bió L|scheî deò Zeileî von...bis E zeilennummer ]bergang in den Editiermodus F von,bis,suchw[,ersatz]      Sucheî  deò Zeichenkettå such÷ ií  Programmzeilen-                bereicè  von...bis®  Daó  Kommandï  f}hrô  iî  deî                Editiermodus¬ falló such÷ gefundeî wird. G ,,name Einleseî eineó Quelltextfileó voí Magnetband®  Deò                gelesenå  Texô  wirä aî  deî  ií  Programmspeicheò                vorhandeneî  angef}gô unä danacè deò gesamtå  Texô                neunumeriert. I [zeilennummer[,step]]                É rufô deî automatischeî Einf}gemoduó   auf.          Vorhandenå    Zeileî   gleicheò   Nummeò    werdeî                }berschrieben®  Miô  -Tastå Beendeô deî Editiermodus. Ñ  Brichô  daó Editiereî aâ, ohnå  diå  urspr}nglichå Zeilå zõ ver{ndern. Ò  Neuladeî  deó Edit-Pufferó miô deò alteî  Versioî deò Zeile. Ì Listeô deî Resô deò editierteî Zeile. Ë L|schô daó Zeicheî auæ deò aktuelleî Cursor- positioî unä verdichteô diå Zeile. Ú L|schô allå Zeicheî aâ (unä einschlie~lich) Cursorposition. Ó  Nacè  eineí F-Kommandï wirä  such÷  durcè  ersatú ausgetauscht. Æ  Beendeô Editiermoduó unä suchô nacè  deí  n{chsteî Auftreteî voî suchw. É  beendet den I-Submodus. Ø  Setzô  deî Cursoò auæ daó Zeilenendå unä gehô  iî deî I-Submoduó }ber. .pa ŠÃ  Daó Zeicheî auæ deò aktuelleî Cursorpositioî  wirä durcè  daó  n{chstå einzugebendå Zeicheî  ersetzt® Deò Cursoò r}ckô einå Stellå weiter®  Einå Zeilå kanî durcè Eingabå deò Zeilennummeò ohnå Texô gel|schô werden. [nderungeî gegen}beò Standard-Pascal ------------------------------------ Abweichenä  voí  PASCAÌ  USEÒ  MANUAÌ  anä  REPORÔ  (Jensen,Wirtè Springeò 1975© existiereî folgendå Einschr{nkungen:      - es sind keine File's implementiert,      - ein RECORD-Typ darf keinen Variant-Teil enthalten,      - PROCEDUREs   unä   FUNKTIONó  sinä  nichô  aló  Parameteò      zugelassen,      - in Namen sind 10 Zeichen signifikant,      - PACKED wird ignoriert,      - Zeigeò  auæ  nocè  nichô vereinbartå Typeî  unä  Zeigeò       auf Zeiger sind verboten.      - Schl}sselw|rtår d}rfeî  nuò auó  Gro~buchstabeî  gebildeô      werden. Diå  Erweiterungeî deó Compileró betreffeî voò alleí  zus{tzlichå Funktioneî  unä Proceduren¬  diå diå Vorz}gå  unä  Besonderheiteî eineó   Kà  ií   Verkehò  miô   deî   verschiedeneî   Umgebungeî unterst}tzen¬    sowiå    Elemente¬    diå   sicè   iî    andereî Programmierspracheî bew{hrô haben. Daó sindº  POKE¬  PEEK¬ PSET¬ PRESET¬ TIN¬ TOUT¬ INP¬ OUT¬ INLINE¬  SIZE¬  ADDR¬ INCH¬ RANDOM¬ ENTIER sowiå ELSÅ (f}ò sonst:© iî deò CASE-Anweisung. Reserviertå Wortå Reserviertå Symbole ----------------- ------------------- ANÄ DÏ GOTÏ NOÔ REPEAÔ « - ª ¯ < VAÒ ARRAÙ DOWNTÏ IÆ OÆ ½ <¾ <½ >½ > SEÔ WHILÅ BEGIÎ ELSÅ DIV ¨ © Û ] (ª *) IÎ OÒ THEÎ WITÈ CASÅ Þ :½ ®  ¬ » : ENÄ LABEÌ PACKEÄ TÏ CONSÔ § ... FORWARÄ  MOÄ PROCEDURÅ UNTIÌ Û unä Ý werdeî  durcè FUNKTIOÎ NIÌ PROGRAÍ TYPÅ diå Tasteî Fµ unä  F¶ erzeugt Vordefiniertå Sprachelemente ---------------------------- CONSÔ MAXINT=32767; TYPÅ BOOLEAN=(FALSE;TRUE); CHAR½ deò erweitertå ASCII-Zeichensatz'; INTEGER=-MAXINT-1...MAXINT; REAL='deò Teilbereicè deò relleî Zahleî x: 5.9E-3¹ <½ |xü <= 3.4E38'; PROCEDUREs:   WRITE¬  WRITELN¬  PAGE¬  READ¬ READLN¬ HALT¬ USER¬   INLINE¬   POKE¬   OUT¬   NEW¬  MARK¬ RELEASE¬ TIN¬ TOUT¬ PSET¬ PRESET ŠFUNKTIONs:   ABS¬  SQR¬  ODD¬  RANDOM¬ ORD¬ SUCC¬ PRED¬ INCH¬   EOLN¬   PEEK¬   CHR¬  SQRT¬  ENTIER¬ ROUND¬  INP¬  TRUNC¬  FRAC¬  SIN¬ COS¬ TAN¬ ARCTAN¬ EXP¬ LN¬ ADDR¬ SIZE¬ EOF Bemerkungen ----------- - Iî    deò   Konstantendefinitioî   isô   eó   gestattet¬    diå Standardfunktion CHR zu benutzen. z.B. CONST CUL=CHR(8); - Hexadezimalzahleî    sinä   verf}gbaò    uí    Speicheradresseî darzustellen. z.B. VAR X :INTEGER; ... ... X:=#7FFF - KC-PASCAÌ erforderô einå strengå Typisierung¬ dá f}ò RECORÄ unä ARRAY'ó diå Namens{quivalenú benutzô wird® Z.B® f}r  VAR A : ARRAY ['A'..'C'] OF INTEGER; B : ARRAY ['A'..'C'] OF INTEGER; die Zuweisung A:= B; zu Fehler 10, was nach Vereinbarung VAR A,B :ARRAY ['A'..'C'] OF INTEGER; nicht der Fall gewesen w{re. - Vergleichå  zwischeî  Ausdr}ckeî voí INTEGEÒ unä REAL-Tyð  sinä m|glich¬  abeò sï zõ schreiben¬ daþ deò REAL-Ausdrucë linkó voí Relationszeichen steht. Fehlermitteilungen des Compilers -------------------------------- 1 Zahl zu gro~ 2 Semikolon erwartet 3 nichtvereinbarter Name 4 Name erwartet 5 = und nicht := 6 = erwartet 7 Anweisung darf nicht mit diesem Namen beginnen 8 := erwartet 9 ) erwartet 10 falscher Typ 11 . erwartet 12 Faktor erwartet 13 Konstante erwartet 14 dieser Name ist keine Konstante 15 THEN erwartet 16 DO erwartet 17 TO oder DOWNTO erwartet 18 ( erwartet 19 dieser Ausdruckstyp kann nicht geschrieben werden 20 OF wird erwartet 21 , erwartet 22 : erwartet 23 PROGRAM erwartet 24 Variable erwartet, da dieser Parameter ein variabler ist 25 BEGIN erwartet 26 READ erwartet eine Variable 27 Ausdr}cke dieses Typs k|nnen nicht verglichen werden 28 INTEGER- oder REAL-Zahl erwartet 29 dieser Variablentyp kann nicht gelesen werden 30 dieser Name ist kein Typ 31 REAL-Zahl verlangt Exponent Š32 skalarer, nicht numerischer Ausdruck erwartet 33 Leerstrings sind nicht erlaubt ==> CHR(0) verwenden 34 [ erwartet 35 ] erwartet 36 ARRAY-Index mu~ skalarer Typ sein 37 .. erwartet 38 ARRAY-Deklaration verlangt [ oder , 39 obere Grenze ist gr|~er als untere 40 SET ist zu gro~ (mehr als 256 Elemente) 41 Funktionstyp mu~ vom Typ Name sein 42 in SET wird , oder ] erwartet 43 in SET wird .. oder , oder ] erwartet 44 Parameter mu~ vom Typ Name sein 4µ  leereò  SEÔ  kanî nichô ersteò Faktoò  iî  Nicht-Zuweisungs- Anweisung sein 46 Scalartyp (einschlie~lich reeller Zahlen) erwartet 47 Scalartyp (au~er reellen Zahlen) erwartet 48 SET's sind nicht vertr{glich 49 SET's k|nnen nicht mit < oder > verglichen werden 50 FORWARD, LABEL, CONST, VAR, TYPE oder BEGIN erwartet 51 Hexadezimalziffer wird erwartet 52 SETs k|nnen nicht mit POKE abgesetzt werden 53 ARRAY zu gro~ (mehr als 64K) 54 RECORD-Definition verlangt END oder : 55 Feldname erwartet 56 nach WITH wird eine Variable erwartet 57 Variable bei WITH mu~ vom RECORD-Typ sein 5¸  deò  Feldnamå wurdå nichô miô WITH-Anweisunç  iî  Verbindunç gebracht 59 nach LABEL wird eine vorzeichenlose INTEGER-Zahl erwartet 60 nach GOTO wird eine vorzeichenlose INTEGER-Zahl erwartet 61 Marke in einer falschen Programmebene 62 Marke ist nicht vereinbart 63 Parameter von SIZE mu~ Variable sein 64 auf Zeiger kann nur Gleichheitstest angewandt werden 6µ  einziç zul{ssigeò Parameteò f}ò INTEGER-Zahleî miô  zweé  º ist e : m : H 66 Strings d}rfen keine Zeilenendzeichen enthalten 67 NEW, MARK oder RELEASE verlangen Zeigervariable 68 ADDR verlangt Variable als Parameter Laufzeitfehlermeldungen: ------------------------ 1 Out of RAM 6 Maths Call Error 2 Overflow 7 Number expected 3 / by Zero 8 Number too large 4 Index too low 9 Exponent expected 5 Index too high I/O Fehler: ----------- A Break by STOP-Key B Bad record C File not found .pa ŠLaufzeitfehleò stoppeî diå Programmausf}hrung®  Diå Fehlermeldunç gibô  diå  Stellå  an¬  aî  deò deò  Fehleò  bemerkô  wurdå  ('aô PC=xxxx')®  Anhanä  deó  Compiler-Listingó kanî danî  deò  Fehleò leichô  lokalisierô werden¬  denî diå gelisteteî Zeileî habeî diå Gestalt: xxxx zeilennummer text Beschreibung der Spracherweiterungen ------------------------------------ Im folgenden sollen vereinbart sein: VAR J : 0..255; I1,I2,...IM,I: INTEGER; (* keine syntaktisch einwand- *) X : INTEGER oder REAL; (*freie Schreibweise *) NAME : ARRAY[1..8] OF CHAR; CH : CHAR; V : T; (* T ist ein beliebiger Typ *) Proceduren: ----------- PSET(I1,I2)»  Setzeî eineó Bildpunktes®  I± isô diå  Nummeò deò  Spaltå (0..319)®  I² enth{lô diå  Nummeò der Zeile znr (0..255) und die Farbe F I2:=F * 256 + znr. Deò  Punkô  (0,0© befindeô sicè iî deò  linkeî oberen Bildschirmecke. PRESET(I1,I2); L|schen eines Bildpunktes. POKE(I,V)»  Schreibô deî Werô voî Ö iî deî RAÍ aâ Adresså I. TIN(NAME,I,I1)»  L{dô  daó Magnetbandfilå NAMÅ iî deî  RAÍ  aâ Adresse I. z.B. TIN('DATEI ',#200); TIN('OTTO ',ADDR(V)); TOUT(NAME,I,I1)»  Speicherô Byteó aâ Adresså É iî deò L{ngå voî I1 unter dem Namen NAME auf Magnetband. z.B. TOUT(NAME,ADDR(V),SIZE(V)); TOUT('DATEI ',#200,#600); OUT(J,CH); Gibt den Wert von CH }ber Port Nr.J aus. INLINE¨   I1,I2,...,IM)»   F}gô   diå  Wertå  IË  MOÄ   25¶   aló Maschinencode in das Objektprogramm ein. z.B. INLINE(#CD, #15, #08); USER(I)»  Unterprogrammaufruæ  deó  aî  deò  Adresså  É stehenden Maschinencodeprogramms. z.B. USER(#C000); oder USER(-16384); beide Aufrufe sind {quivalent, denn (AdrDez := Adr - MAXINT + 1) .pa ŠFunktionen: (nach dem : ist der Resultattyp angegeben) ----------- PEEK(I,T):Ô Liesô Dateî auó deí RAÍ beginnenä aâ Adresså É entsprechend der L{nge von T. z.B. I:=PEEK(#B7D3,INTEGER); INP(J):CHAR Direktabfrage eines Eingabeports. SIZE(V):INTEGEÒ   L{ngå  deò  Variableî  Ö  (Anzahì  deò   zuò Abspeicherung verwendeten Bytes) ADDR(V):INTEGER Speicheradresse der Variablen V INCÈ  º  CHAÒ  Einmaligå Tastaturabfrage®  Lieferô  CHR(0©, falló keinå Tastå gedr}ckt¬  sonsô deî  ASCII- Code. RANDOMº   0..25µ Lieferô  einå  Zufallszahì  (Sehò  schnellå Routine, die aber schlechte Resultate liefert) ENTIER(X):INTEGER Ganzzahliger Anteil von X ELSE f}r CASE-Anweisung ELSÅ kanî iî CASE-Anweisunç daó ENÄ ersetzeî unä bewirkô danî diå Ausf}hrunç  eineò Alternativanweisunç, falló diå gefordertå CASE- Marke nicht existiert. z.B. 1.) CASE I OF 2.) CASE I OF 1: action1; 1:action1 2: actionN; ELSE actionN; 3: actionN; 4: actionN END; Iî  deò zweiteî Forí wirä f}ò jedeó I<>± actionΠ ausgef}hrt¬  iî deò ersteî Forí nuò f}ò I=2¬  I=³ unä I=4® F}ò allå andereî Wertå von I ist die CASE-Anweisung in der Form 1 eine leere Anweisung. Kommentare und Compiler-Auswahlbedingungen ------------------------------------------ Eiî  Kommentaò kanî }beralì zwischeî zweé  PASCAL-Sprachelementeî stehen®  Eò  beginnô  miô (ª unä endeô miô *© unä kanî  beliebigå ASCII-Zeichen¬   au~eò  $¬   enthalten®  Voí  Compileò  wirä  eiî Kommentaò ignoriert¬  beií Listeî abeò zusammeî miô deí Quelltexô angezeigt® Daó Zeicheî ¤ iî eineí Kommentaò leiteô einå Folgå voî durcè Kommatá getrennteî Compiler-Steueranweisungeî ein¬  diå miô *) abzuschlie~en ist. z.B. (* OPTIONS $L-,C+*) Compilersteueranweisungeî  besteheî  auó  eineí  deò   Buchstabeî L,O,C,S,Á odeò I¬  gefolgô voî « odeò -¬  womiô diå entsprechendå Compilerauswahlbedingung ein- oder ausgeschaltet wird. Zeicheî Funktioî Standard Á  Tesô auæ Bereichs}berschreitungeî voî  Feldindizeó A+ zur Laufzeit É  Beií Vergleicè zweieò Integerzahlen¬  diå sicè  uí I- mehò aló MAXINÔ voneinandeò unterscheiden¬ entstehô eiî  falscheó  Resultat¬  wenî diå }blichå  16-Bit- Zweierkomplementarithmetië verwendeô wird®  Beé  I« wirä  aucè  beé solcheî Vergleicheî  eiî  richtigeó Ergebnis gesichert. Ì Steuerô daó Listeî voî Programmtexô unä Objektcode- L+ adressen®  Beé  L- werdeî  nuò  fehlerhaftå  Zeileî gelistet. Ï   ]berlauftesô   beé  ganzzahligeò   Additioî   unä O+ Subtraktion .pa ŠÃ Aí Beginî voî Schleifen¬  Procedureî unä Funktioneî C+ wirä  getestet¬  oâ diå -Tastå bet{tigô wurde® Beé   fehlerfreieî  Programmeî  kanî  dieseò   Tesô ausgeschaltet werden. z.B. (*$C-*) REPEAT C:=INCH UNTIL C<>CHR(0); (*$C+*) Hieò  wirä  einå  zweimaligå  Tastaturabfrage¬  diå sonst kaum bedient werden kann, verhindert. S Test auf Stack}berlauf S+ Datendarstellung ---------------- I. INTEGER-Zahlen belegen 2 Bytes im Zweierkomplement. z.B. 1 --> 0001 , 256 --> 0100 , -256 --> FF00 II. REAL-Zahlen belegen 4 Bytes Bytå  °  enth{lô deî Exponenten¬  diå Byteó 1, ²  unä ³  diå Mantisse und das Vorzeichen der Zahl. z.B. 2 --> 40000001 , 1 --> 40000000 0.1 --> 666666FC , -12.5 --> E4000003 III.CHAR belegt 1 Byte. Abgespeichert wird der ASCII-Code. IV. BOOLEAN belegt 1 Byte z.B. TRUE --> 01 , FALSE --> 00 V®  RECORDó  unä ARRAYó belegeî deî gleicheî Speicherplatú wiå die Summe ihrer Komponenten. VI® SETó werdeî aló Bitketteî gespeichert®  Wenî deò Basistyð î Elemente hat, werden (n-1) DIV 8 + 1 Bytes ben|tigt. VII®Zeigeò belegeî ² Bytes®  Abgespeicherô wirä diå Adresså deò zugeordneten Variablen. Variable -------- I®  Globalå Variablån (ií Hauptprogramí  vereinbartå Variablen© werdeî iî deò Reihenfolge¬ iî deò siå vereinbarô wurdeî aí Ende des Runtime-Stacks beginnend abw{rts belegt. II®  Lokalå Variablån (iî PROCEDURE'ó unä FUNCTION'ó vereinbartå Variablen© werdeî  miô Hilfå deó IX-Registeró  lokalisiert® Beií Aufruæ deó entsprechendeî Unterprogrammó zeigô IØ  auæ deî  Beginî deó innereî Blocks¬  sï daþ IX-´ auæ deî Anfanç der lokalen Variablen zeigt. III. Parameter und R}ckgabewerte Werteparameteò  werdeî  wiå lokalå Variableî behandelô  unä wiå  beé dieseî giltº  jå fr}heò eiî  Parameteò  deklarierô wurde¬  destï  h|heò isô  seinå  Speicheradresse®  Variablå Parameteò belegeî ² Bytes¬ diå diå Adresså deò entsprechen deî  Variableî  enthalten®   R}ckgabewertå  voî  Funktioneî werdeî  oberhalâ  deó  ersteî Parameteró  deò  Funktioî  ií Speicheò abgelegt. .pa Š z.B. PROGRAM beispiel; VAR A:INTEGER; B:CHAR; C:REAL; PROCEDURE P(D:INTEGER; E:REAL; VAR F:REAL); VAR G: INTEGER; H: CHAR; I: REAL; BEGIN END; FUNCTION K(J:REAL):REAL; VAR L:INTEGER; BEGIN K:=J END; BEGIN END. Der Runtime-Stack m|ge den Standardwert 8000 besitzen. Variable Adre~bereich A 7FFE 7FFF B 7FFD C 7FF9 7FFA 7FFB 7FFC D IX+8 IX+9 E IX+4 IX+5 IX+6 IX+7 F IX+2 IX+3 G IX-6 IX-5 H IX-7 I IX-B IX-A IX-9 IX-8 J IX+2 IX+3 IX+4 IX+5 K IX+6 IX+7 IX+8 IX+9 L IX-6 IX-5