hisoftPascal_out.s source code
Assembler output with linker information
Handbuch HiSoft Pascal
* *************************************************************** * B E S C H R E I B U N G HIS.-PASCAL 1.04 * *************************************************************** Standort des PASCAL-COMPILER's : 0100H - 4080H >CRC=DB78 Neustart : 0100H Warmstart : 0103H Ladeadressen: Anf.Adr.MC-File : 0330H St.Adr. MC-File : 03F9H Die Quelltextadresse ändert sich entsprechend der Werte bei der Speicherabfrage! 1. Speicherkonfiguration Ihr Z-1013 muß mindestens mit 32-Kbyte-RAM ausgerüstet sein. 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 das RAM-Ende für den Quelltext. Eine Zahl zwischen 16696 und 59391 muß eingegeben werden. Der Wert wird auf 03C8H/03C9H eingetragen. Es folgt: Top of RAM for "T" ? RAM-Ende für das zu erzeugende Maschinenprogramm. Sie können jetzt >ENTER< oder eine Zahl zwischen 5024 und 59391 eingeben. >ENTER< bewirkt die Übernahme des 'Top of RAM'- bereiches als Top of RAM for "T". Zuletzt erscheint: Table Size? Länge des internen Arbeitsspeichers, die von Variablen, Funktionen, Prozeduren etc. abhängt. >ENTER< oder eine angemessen große Zahl, max. 42710, kann eingegeben werden. Die unteren Zahlenangaben haben mehr theoretischen Charakter. Die oberen Werte gelten für diese Pascal-Version mit Speicherbegrenzung auf E7FFH. HINWEISE: * Wollen Sie eine der Größen ändern, müssen Sie den Compiler über das B-Kommando verlassen und neu starten. * Neustart ist nur mit J 100 (ohne Quell-Text im Editor) oder J 103 (mit Quell-Text im Editor) möglich. 2. Programme laden u. saven Diese Version von Hisoft wurde für den ZX-Spectrum entwickelt. Es handelt sich um eine Standardpascalversion, die im Compiler stark abgerüstet wurde. Ebenfalls wurde die Schnittstelle zu anderen Editoren mit Übergabe von ASCII-Text zu Gunsten des Speicherplatzbedarfes entfernt. Die angepaßte Version für den Z-1013 ist gegen einige Ände- rungen geschützt, dieser Schutz beeinträchtigt die Arbeit mit dem Compiler in keiner Weise und braucht nicht entfernt zu werden. Als Kassetteninterface wird für diese Version der >HEADER-SAVE< über Sprungverteiler (SV) genutzt. Damit eröffnen sich für den Anwender folgende Möglichkeiten: 1. Abspeichern von Quelltexten: Pm,n P(ut) m,n = Zeile m bis n z.B.: P10,130 Die SAVE-Routine meldet sich mit der üblichen Abfrage: 'filename'. Der Quelltext wird mit Typ:'P' abgespeichert. 2. Lesen von Quelltexten: G G(et) ohne Parameter! z.B.: G Der HEADER-SAVE fragt Typ und Filename ab. Die Zeilennummern des Quelltextes wird automatisch geändert und an eine evtl. vorherige Numerierung angepaßt. Es können also verschiedene Pascal- Teile getrennt geschrieben und getestet werden, um sie später zu verbinden. 3. Abspeichern von lauffähigen MC-Programmen: T,m T(est) z.B. T,10 oder T Das Programm wird daraufhin übersetzt und meldet sich mit "Ok?". Hierauf wird ein "Y" eingegeben. Nach dem Y erfolgt ein Linken des Programmes, wobei der Pascal- editor und -compiler zerstört 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, danach mel- det sich der Monitor. Jede andere Taste bringt den Pascal wieder in den Schreibmodus zurück. 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: >_ Hier wird jetzt folgendermaßen vorgegangen: 1Programmieren0 Im,i I(nsert) z.B. I10,5 (ab Zeile 10 in 5er Schritten) 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. Der Editor meldet sich mit : > 10 _ Hier ein kurzes Beispiel: (Gegeben sind Pi und Radius, gesucht wird der Umfang und die Fläche 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 läßt man stehen und ändert sie später im Editier-Modus. Nach jeder beendeten Arbeit meldet sich der Compiler wieder mit >_ und wartet auf ein Steuerzeichen. 1Listen0 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. Nach dem Listen des Textes und der Feststellung von Fehlern kann man diese im Editier-Modus beseitigen. 1Editieren0 En E(dit) z.B.: E17 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. Dadurch kann der Text aufgeblättert werden, um an die Stelle der vorgesehenen Änderung zu gelangen. Folgende Editier-Kommandos und Wirkungen gibt es: I(nsert) die folgenden Zeichen werden einge- fügt. Der Cursor erscheint dabei als "*". Mit >ENTER< wird dieser Modus verlassen, es kann weiter editiert werden. C(hange) die folgenden Zeichen überschreiben den ursprünglichen 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 über. L(ist) Listet die Zeile noch einmal. K(ill) Löscht aktuelles Zeichen (mehrfaches K löscht weitere Zeichen ohne BS-Anzeige.) Z Kill ab Cursor bis Zeilenende. R(eload) bringt den Zustand der Zeile vor der Änderung zurück. Q(uit) geht in den Zustand vor Edit zurück. >ENTER< beendet Editieren. Im Zusammenhang mit anderen Steuerkommandos gibt es noch zwei weitere Editierkommandos: 1Suchen0 F F(ind) Fm,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 S1 gegen S2 aus. Wenn sich der Compiler nach Start zum compilieren mit >error< meldet, gibt es noch zwei Möglichkeiten zum Editieren: E listet die aktuelle Zeile zum Editieren auf P listet die vorherige Zeile auf. Da beim Übersetzungslauf die Zeilen mitgelistet werden, ist ein Fehler auffindbar. Eine fehlerhafte Zeile kann auch ohne E-Kommando gelöscht wer- den, indem nur die Zeilennummer und >ENTER< eingegeben wird. 1Löschen0 Dm,n Der Text von Zeile m bis einschl. n wird gelöscht. 1Kopieren0 Mm,n kopiert Zeile m auf Zeile n. (überschreibt Zeile n) 1Neue Zeilennumerierung0 Nn,i Die Zeilen werden mit Zeilennummer n beginnend im Schrittmaß i umnummeriert. 1Übersetzen0 Cm(,n) Der Quelltext wird von der ersten oder der angegebenen Zeile bis Ende oder bis Zeile n übersetzt. Liegt ein Fehler vor, wird der Übersetzungslauf 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 Übersetzungslauf 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 zerstört. Dieser Fall tritt nur wie oben be- schrieben, beim Übersetzen und Linken zum MC-File auf. Nach Ende des Laufes kann der Probelauf mit: R(un) nochmals gestartet werden. Damit kann das Programm nach allen Seiten getestet werden, be- vor es in ein MC-File mit dem T-Kommando übersetzt wird. Beim Compilieren wird der Quelltext gedoppelt und die compilierte Version 2 Byte über den originalen Quelltext geschrieben. 1Weitere Steuerzeichen0 B Bye, Systemaustritt X Ausgabe der Anfangsadresse und Endadresse des Quelltextes im Textpuffer W Write, Ausgabe der Quelle auf den Drucker. 1Hinweis0 Für 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 unverändert. Anschließend erfolgt die Ausführung der Kommandos, wobei die Parameter aus dem Parameterspeicher verwendet werden. Nach der Initialisierung hat der Parameterspeicher den Zustand 10,10,>leer<,>leer< Bei diesem Zustand ist das Kommando I gleichbedeutend dem Kommando I10,10 Beachten Sie dabei: Wenn ein ausgelassener Parameter nicht der letzte ist, muß das ihm folgende Komma gesetzt werden! Aus diesen Regeln ergibt sich die Möglichkeit, bei oft verwen- deten Kommandos die Parametereingabe abzukürzen. z.B.: F10,,KREIS,RADIUS Ausnahmen: C Übersetzen ab niedrigster Zeilennummer Dm,n Verkürzung nicht möglich Em weitere Verkürzung nicht möglich, außer bei einer Fehlermeldung. K wirkt wie K15 Lm,n L,n: listen ab niedrigster Zeilennummer Lm : listen bis Textende L : listen von Anfang bis Ende Nm,n Verkürzung nicht möglich T Übersetzen ab niedrigster Zeilennummer und Auslagern 4. Beschreibung des Sprachumfangs Ein Lehrgang in Pascal kann hier nicht gegeben werden, hier ver- weisen wir auf einschlägige Fachliteratur oder Lehrgänge an der Volkshochschule o.ä. Einrichtungen. Hier wird nur der Sprachumfang erläutert. 4.1. PASCAL-Symbole Im Pascal können alle Symbole groß- oder kleingeschrieben werden. Wird der Bezeichner einer Variablen aber in einer Schreibweise festgelegt, muß sie im gesamten Text eingehalten werden. Bezeichner (Identifizierer) müssen mit einem Buchstaben begin- nen und können eine Folge von Buchstaben und Ziffern enthal- ten, (10 Zeichen signifikant.) z.B.: a , B , a1B , KREIS , UMFANG , u.a. 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. (Ää üÜ) . , ; : # $ @ ^ ß .. ö Ö 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 überprüft, so daß das Übergehen der FOR-Anweisung möglich ist. g) Verzweigungen IF...THEN...ELSE... CASE...OF...ELSE... CASE...OF...END GOTO Das Sprungziel muß im gleichen Block liegen und mit LABEL deklariert sein. h) Records WITH...DO... i) Pointer (dynamische Variable) NIL k) Rekursive gegenseitige definierte Funktionen und Prozeduren FORWARD 4.2. Identifikatoren a) Konstanten FALSE TRUE MAXINT es gilt MAXINT = 32767 b) Type-Konstanten INTEGER Mit vorgesetztem # können INTEGER als Hexazahlen programmiert werden. In der WRITE-Anweisung kann durch die Formateingabe :n:H die Ausgabe in Hexaform erreicht werden. (n-Konstante vom INTEGER-Typ). Beispiel: 1210D = 4BAH . Die Anweisung WRITE(1210:n:H) ergibt für n=1 : A niederwertigstes Halbbyte n=2 : BA niederwertiges Byte n=3 : 04BA vollständige Hexazahl n>4 : rechtsbündiges Schreiben von 04BA im angegebenen Format. REAL Die REAL-Zahlen werden in 4-Byte-Gleitkomma- arithmetik 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) (R=REAL/I=INTEGER) RANDOM Erzeugung von ganzzahligen Zufallszahlen (0..255) (Abfrage Refreshregister). 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) Prozeduren für 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 für 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) Vorgänger von A Beispiel: SUCC(3) = 4, SUCC('B') = 'C', PRED(TRUE) = FALSE f) Ein-und Ausgabe READ(A) READLN(A) ACHTUNG! Beim Lesen von Zeichenketten aus dem Eingabepuffer ist das erste Zeichen stets CR. 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 löschen im Programm. INCH Tastaturabfrage, entspr. INKEY$ in BASIC INP(P) Entspricht den Assemblerbefehlen IN OUT(P,C) und OUT. C ist eine Konstante oder Variable vom Typ CHAR. Beispiel: OUT(0,C) bewirkt die Ausgabe des Wertes der Variab- len C über den PIO-Port A. CHR(16) Schalterfunktion für einen Epson-kompatiblen Drucker. An entsprechender Stelle im Programm wird der Drucker zu- bzw. abgeschaltet. z.B. im WRITE - Befehl: WRITE(CHR(16),'.....',CHR(16)) g) Speicherzugriff adr,N,size können dezimal oder mit vorgesetztem # auch hexadezimal eingegeben werden. 'name' wird einschl. Typ bei den Save- und Load-Routinen nochmals abgefragt. SIZE(V) Länge 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 zur Adresse adr. TOUT('name',adr.,size) Sichern auf Band von adr. mit Läange 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) Einfügen der durch die Parameterfolge F defi- nierten Code-Anweisungen. Als Parameter sind Ausdrücke vom Typ INTEGER oder CHAR zugelassen. 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 Befehlszählers Weiter unten befindet sich eine Auflistung aller implementier- ten Schlüsselwörter. 5. Kontrollfunktionen Der Compiler hat eine Reihe von Kontrollfunktionen, die abge- schaltet werden können, um die Bearbeitungsgeschwindigkeit zu erhöhen. Sie werden geschaltet durch das entsprechende Funk- tionszeichen mit vorangestelltem "$" zu Beginn eines Kommentars z.B.: (*$L-,C-*) bzw. ä$L-,C-ü. Die Kontrollfunktionen A,L,O,C,S sind standardmäßig 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 überprüft. Kontrollfunktion L: Im Zustand L+ wird beim Übersetzen 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 ständigen Überlaufkontrolle. Bei O+ unterliegen auch die Addition und Subtraktion von ganzen Zahlen dieser Kontrolle. Kontrollfuntion C: Im Zustand C+ wird während des Programm- laufs in allen Schleifen, Funktionen, und Prozeduren die Tastatur auf Drücken der >CTRL-C<-Taste überprüft, ge- gebenenfalls der Programmlauf unterbrochen und auf eine weitere Tastenbetätigung gewartet. Nochmaliges Drücken von >CTRL-C< führt zum Abbruch, auf jede andere Tas- te 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 Überlauf kommen, wenn Unter- schiede größer als MAXINT auftreten. Bei I- wird Korrek- tur bei Overflow, bei I+ keine durchgeführt. Kontrollfunktion P: Steuert die Ausgabe zum Bildschirm oder zum Drucker. Das Kommando P wirkt umschaltend, es folgt nicht + oder -. 5. Fehlermeldungen des Laufzeitsystems Halt kein Fehler, HALT wurde programmiert oder Stop bzw. BREAK zweimal betätigt Overflow arithmetischer Über- 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 groß Math call error Fehler beim Aufruf einer mathematischen Funktion Number to large Zahl ist zu groß Number expected bei READ wurde Zahl erwartet Exponent expectet Ein Exponent wurde erwartet 6. FEHLERMELDUNGEN COMPILER 1 Zahl zu groß 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 Faktor 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 erwartet, da Parameter variabel ist 25 BEGIN erwartet 26 Bei READ Variable erwartet 27 Ausdrücke dieses Typs können 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 muß 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 muß Name sein 45 leeres Set kann nicht Factor in Nicht-Zuweisungsanweisung sein 46 Scalartyp (+reelle zahl) erwartet 47 Scalartyp reelle zahlen erwartet 48 Sets nicht verträglich 49 < and > Sets nicht damit vergleichen 50 FORWARD, LABEL, CONST, VAR, TYPE, BEGIN erwartet 51 Hexazahl erwartet 52 Sets können nicht gepoket werden 53 ARRAY zu groß 54 END oder : in Recorddefinition fehlt 55 Feldname erwartet 56 nach WITH Variable erwartet 57 WITH-Variable muß 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 muß Variable sein 64 auf Zeiger nur Gleichheitstest angewandt 65 zulässige WRITE-Parameter für Integer: E:M:H 66 $ enthält kein Zeilenendezeichen 67 Parameter von NEW, MARK, RELEASE muß Zeigervariable sein 68 Parameter von ADDR muß Variable sein 7. Implementierte Befehle 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 müssen als Array of Char vereinbart werden. 8. Literaturhinweise: Speziell zu diesem PASCAL existiert keine ausführliche Lite- ratur. Auch nicht im ROBOTRON-Software-Angebot vom Industrie- Vertrieb Erfurt. Aber das Angebot an Literatur kann dafür von Nutzen sein. /1/ Lehrbriefe für 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 für die Anwendung in der Wirtschaft Verlag Die Wirtschaft, Berlin, 1987 Für die methodische Form der Programmierung in PASCAL und an- deren Compilern/Interpretern: /4/ Lindner,U., Trautloft,R.: Grundlagen der problemorientier- ten Programmentwicklung, 2. Auflage, Verlag Technik Berlin, 1988 /5/ Kofer,C.: PASCAL Teil 1-6 in 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 TURBO-PASCAL ist eine Erweiterung des Standart-PASCAL und baut auf diesem auf. 1Wichtige Adressen0 196D enthält Anfangsadresse Quelltext 1A07 enthält Endadresse Quelltext Sprung zu HSAVE: CD FF F4 0219 für MC-Programm saven 0429 für Quelltext saven Sprung zu HLOAD: CD F1 FF 03A2 für Quelltext Sprünge zum Drucker: 1CC4 CD EB FF 0359 CD CD FF 0391 CD CA FF 038A 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 möglich) 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, September 1989 PS: Bitte geben Sie nur Originalversionen einschließlich der Beschreibung weiter. Geänderte Versionen, die noch nicht ausrei- chend getestet sind, nur mit der Originalversion zusammen wei- tergeben und im Kopf (Filename) mit ^ kennzeichnen. Dabei auch in der Beschreibung einen entsprechenden Vermerk dazu machen. <<EOT>>