***************************************************************
* B E S C H R E I B U N G HIS.-PASCAL 1.03 *
***************************************************************
HINWEIS: Die Pascal-Compiler "Hisoft-Pascal" und
"HISOFT-PASCAL^" haben Fehler, die in dieser Version behoben
wurden. Weiterhin wurden noch einige Aenderungen durchgefuehrt.
Standort des PASCAL-COMPILER: 0100-4080H >CRC=F1F7
Neustart : 100H (1800H)
Warmstart : 103H (1803H)
Ladeadressen:
Anf.Adr.MC-File : 0330H
St.Adr. MC-File : 03F9H
Die Quelltextadresse aendert sich entsprechend der Werte bei der
Speicherabfrage!
*************************************************************
1. Laden des Compilers, Speicherkonfiguration:
*************************************************************
Ihr Z-1013 muss mindestens mit 32-Kbyte-RAM ausgeruestet sein.
Das Laden erfolgt mit dem HEADERSAVE-Kommando:
@L (oder @LN Typ: C Filename: HIS.-PASCAL^Tg.B ) >ENTER<
Nach beendetem Ladevorgang startet der Compiler automatisch.
(Monitor-Modus L 0100 4080 ; Startadresse ist
100H.(1800H))
Beim Kalt- und Warmstart wird die Zelle 003DH bzw. 003EH
abgefragt, ob dort der Sprung zum Stringfeld des Brosig-Monitors
eingetragen ist. Wenn ja, dann wird ein Stringfeld mit Pascal-
Worten aufgerufen. Tastenkodierung entsprechend der Brosig-
Tastatur (vgl. MP 2(1988)7. - S. 215 - 218).
Die gleiche Abfrage erfolgt beim Verlassen des Compilers mit dem
B-Kommando.
Nach dem Start erscheint auf dem Bildschirm:
Top of RAM? Es handelt sich um den RAM-Top (Speicherplatz)
fuer den Quelltext.
Sie haben jetzt eine Zahl einzugeben, die den
Speicherbereich festlegt. Eine Zahl zwischen:
16696 und 59391, je nach Speicherkonfiguration,
kann eingegeben werden.
Die Eingabe von >ENTER< legt das Speicherende
fest auf den Wert, der auf der Adresse 03C8H
eingetragen ist (jetzt E7FFH). Diesen Wert
koennen Sie aendern!
03C8H : FF
03C9H : E7
Es folgt:
Top of RAM for "T"? Es handelt sich um den RAM-Top fuer
das zu erzeugende Objektcode-Programm. Sie koen-
nen jetzt:
>ENTER< oder eine Zahl zwischen:
5024 und 59391
(wieder je nach Speicher) eingeben.
>ENTER< bewirkt die Uebernahme des
'Top of RAM'-Bereiches als Top of RAM for "T".
Zuletzt erscheint:
Table Size? Laenge des internen Arbeitsspeichers, die von
Variablen, Funktionen, Prozeduren etc. abhaengt.
>ENTER< oder eine angemessen grosse Zahl
max. 42710.
Die unteren Zahlenangaben haben mehr theoretischen Charakter.
Die oberen Werte gelten fuer diese Pascal-Version mit
Speicherbegrenzung auf E7FFH.
HINWEISE:
* Wollen Sie eine der Groessen aendern, muessen Sie den Compiler
ueber das B-Kommando verlassen und neu starten.
* Neustart ist nur mit J 100 (1800) (ohne Quell-Text im Editor)
oder J 103 (1803) (mit Quell-Text im Editor).
moeglich.
(mit 'PASNEW' oder 'PASOLD' wie im KC 85/1 ist im Z-1013 kein
Neustart moeglich !!)
*************************************************************
2. Der Hisoft-Pascal, Programme laden u. saven:
*************************************************************
Diese Version von Hisoft wurde fuer den ZX-Spectrum entwickelt.
Es handelt sich um eine Standardpascalversion, die im Compiler
stark abgeruestet wurde. Ebenfalls wurde die Schnittstelle zu
anderen Editoren mit Uebergabe von ASCII-Text zu Gunsten des
Speicherplatzbedarfes entfernt.
Die angepasste Version fuer den Z-1013 ist gegen einige Aende-
rungen geschuetzt, dieser Schutz beeintraechtigt die Arbeit mit
dem Compiler in keiner Weise und braucht nicht entfernt werden.
Als Kassetteninterface wird fuer diese Version der >HEADER-
SAVE< von Rainer Brosig ueber Sprungverteiler (SV) genutzt.
Damit eroeffnen sich fuer den Anwender folgende
Moeglichkeiten:
1. Abspeichern von Quelltexten:
Pm,n P(ut) m,n = Zeile m bis n z.B.: P10,130 >ENTER<
Die SAVE-Routine meldet sich mit der ueblichen Abfrage:
'typ' u. 'filename'. Der Quelltext sollte den Typ:'P'
erhalten.
2. Lesen von Quelltexten:
G G(et) ohne Parameter! z.B.: G >ENTER<
Der HEADERSAVE fragt Typ und Filename ab. Es werden
auch nicht-Pascal-Quellen gelesen!!!
3. Verbinden von Quelltexten:
G G(et) ohne Parameter! z.B. G >ENTER<
jeder weitere Pascal-Quelltext, auch der gleiche wie
bereits geladen, wird in den Quelltextspeicher
uebernommen. Die Zeilennummer des Queltextes wird
automatisch geaendert und an die vorherige Numerierung
angeschlossen. Es koennen also verschiedene Pascal-
Teile getrennt geschrieben und getestet werden, um sie
nun zu verbinden.
(Abfrage wie oben!)
4. Abspeichern von lauffaehigen MC-Programmen:
T,m z.B. T,10 >ENTER<
oder T >ENTER<
Das Programm wird daraufhin uebersetzt und meldet sich
mit "Ok?". Hierauf wird ein "Y" eingegeben. Nach dem
Y erfolgt ein Linken des Programmes, wobei der Pascal-
editor und Compiler zerstoert werden. Am Ende wird die
SAVE-Routine angesprungen und meldet sich mit
"filename". Nach dem Saven, auch mit 'verify'-Funktion,
erfolgt noch ein Probelauf des Programmes und dann mel-
det sich der Monitor.
Jede andere Taste bringt den Pascal wieder in den
Schreibmodus zurueck.
*************************************************************
3. Steuer- und Editierkommandos
*************************************************************
Obwohl die Programmiersprache PASCAL keine Zeilen-Abarbeitung
kennt, wie z.B. BASIC, wird bei dem Erstellen des Quelltextes
mit einer Zeilen-Numerierung gearbeitet.
Nach der Speicherfestlegung meldet sich der Compiler mit einem
Kopf und dem Promtzeichen:
>_ (_=Cursor)
Hier wird jetzt folgendermassen vorgegangen:
ZEILEN:
=======
I(nsert) oder Im,i
z.B. I10,5 (ab Zeile 10 in 5er Schritten)
m = erste Zeilennummer
i = Schrittweite
(Zahl unmittelbar an Steuerzeichen anschliessen)
Wenn nur I eingegeben wird, beginnt ab Zeile 10 (oder,
wenn I einen Wert im Parameterspeicher hat, ab dieser
Zeilennummer), der Editor in 10er Schritten zu
arbeiten.
- mit angegebener Zeilennummer, sowie, wenn angegeben,
der Schrittweite, gelten diese Zeile und Schrittweite.
Der Editor meldet sich mit
> 10 _
Hier ein kurzes Beispiel-Programm:
(gegeben sind Pi und Radius, gesucht wird der Umfang und die
Flaeche eines Kreises)
10 PROGRAM KREIS;
20 CONST PI=3.1416;
30 VAR R,U,A:REAL;
40 BEGIN PAGE;
50 WRITE('EINGABE RADIUS: ');
60 READ(R);
70 U:=2*PI*R;
80 A:=PI*R*R;
90 WRITELN;
100 WRITELN('UMFANG: U=',U:10:4);
110 WRITELN;
120 WRITE('FLAECHE:A=',A:10:4)
130 END.
Am Ende der Texterstellung ist das Schreiben mit >CTRL-C<
abzubrechen. Eventuelle Fehler laesst man am besten erst ein-
mal stehen und aendert sie spaeter im Editier-Modus.
( >CTRL-C< = S4-K = >BREAK< )
Nach jeder beendeten Arbeit meldet sich der Compiler wieder mit
>_
und wartet auf ein Steuerzeichen.
LISTEN:
=======
L(ist) oder Lm,n z.B.: L10,120
Listet Quelle ab erster Zeilennummer oder ab Zeile m
bis Zeile n. (oder Ende, wenn letzter Parameter fehlt.
Zahl der Bildschirmzeilen, die gelistet werden:
Ki z.B.: K20
Normal werden 15 BS-Zeilen gelistet. Aber mit K und
einer Zahl i kann die Zeilenzahl veraendert werden.
Nach dem Listen des Textes und der Feststellung von Fehlern,
kann man diese im Editier-Modus beseitigen.
EDITIEREN:
==========
E(dit) oder En
Mit E und der Zeilenzahl n wird nach >ENTER< die Zeile
aufgelistet und darunter erscheint die Zeilennummer noch
einmal.
>E100 >ENTER<
100 WRITELN('UMFANG: U=',U:10:4)
100 _
Mit >SPACE< wird der CURSOR nach rechts, mit ' <-- ' nach links
und mit ' --> ' in Tabulator-Schritten bewegt,
- nun kann der Text aufgeblaettert werden, um an die Stelle der
vorgesehenen Aenderung zu gelangen.
Folgende Editier-Kommandos und Wirkungen gibt es:
I Insert die folgenden Zeichen werden einge-
fuegt. Der Cursor erscheint dabei
als "*". Mit >ENTER< wird dieser
Modus verlassen, es kann weiter edi-
tiert werden.
C Change die folgenden Zeichen ueberschreiben
den urspruenglichen Text. Cursor er-
scheint als "+". Mit >ENTER< wird
dieser Modus verlassen.
X setzt Cursor an das Ende der Zeile und
geht in den Insert-Modus ueber.
L List Listet die Zeile noch einmal
K Kill Loescht aktuelles Zeichen (mehrfaches
K loescht weitere Zeichen ohne BS-
Anzeige.)
Z Kill ab Cursor bis Zeilenende.
R Reload bringt den Zustand der Zeile vor der
Aenderung zurueck.
Q Quit geht in den Zustand vor Edit zurueck.
>ENTER< beendet Editieren.
Im Zusammenhang mit anderen Steuerkommandos gibt es noch zwei
weitere Editierkommandos:
FIND:
=====
F(ind)m,n,$1,($2)
>F10,130,UMFANG,KREISUMFANG
100 WRITELN('_
Mit der Meldung der Zeile bis zum gesuchten String
geht der Compiler wieder in den Editiermodus.
F Weitersuchen, falls nicht der gesuchte String
S Substitute, tauscht String 1 gegen String 2
aus.
Wenn sich der Compiler nach Start zum compilieren mit >error<
meldet, gibt es noch zwei Moeglichkeiten zum Editieren:
E listet die aktuelle Zeile zum Editieren auf
P listet die vorherige Zeile auf.
Da beim Uebersetzungslauf die Zeilen mitgelistet werden, ist
ein Fehler auffindbar.
Eine fehlerhafte Zeile kann geloescht werden, indem nur die
Zeilennummer und >ENTER< eingegeben wird.
DELETE:
=======
D(elete)m,n Der Text von Zeile m bis einschl. n
wird geloescht.
KOPIEREN:
=========
M(ove)m,n kopiert Zeile m auf Zeile n.
(ueberschreibt Zeile n)
NEUE ZEILENNUMERIERUNG:
=======================
Nn,i Number Die Zeilen werden mit Zeilennummer
n beginnend im Schrittmass i umnu-
meriert.
UEBERSETZEN:
============
C(ompile) oder Cm oder Cm,n Der Quelltext wird
von der ersten, oder der angegebenen,
Zeile bis Ende, oder von Zeile m
bis Zeile n uebersetzt.
Liegt ein Fehler vor, wird der Uebersetzungslauf beendet und
der Compiler meldet:
>error< ^ XX_
XX ist dabei die Nummer des Fehlers, unter welcher der Fehler
in der Liste steht. Siehe unten.
Liegen keine Fehler vor, meldet sich der Compiler nach abge-
schlossenem Uebersetzungslauf mit
RUN? Hier wird die Eingabe von "Y" (Yes) erwartet, wenn ein
Probelauf gestartet werden soll. Im anderen Fall geht
der Compiler wieder in den Schreib-Modus.
Bei einem mit Y gestarteten Probelauf, werden Editor und Com-
piler nicht zerstoert. Dieser Fall tritt nur wie oben be-
schrieben, beim Uebersetzen und Linken zum MC-File auf.
Nach Ende des Laufes kann der Probelauf mit:
R(un) noch weiteremale gestartet werden.
Damit kann das Programm nach allen Seiten getestet werden, be-
vor es in ein MC-File mit dem T-Kommando uebersetzt wird.
Weitere Steuerzeichen:
======================
Wie weiter oben beschrieben:
Pm,n Put, Text auf Kassette schreiben (s.o.)
G Get, Texte von Kassette lesen (s.o.)
T,m oder T MC-Programm, Adressen umrechnen und linken.
Dazu kommen noch:
B Bye, Systemaustritt
X Ausgabe der Anfangsadresse des Textpuffers
W Write, Ausgabe der Quelle auf den Drucker.
FOLGENDER HINWEIS:
==================
Fuer die Kommandoparameter m, n, und i existiert ein Speicher.
Nach jeder Kommandoeingabe mit neuen Parametern, werden diese
dort abgelegt.
Im Kommando nicht belegte Parameter bleiben dabei unveraendert.
Anschliessend erfolgt die Ausfuehrung der Kommandos, wobei die
Parameter aus dem Parameterspeicher verwendet werden.
Nach der Initialisierung hat der Parameterspeicher den Zustand
10 10 leere Zeichenkette leere Zeichenkette
Bei diesem Zustand ist das Kommando
I gleichbedeutend dem Kommando I10,10
Beachten Sie dabei: Wenn ein ausgelassener Parameter nicht der
letzte ist, muss das ihm folgende Komma gesetzt werden!!
Aus diesen Regeln ergibt sich die Moeglichkeit, bei oft verwen-
deten Kommandos die Parametereingabe abzukuerzen.
z.B.: F10,,KREIS,RADIUS
Ausnahmen:
C Uebersetzen ab niedrigster Zeilennummer
Dm,n Verkuerzung nicht moeglich
Em weitere Verkuerzung nicht moeglich, ausser bei einer
Fehlermeldung.
K wirkt wie K15
Lm,n L,n: ohne m listen ab niedrigster Zeilennummer
Lm: ohne n listen bis Textende
L : ohne n und m listen vom Anfang bis Ende
Nm,n Verkuerzung nicht moeglich
T Uebersetzen ab niedrigster Zeilennummer und Auslagern
*************************************************************
4. Beschreibung des Sprachumfangs:
*************************************************************
Ein Lehrgang in Pascal kann hier nicht gegeben werden. Hier ver-
weisen wir auf einschlaegige Fachliteratur oder Lehrgaenge an
der Volkshochschule o.ae. Einrichtungen. Literaturhinweis a.E.d.
Beschreibung.
----------------------------------------------------------------
Hier wird nur der Sprachumfang erleutert.
4.1. PASCAL-Symbole
Im Pascal koennen alle Symbole gross oder klein geschrieben
werden. Wird der Bezeichner einer Variablen aber in einer
Schreibweise festgelegt, muss sie im gesamten Text eingehalten
werden.
Bezeichner (Identifizierer) muessen mit einem Buchstaben begin-
nen und koennen eine Folge von Buchstaben und Ziffern enthal-
ten, (10 Zeichen signifikant.) z.B.:
a , B , a1B , KREIS , UMFANG , u.a..
a) Arithmetische und logische Verknuepfungen
Ergibtzeichen :=
Real-und Integerzahlen + - * /
Integerzahlen DIV MOD
Boole'sche Variable OR AND NOT
b) Relationen
=,<>,<,>,<=,>=
IN (fuer Set-Arithmetik)
c) Klammern, Trennzeichen etc.
([{ }]) . , ; : # $ @ ^ ~ .. | \
d) Programm-Grundstrukturen
PROGRAM BEGIN END FUNCTION PROCEDURE END.
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 ueberprueft, so dass das Uebergehen der FOR-Anweisung
moeglich ist.
g) Verzweigungen
IF...THEN...ELSE... CASE...OF...ELSE...
CASE...OF...END
GOTO Das Sprungziel muss im gleichen Block liegen und
mit LABEL deklariert sein.
h) Records
WITH...DO...
i) Pointer (dynamische Variable)
NIL
k) Rekursive gegenseitig definierte Funktionen und Prozeduren
FORWARD
4.2. Identifikatoren
a) Konstanten
FALSE TRUE MAXINT es gilt MAXINT = 32767
b) Type-Konstanten
INTEGER Mit vorgesetztem # koennen INTEGER als Hexazahlen
programmiert werden. In der WRITE-Anweisung kann
durch die Formateingabe :n:H die Ausgabe in Hex-
form erreicht werden. (n=Konstante vom INTEGER-
Typ).
Beispiel: 1210D = 4BAH . Die Anweisung
WRITE(1210:n:H)
ergibt fuer n=1 : A...niederwertigstes Halbbyte
n=2 : BA...niederwertiges Byte
n=3 : 04BA...vollstaendige Hexazahl
n>4 : rechtsbuendiges Schreiben von 04BA im
angegebenen Format.
(H heisst hier Hexaausgabe)
REAL Die REAL-Zahlen werden in 4-Byte-Gleitkomma-
arithmetik verknuepft.
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)
(R=REAL/I=INTEGER)
RANDOM Erzeugung von ganzzahligen Zufallszahlen z mit
0 <= z <= 255 (Abfrage Refreshregister).
EOLN Wird TRUE, falls das naechste einzulesende Zeichen
CR (Code 13) ist , sonst FALSE.
Beispiel: Eingabe einer Zeichenkette variabler Laenge
I:=1;
REPEAT READ(a[I]); I:=I+1 UNTIL EOLN
d) Prozeduren fuer dynamische Variable
NEW(P) Erzeugung einer dynamischen Variablen
RELEASE(P) Abmeldung aller nach P erzeugten dynamischen
Variablen
MARK(P) Markierung der dynamischen Variablen P
e) Ordnungsfunktionen fuer Skalartypen
ORD(A) liefert Position des Skalarwertes A in der durch
den Typ von A festgelegten Wertmenge
CHR(I) liefert ASCII-String mit Code I
SUCC(A) Nachfolger von A
PRED(A) Vorgaenger von A
Beispiel: SUCC(3) = 4, SUCC('B') = 'C',
PRED(TRUE) = FALSE
f) Ein-und Ausgabe
READ(A) READLN(A) ACHTUNG! Beim Lesen von Zeichen-
ketten aus dem Eingabepuffer ist das erste
Zeichen stets CR (Code 13)
WRITE(A) WRITELN(A)
Beispiel: zur Formatsteuerung:
VAR X: REAL;I: INTEGER;
.
.
WRITE(X:10:2,I:6:H) ...
PAGE Seitenvorschub am Drucker bzw. Bildschirm
loeschen im Programm
INCH Tastaturabfrage, entspr. INKEY$ im BASIC
INP(P) Entspricht den Assemblerbefehlen IN und OUT.
und OUT(P,C) Die Zahl P ist Kanaladresse (0<P<255)
C ist eine Konstante oder Variable vom
Typ CHAR.
Beispiel: OUT(1,A)
bewirkt die Ausgabe des Wertes einer Variab-
len A ueber den PIO-Port.
g) Speicherzugriff
adr, N, size koennen dezimal oder mit vorgesetztem # auch
hexadezimal eingegeben werden.
'name' wird einschl. Typ bei den Save- und
Load-Routinen nochmals abgefragt.
SIZE(V) Laenge der Variablen V in Byte
ADDR(V) Adresse des ersten Byte der
Variablen V
POKE(N,V) Eintragen des Wertes der Variablen
V ab Adresse N
TIN('name',adr.) Laden vom Band nach Adresse adr.
TOUT('name',adr.,size) Sichern auf Band von adr. mit
Umfang size
PEEK(N,T) Ab Adresse N wird der Speicher-
inhalt entsprechend dem Typ T aus-
gewertet.
Typ T kann sein: INTEGER, CHAR,
REAL, oder ARRAY(1...n) OF...
h) Benutzung von Maschinen-Code
INLINE(F) Einfuegen der durch die Parameterfolge F defi-
nierten Code-Anweisungen. Als Parameter sind
Ausdruecke vom Typ INTEGER oder CHAR zugelas-
sen.
F = dezimal oder
#F = hexadezimal
z.B.: INLINE(14,17,205,...)
INLINE(#CD,#00,#70,#...)
USER(N) Aufruf eines MC-Programmes mit der Adresse N
N = dezimal oder
#N = hexadezimal
i) Programm-Abbruch
HALT beendet den Programmlauf mit Ausschrift des
Befehlszaehlers
Weiter unten befindet sich eine Auflistung aller implementier-
ten Schluesselwoerter.
*************************************************************
5. Kontrollfunktionen des Compilers
*************************************************************
Der Compiler hat eine Reihe von Kontrollfuntionen, die abge-
schaltet werden koennen, um die Bearbeitungsgeschwindigkeit zu
erhoehen. Sie werden geschaltet durch das entsprechende Funk-
tionszeichen mit vorangestelten "$" zu Beginn eines Kommentars
z.B.: (*$L-,C-*) bzw. {$L-,C-}.
Die Kontrollfuktionen A,L,O,C,S sind standardmaessig auf +
eingestellt, die Kontrollfunktion I auf -, und die Kontroll-
funktion P auf Bildschirm.
Kontrollfunktion A: Im Zustand A+ werden alle Feldindizes auf
Einhaltung der Feldgrenzen ueberprueft.
Kontrollfunktion L: Im Zustand L+ wird beim Uebersetzen der
Quelle mit den Objektcode-Adressen gelistet. Bei L- wer-
den Zeilen nur dann gelistet, wenn in ihnen Fehler auftre-
ten.
Kontrollfunktion O: Alle Gleitkommaoperationen sowie die
Multiplikation und Division bei ganzen Zahlen unterliegen
einer staendigen Ueberlaufkontrolle. Bei O+ unterliegen
auch die Addition und Subtraktion von ganzen Zahlen dieser
Kontrolle.
Kontrollfuntion C: Im Zustand C+ wird waehrend des Programm-
laufs in allen Schleifen, Funktionen, und Prozeduren die
Tastatur auf Druecken der >CTRL-C<-Taste ueberprueft, ge-
gebenenfalls der Programmlauf unterbrochen und auf eine
weitere Tastenbetaetigung gewartet. Nochmaliges Druecken
von >CTRL-C< fuehrt zum Abbruch, auf jede andere Taste
wird das Programm fortgesetzt. Bei C- wird auf die
Tastaturkontrolle verzichtet.
Kontrollfunktion S: Sie kontrolliert die Ausdehnung des Stacks.
Kontrollfunktion I: Bei der Relationsbildung mit >,<,>=,>= von
Integer-Zahlen kann es zu Ueberlauf kommen, wenn Unter-
schiede groesser als MAXINT auftreten. Bei I- wird Korrek-
tur bei Overflow, bei I+ keine durchgefuehrt.
Kontrollfunktion P: Steuert die Ausgabe zum Bildschirm oder
zum Drucker. Das Kommando P wirkt umschaltend, es folgt
nicht + oder -.
************************************************************
5. Fehlermeldung des Laufzeitsystems
************************************************************
Halt kein Fehler, HALT wurde programmiert oder
Stop bzw. BREAK zweimal betaetigt
Overflow arithmetischer Ueber- oder Unterlauf
Out of RAM Top of RAM reicht nicht aus
/ by Zero Division durch Null ( /; DIV; MOD )
Index to Low Feldindex zu klein
Index to High Feldindex zu gross
Math Call Error Fehler beim Aufruf einer mathematischen
Funktion
Number to large Zahl ist zu gross
Number expected bei READ wurde Zahl erwartet
Exponent expectet Ein Exponent wurde erwartet
*************************************************************
6. FEHLERMELDUNGEN COMPILER: **
*************************************************************
1 ZAHL ZUGROSS
2 ;ERWARTET
3 UNDEF. NAME
4 NAME ERWARTET
5 BEI CONST = UND NICHT :=
6 =ERWARTET
7 EINE ANWEISUNG DARF NICHT MIT DIESEM NAMEN BEGINNEN
8 :=ERWARTET
9 )ERWARTET
10 TYPFEHLER
11 .ERWARTET
12 FACTOR ERWARTET
13 CONSTANT ERWARTET
14 NAME IST KEINE CONSTANTE
15 THEN ERWARTET
16 DO ERWARTET
17 TO ODER DOWNTO ERWARTET
18 ( ERWARTET
19 AUSDRUCK TYP KANN NICHT GESCHRIEBEN WERDEN
20 OF ERWARTET
21 ,ERWARTET
22 :ERWARTET
23 PROGRAM ERWARTET
Z4 VARIABLE EWARTET,DA PARAMETER VARIABEL IST
25 BEGIN ERWARTET
26 BEI READ VARIABLE ERWARTET
27 AUSDRUECKE DIESES TYPS KOENNEN NICHT VERGLICHEN WERDEN
28 INTEGER / REAL ERWARTET
29 VARIABLENTYP KANN NICHT GELESEN WERDEN
30 DIESER NAME IST KEIN TYP
31 BEI REAL IST EXPONENT VERLANGT
32 SCALARER AUSDRUCK , KEIN NUMERISCHER ERWARTET
33 LEERSTRINGS VERBOTEN, CHR(0) VERWENDEN
34 (/ERWARTET
35 /)ERWARTET
36 ARRAYINDEX MUSS SCALAR SEIN
37 ..ERWARTET
38 (/ ODER , ERWARTET IN ARRAY DECLARATION
39 OBERGRENZE<UNTERGRENZE!
40 ZU LANG! MAX.256 ELEMENTE
41 ERGEBNIS VOM TYP NAME ERWARTET
42 , ODER /) ERWARTET IN SET
43 ../ ,/ /) ERWARTET
44 PARAMETERTYP MUSS NAME SEIN
45 LEERES SET KANN NICHT FACTOR IN NICHT-ZUWEISUNGSANW.
SEIN
46 SCALARTYP (+REELLE ZAHL) ERWARTET
47 SCALARTYP REELLE ZAHLEN ERWARTET
48 SETS NICHT VERTRAEGLICH
49 < AND > SETS NICHT DAMIT VERGLEICHEN
50 FORWARD,LABEL,CONST,VAR,TYPE BEGIN ERWARTET
51 HEXAZAHL ERWARTET
52 SETS KOENNEN NICHT GEPOKED WERDEN
53 ARRAY ZU GROSS
54 END ODER : IN RECORDDEFINITION FEHLT
55 FELDNAME ERWARTET
56 NACH WITH VARIABLE ERWARTET
57 WITH-VARIABLE MUSS RECORD-TYP SEIN
58 FELDNAME NICHT MIT WITH ANWEISUNG IN VERBINDUNG
59 NACH LABEL VORZEICHENLOSE INTEGERZAHL
60 NACH GOTO VORZEICHENLOSE INTEGERZAHL
61 MARKE IN FALSCHER PROGRAMMEBENE
62 MARKE NICHT VEREINBART
63 PARAMETER VON SIZE MUSS VARIABLE SEIN
64 AUF ZEIGER NUR GLEICHHEITSTEST ANGEWANDT
65 ZULAESSIGE WRITE-PARAMETER FUER INTEGER: E:M:H
66 $ ENTHAELT KEIN ZEILENENDEZEICHEN
67 PARAMETER VON NEW,MARK,REALISE MUSS ZEIGERVARIABLE SEIN
68 PARAMETER VON ADDR MUSS VARIABLE SEIN
*************************************************************
7. Folgende Pascalbefehle sind implementiert:
*************************************************************
FRAC EXP LN ARCTAN TAN COS
SIN INP OUT SIZE ADDR INLINE
ENTIER USER RANDOM INCH HALT EOLN
PAGE SQRT ROUND TRUNC MAXINT SUCC
PRED ORD PEEK POKE RELEASE MARK
NEW TOUT TIN CHR ODD ABS
SQR FALSE TRUE BOOLEAN CHAR REAL
INTEGER READLN READ WRITELN WRITE PACKED
NIL FORWARD PROGRAM OR OF TO
DO IF SET NOT MOD DIV
VAR AND FOR END GOTO WITH
TYPE CASE ELSE THEN LABEL CONST
ARRAY UNTIL WHILE BEGIN RECORD DOWNTO
REPEAT FUNCTION PROCEDURE IN
STRINGS MUESSEN ALS ARRAY OF CHAR VEREINBART WERDEN.
*************************************************************
8. Literaturhinweise:
*************************************************************
Speziell zu diesem PASCAL existiert keine ausfuehrliche Lite-
ratur, auch nicht im ROBOTRON-Software-Angebot vom Industrie-
Vertrieb Erfurt.
Aber das Angebot an Literatur kann dafuer von Nutzen sein.
/1/ Lehrbriefe fuer das Hochschulfernstudium - Grundlagen der
Informatik Heft 3 u. 4 "Programmieren in PASCAL"
(Nr: 02 1019 03 0 und 02 1019 04 0) (zu beschaffen in den
Lehrmittelverkaufstellen von Hochschulen)
/2/ Paulin,G., Schiemangk,H.: Programmieren mit PASCAL
2.Auflage, Akademieverlag-Verlag Berlin 1986
/3/ Goldammer,G.: PASCAL fuer die Anwendung in der Wirtschaft
Verlag Die Wirtschaft, Berlin, 1987
Fuer die methodische Form der Programmierung in PASCAL und an-
deren Programmiersprachen, vor allem der Modultechnik gut geeig-
net ist
/4/ Lindner,U., Trautloft,R.: Grundlagen der problemorientier-
ten Programmentwicklung, 2. Auflage, Verlag Technik Berlin,
1988
/5/ Kofer,C.: PASCAL Teil 1-6 Mikroprozessortechnik
Teil 1 1987 H.9/271
Teil 2 H.11/335
Teil 3 1988 H.3/79
Teil 4 H.6/175
Teil 5 H.9/271
Teil 6 H.11/335
Der TURBO-PASCAL ist eine Erweiterung des Standart-PASCAL und
baut auf diesem auf.
==============================================================
Wichtige Adressen:
196D enthaelt Anfangsadresse Quelltext
1A07 enthaelt Endadresse Quelltext
03C8 enthaelt Speicherende
Sprung zu HSAVE: CD F4 FF
0211 fuer MC-Programm saven
0429 fuer Quelltext saven
Sprung zu HLOAD: CD F1 FF
03A2 fuer Quelltext
Spruenge zum Drucker:
1CC4 CD EB FF
0359 CD CD FF
0391 CD CA FF
Ende PASCAL mit B-Kommando:
199C 42 = B
199D 27 01 = Sprung nach 0127H
(hier ist die Eintragung einer anderen An-
sprungadresse moeglich)
Kommandos + Sprungadresse sind wie bei B-Kommando ab
## Adresse 199C ##
eingetragen.
Das Stringfeld liegt ab Adresse 013EH.
__________________________
TEXTBEARBEITUNG NACH VORLAGEN VON
N.HILDEBRAND und A.KRETSCHMER.
(letzter Bearbeiter Programm u. Text:
Dr.Trog, Berlin, Juli 1989)
==============================================================
Bitte geben Sie nur Originalversionen einschliesslich der Be-
schreibung weiter. Geaenderte Versionen, die noch nicht hinrei-
chend getestet sind, nur mit der Originalversion zusammen wei-
tergeben und im Kopf (Filenamen) kennzeichnen. Dabei auch in der
Beschreibung entsprechende Vermerke dazu machen.
==============================================================
^^^^^