From c316cd982303f30f29075f31bcd910f9be38bb25 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sat, 2 Mar 2019 17:15:47 +0100 Subject: Convert charset to utf8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Files imported in commit 98cab31fc3659e33aef260efca55bf9f1753164c were exported from EUMEL to DOS and used codepage 437/850(?). Convert files to UTF-8 where possible. Some files were left as-is. I’m not sure whether converting these would be correct. --- devel/debugger/1.8.2/doc/DEBUGGER.PRT | 518 +++++++++++++++++----------------- devel/debugger/1.8.2/src/DEBUGGER.ELA | 42 +-- 2 files changed, 280 insertions(+), 280 deletions(-) (limited to 'devel/debugger') diff --git a/devel/debugger/1.8.2/doc/DEBUGGER.PRT b/devel/debugger/1.8.2/doc/DEBUGGER.PRT index 4379f4a..f5ec838 100644 --- a/devel/debugger/1.8.2/doc/DEBUGGER.PRT +++ b/devel/debugger/1.8.2/doc/DEBUGGER.PRT @@ -11,14 +11,14 @@ 1. Anwendung des Debuggers 1.1 Code Disassembler (Decoder) -1.1.1 Datenrepr„sentation +1.1.1 DatenreprĂ€sentation 1.1.2 Datenadressen 1.1.3 Codeadressen 1.2 Ablaufverfolgung (Tracer) 2. Die EUMEL0-Instruktionen -2.1 Erl„uterung der Instruktionen (Thematisch sortiert) +2.1 ErlĂ€uterung der Instruktionen (Thematisch sortiert) 2.2 Alphabetische Liste der Instruktionen 3. Beschreibung der Pakete @@ -30,18 +30,18 @@ #page# #ub#1. Anwendung des Debuggers#ue# -Der EUMEL-Debugger ist fr die Software-Entwickler und nicht fr die +Der EUMEL-Debugger ist fĂŒr die Software-Entwickler und nicht fĂŒr die Anwender dieser Software gedacht. Insbesondere bei der Entwicklung systemnaher Software, wie z.B. Compiler, ist der Debugger hilfreich. -(ELAN-)Programme werden wie bisher compiliert (z.B. insertiert), ohne daá -der Quelltext des Programmes vorher modifiziert werden máte. Um den -Sourcetext w„hrend der Ablaufverfolgung (Trace) beobachten zu k”nnen, -máen die Programme mit 'check on' bersetzt werden. +(ELAN-)Programme werden wie bisher compiliert (z.B. insertiert), ohne daß +der Quelltext des Programmes vorher modifiziert werden mĂŒĂŸte. Um den +Sourcetext wĂ€hrend der Ablaufverfolgung (Trace) beobachten zu können, +mĂŒĂŸen die Programme mit 'check on' ĂŒbersetzt werden. Die sinnvolle Anwendung des Debuggers setzt allerdings Kenntnis der -EUMEL0-Instruktionen voraus, die im Kapitel 2 erl„utert werden (Der Debugger -setzt die Codierung BIT-A fr diese Instruktionen voraus, d.h. er l„uft +EUMEL0-Instruktionen voraus, die im Kapitel 2 erlĂ€utert werden (Der Debugger +setzt die Codierung BIT-A fĂŒr diese Instruktionen voraus, d.h. er lĂ€uft zumindest in der interpretativen EUMEL0-Version.). @@ -49,10 +49,10 @@ zumindest in der interpretativen EUMEL0-Version.). Der Decoder konvertiert die vom Compiler erzeugte Bitcodierung (16 Bit) in Mnemonics (Textdarstellung der Instruktionen), die in eine FILE geschrieben, -bzw. optional auf dem Bildschirm ausgegeben werden k”nnen. Die Bitcodierung -kann zus„tzlich ausgegeben werden. -Der Decoder wird mit 'decode' aufgerufen. W„hrend der Dekodierung stehen -folgende Tastenfunktionen zur Verfgung: +bzw. optional auf dem Bildschirm ausgegeben werden können. Die Bitcodierung +kann zusĂ€tzlich ausgegeben werden. +Der Decoder wird mit 'decode' aufgerufen. WĂ€hrend der Dekodierung stehen +folgende Tastenfunktionen zur VerfĂŒgung: Taste Funktion ----------------------------------------------------------------------- @@ -65,44 +65,44 @@ Taste Funktion s storage info m Zeigt die aktuelle Modulnummer an (sinnvoll falls kein Echo) Q,W Zeilennummern/Hexadressen mitprotokollieren (falls kein Echo) - S Keine Zeilennummern/Hexadressen ausgeben (l„uft auch im Hintergrund) + S Keine Zeilennummern/Hexadressen ausgeben (lĂ€uft auch im Hintergrund) -#ub#1.1.1 Datenrepr„sentation#ue# +#ub#1.1.1 DatenreprĂ€sentation#ue# INT-Zahlen werden hexadezimal (xxxxH, xxH) oder dezimal dargestellt, -TEXTe in Anfhrungszeichen ("..."), +TEXTe in AnfĂŒhrungszeichen ("..."), REALs im 20-Stellen scientific-Format, TASK-Objekte durch XX-YYYY/"name" mit XX als Taskindex und YYYY als Version, wenn die Stationsnummer nicht 0 ist, wird sie vor XX als SS- dargestellt. -DATASPACE-Objekte werden durch XX-YY repr„sentiert (XX ist der eigene +DATASPACE-Objekte werden durch XX-YY reprĂ€sentiert (XX ist der eigene Taskindex, YY ist die Datenraumnummer), BOOL-Objekte durch TRUE oder FALSE. Module werden durch ihre Modulnummer, optional auch durch ihre - Startadresse, und falls m”glich durch ihren Namen repr„sentiert. Die - Parameterliste wird in den F„llen, wo das Modul in der Permanenttabelle + Startadresse, und falls möglich durch ihren Namen reprĂ€sentiert. Die + Parameterliste wird in den FĂ€llen, wo das Modul in der Permanenttabelle vermerkt ist auch angegeben. Nicht weiter dereferenzierbare Adressen werden durch ein vorgestelltes '@' gekennzeichnet (z.B. BOUND-Objekte). -In den F„llen, wo es mehrere sinnvolle Darstellungen gibt, werden diese +In den FĂ€llen, wo es mehrere sinnvolle Darstellungen gibt, werden diese durch ein '|' getrennt. #ub#1.1.2 Datenadressen#ue# -Zus„tzlich zu den globalen Daten (statische Variablen und Denoter) kann auch +ZusĂ€tzlich zu den globalen Daten (statische Variablen und Denoter) kann auch deren Adresse ausgegeben werden. Die Daten werden in einer, ihrem Typ entsprechenden, Darstellung ausgegeben. Komplexe oder zusammengesetzte -Datentypen werden auf Repr„sentationen elementarer Datentypen (INT, REAL, +Datentypen werden auf ReprĂ€sentationen elementarer Datentypen (INT, REAL, BOOL, TEXT, DATASPACE, TASK) abgebildet. Prozeduren, Operatoren und Paketinitialisierungen von Main-Packets werden -zusammenfassend als Module bezeichnet. Einem Modul geh”rt ein eigener -Stackbereich fr lokale Daten, Parameter und Rcksprungadresse etc. In +zusammenfassend als Module bezeichnet. Einem Modul gehört ein eigener +Stackbereich fĂŒr lokale Daten, Parameter und RĂŒcksprungadresse etc. In diesem Bereich stehen entweder die Datenobjekte selbst (z.B. lokale Variablen) oder lokale Referenzadressen auf beliebige Objekte (lokale, -globale Daten, Fremddatenr„ume und sogar Module). -Da die effektiven lokalen Adressen erst w„hrend der Runtime bekannt sind, +globale Daten, FremddatenrĂ€ume und sogar Module). +Da die effektiven lokalen Adressen erst wĂ€hrend der Runtime bekannt sind, findet man im Decoder-Output nur die Adressoffsets relativ zum Stackanfang des Moduls. @@ -112,20 +112,20 @@ Buchstaben nach '<' angezeigt: 'G' kennzeichnet eine globale Adresse (Denoter oder statische Variable). Die Representation der Daten kann immer angegeben werden (also nicht nur zur Runtime). -'L' kennzeichnet einen Adressoffset fr ein lokales Datenobjekt auf dem +'L' kennzeichnet einen Adressoffset fĂŒr ein lokales Datenobjekt auf dem Stack. Da die lokale Basis, d.h. die Anfangsadresse der Daten des aktuellen Moduls, erst bei Runtime feststehen, kann hier weder die effektive Datenadresse, noch der Inhalt des Datenobjekts angegeben werden. 'LR' kennzeichnet eine lokale Referenzadresse, d.h. auf dem Stack steht -eine Adresse (32 Bit), die ein Datenobjekt adressiert. Žhnlich wie bei 'L' +eine Adresse (32 Bit), die ein Datenobjekt adressiert. Ähnlich wie bei 'L' kann auch bei 'LR' erst zur Runtime eine Representation des adressierten Datenobjekts angegeben werden. Der Wert nach 'LR' bezeichnet den Offset, der -zur lokalen Basis addiert werden muá, um die Adresse der Referenzadresse zu -erhalten. Die niederwertigsten 16 Bit (das erste der beiden W”rter) k”nnen -128KB adressieren. Im h”herwertigsten Byte des zweiten Wortes steht die +zur lokalen Basis addiert werden muß, um die Adresse der Referenzadresse zu +erhalten. Die niederwertigsten 16 Bit (das erste der beiden Wörter) können +128KB adressieren. Im höherwertigsten Byte des zweiten Wortes steht die Nummer des Datenraumes der eigenen Task, der das adressierte Datenobjekt -enth„lt (0 entspricht dem Standarddatenraum). Das niederwertigste Byte des -zweiten Wortes enth„lt die Segmentnummer (128KB-Segmente) mit dem +enthĂ€lt (0 entspricht dem Standarddatenraum). Das niederwertigste Byte des +zweiten Wortes enthĂ€lt die Segmentnummer (128KB-Segmente) mit dem Wertebereich 0 bis 7 (maximal also 1MB/Datenraum). Im Standarddatenraum (Datenraumnummer 4) enthalten die Segmente folgene Tabellen: @@ -134,90 +134,90 @@ Segment Tabelle 0 Paketdaten (high 120KB) und Moduladresstabelle 1 Stack (low 64K), Heap (high 64K) 2 Codesegment - 3 Codesegment (120KB) u.a. fr eigene Module - 4 Compilertabellen tempor„r + 3 Codesegment (120KB) u.a. fĂŒr eigene Module + 4 Compilertabellen temporĂ€r 5 Compilertabellen permanent - 6 nilsegment fr Compiler (FF's) + 6 nilsegment fĂŒr Compiler (FF's) 7 Compiler: Intermediate String -Repr„sentationen von Datenobjekten, die in Fremddatenr„umen residieren -(BOUND-Objekte) k”nnen zur Zeit noch nicht ausgegeben werden, statt dessen +ReprĂ€sentationen von Datenobjekten, die in FremddatenrĂ€umen residieren +(BOUND-Objekte) können zur Zeit noch nicht ausgegeben werden, statt dessen wird die Datenraumnummer und die Wortadresse innerhalb dieses Datenraums ausgegeben. #ub#1.1.3 Codeadressen#ue# -Module werden in der Regel (Ausnahme: Parameterprozeduren) ber ihre +Module werden in der Regel (Ausnahme: Parameterprozeduren) ĂŒber ihre Modulnummer angesprochen, aus der dann die Adresse des Moduls berechnet werden kann (mithilfe der Moduladresstabelle). Die Adressen der Parameterprozeduren sind vom Typ 'LR' (Local-Reference), kommen nur als Parameter auf dem Stack vor und beeinhalten Codesegment und Codeadresse. Sprungadressen (von Branch-Befehlen) adressieren immer nur das eigene -Segment und davon auch nur eine Adresse innerhalb eines 8 KB groáen +Segment und davon auch nur eine Adresse innerhalb eines 8 KB großen Bereichs. #ub#1.2 Ablaufverfolgung (Tracer)#ue# Um den eigenen (!) Code im Einzelschrittbetrieb abzuarbeiten, wird der -Tracer benutzt. Auáer den Inhalten der globalen Daten kann man sich die +Tracer benutzt. Außer den Inhalten der globalen Daten kann man sich die Inhalte der Stackobjekte (lokale Variablen) und der aktuellen Parameter -eines Prozeduraufrufs (auch von Parameterprozeduren) ansehen. Es k”nnen -keine Daten ver„ndert werden! -Man hat die M”glichkeit -- die Resultate der letzten ausgefhrten Instruktion oder -- die aktuellen Parameter fr den n„chsten Instruktionsaufruf +eines Prozeduraufrufs (auch von Parameterprozeduren) ansehen. Es können +keine Daten verĂ€ndert werden! +Man hat die Möglichkeit +- die Resultate der letzten ausgefĂŒhrten Instruktion oder +- die aktuellen Parameter fĂŒr den nĂ€chsten Instruktionsaufruf zu beobachten. Der Inhalt des Stacks kann sequentiell durchgesehen werden, Error- und -Disablestop-Zustand k”nnen gel”scht werden. +Disablestop-Zustand können gelöscht werden. Der Einzelschrittablauf kann protokolliert und die entsprechende -Sourceline parallel zum ausgefhrten Code beobachtet werden. -Der Einzelschrittbetrieb kann, ber Teile des Codes hinweg, ausgeschaltet -werden, z.B. fr h„ufig durchlaufene Schleifen. -Fr die Repr„sentation der Daten und deren Adressen gilt das unter 1.1 +Sourceline parallel zum ausgefĂŒhrten Code beobachtet werden. +Der Einzelschrittbetrieb kann, ĂŒber Teile des Codes hinweg, ausgeschaltet +werden, z.B. fĂŒr hĂ€ufig durchlaufene Schleifen. +FĂŒr die ReprĂ€sentation der Daten und deren Adressen gilt das unter 1.1 gesagte. -Der Tracer wird mit 'trace' aufgerufen. W„hrend der Aktivit„t des Tracers -stehen folgende Funktionen zur Verfgung (Nur der erste Buchstabe wird +Der Tracer wird mit 'trace' aufgerufen. WĂ€hrend der AktivitĂ€t des Tracers +stehen folgende Funktionen zur VerfĂŒgung (Nur der erste Buchstabe wird getippt): -Abkrzung Funktion +AbkĂŒrzung Funktion -------------------------------------------------------------------------- - Auto Die Befehle werden im Einzelschrittbetrieb ausgefhrt, ohne daá - eine Taste gedrckt werden muá. - Bpnt Der n„chste Breakpoint wird an eine vom Benutzer festgelegte - Codeadrese gesetzt. Damit k”nnen Teile des Codes abgearbeitet - werden, ohne daá der Einzelschrittmodus aktiv ist. Nach der + Auto Die Befehle werden im Einzelschrittbetrieb ausgefĂŒhrt, ohne daß + eine Taste gedrĂŒckt werden muß. + Bpnt Der nĂ€chste Breakpoint wird an eine vom Benutzer festgelegte + Codeadrese gesetzt. Damit können Teile des Codes abgearbeitet + werden, ohne daß der Einzelschrittmodus aktiv ist. Nach der Eingabe der Adresse wird der Befehl an dieser Adresse angezeigt. - Best„tigt wird die Richtigkeit mit oder 's'. - Clrr Ein eventuell vorliegender Fehlerzustand wird gel”scht. - Dstp 'disable stop' wird fr das untersuchte Modul gesetzt. - Estp 'enable stop' wird fr das untersuchte Modul gesetzt. + BestĂ€tigt wird die Richtigkeit mit oder 's'. + Clrr Ein eventuell vorliegender Fehlerzustand wird gelöscht. + Dstp 'disable stop' wird fĂŒr das untersuchte Modul gesetzt. + Estp 'enable stop' wird fĂŒr das untersuchte Modul gesetzt. File Der Name der kompilierten Quelldatei wird eingestellt. - Go Der Code wird bis zum Ende abgearbeitet, ohne daá der Tracer + Go Der Code wird bis zum Ende abgearbeitet, ohne daß der Tracer aktiviert wird. Prot Der Name der Protokollfile wird eingestellt. Die abgearbeiteten Instruktionen werden in dieser File protokolliert. Rslt Es wird umgeschaltet, ob die angezeigte Instruktion nach oder 's' abgearbeitet werden soll (Forward-Trace, 'F') oder ob das - Ergebnis der letzten ausgefhrten Instruktion angezeigt werden soll + Ergebnis der letzten ausgefĂŒhrten Instruktion angezeigt werden soll (Result-Trace, 'R'). Der aktuelle Zustand dieses Switches wird in der ersten Bildschirmzeile durch 'R' oder 'F' gekennzeichnet. Kurzzeitige Umschaltung, um das Ergebnis der letzten Operation - anzusehen, ist auch m”glich (zweimal 'r' tippen). - Step/CR Mit oder 's' wird die n„chste Instruktion ausgefhrt. + anzusehen, ist auch möglich (zweimal 'r' tippen). + Step/CR Mit oder 's' wird die nĂ€chste Instruktion ausgefĂŒhrt. Dies ist bei Forward-Trace die angezeigte Instruktion. - Term Bis zur n„chst 'h”heren' Prozedur der CALL-Sequence, die im + Term Bis zur nĂ€chst 'höheren' Prozedur der CALL-Sequence, die im 'disable stop'-Zustand arbeitet, werden die Module verlassen. In der Regel bedeutet dies ein Programmabbruch. Alle Breakpoints sind - anschlieáend zurckgesetzt. + anschließend zurĂŒckgesetzt. - Der Stackpointer auf den sichtbaren Stack (in der ersten - Bildschirmzeile) wird um zwei verringert. Er zeigt auf die n„chst + Bildschirmzeile) wird um zwei verringert. Er zeigt auf die nĂ€chst tiefere Referenzadresse. Der EUMEL-0-Stackpointer wird nicht - ver„ndert. - + Der Stackpointer auf den sichtbaren Stack wird um zwei erh”ht. - < Bei der Befehlsausgabe werden die Parameteradressen zus„tzlich + verĂ€ndert. + + Der Stackpointer auf den sichtbaren Stack wird um zwei erhöht. + < Bei der Befehlsausgabe werden die Parameteradressen zusĂ€tzlich ausgegeben (in spitzen Klammern). > Bei der Befehlsausgabe werden keine Parameteradressen ausgegeben, sondern nur die Darstellungen der Parameter (z.B. @@ -227,26 +227,26 @@ Abk #ub#2. EUMEL0-Instruktionen#ue# -#ub#2.1 Erl„uterung der Instruktionen (Thematisch sortiert)#ue# +#ub#2.1 ErlĂ€uterung der Instruktionen (Thematisch sortiert)#ue# -Nach der H„ufigkeit ihres Vorkommens im Code unterscheidet man 3 Klassen von -Instruktionen: 30 Prim„rbefehle, 6 Spezialbefehle und z.Zt. 127 -Sekund„rbefehle. -Die Prim„rbefehle enthalten im ersten Wort den Opcode (5 Bit) und 11 Bit fr +Nach der HĂ€ufigkeit ihres Vorkommens im Code unterscheidet man 3 Klassen von +Instruktionen: 30 PrimĂ€rbefehle, 6 Spezialbefehle und z.Zt. 127 +SekundĂ€rbefehle. +Die PrimĂ€rbefehle enthalten im ersten Wort den Opcode (5 Bit) und 11 Bit fĂŒr die erste Parameteradresse d.h. den Wertebereich 0..2047. Liegt die -Parameteradresse auáerhalb dieses Bereichs, dann ersetzt ein +Parameteradresse außerhalb dieses Bereichs, dann ersetzt ein Umschaltprefix (LONGAddress) die Opcodebits und im lowbyte des ersten Wortes wird der Opcode codiert. Die erste Parameteradresse befindet sich dann als 16 Bit-Wert im zweiten Wort. -Spezialbefehle enthalten im ersten Wort auáer dem Opcode (8 Bit) noch einen +Spezialbefehle enthalten im ersten Wort außer dem Opcode (8 Bit) noch einen 8 Bit-Immediatewert (Bytekonstante). -Sekund„rebefehle enthalten im ersten Wort nur den Opcode (16 Bit), der aus +SekundĂ€rebefehle enthalten im ersten Wort nur den Opcode (16 Bit), der aus einem Umschaltprefix (ESCape, wird im folgenden weggelassen) und im lowbyte -dem 8 Bit Sekndaropcode besteht. +dem 8 Bit SekĂŒndaropcode besteht. Im folgenden werden Datenadressen mit 'd', Immediatewerte mit 'v' (Value), Codeadressen mit 'a' und Modulnummern mit 'm' bezeichnet. Die Anzahl dieser -Buchstaben gibt die L„nge der ben”tigten Opcodebits (DIV 4) an. Ausnahmsweise +Buchstaben gibt die LĂ€nge der benötigten Opcodebits (DIV 4) an. Ausnahmsweise bezeichnet .nn:dd einen 5 Bit Opcode ('nn') und eine 11 Bit Adresse ('dd'). Der Adresstyp ist in den Bits 14 und 15 codiert: @@ -256,7 +256,7 @@ Der Adresstyp ist in den Bits 14 und 15 codiert: 1 1 local ref adr := ((dddd AND 7FFF) DIV 2 + lbase) ; (adr+1, adr) Der Wert eines Wortes an der ersten Parameteradresse wird mit -bezeichnet. Ein Datentyp vor der spitzen Klammer gibt seinen Typ an. Fr die +bezeichnet. Ein Datentyp vor der spitzen Klammer gibt seinen Typ an. FĂŒr die anderen Parameter gilt entsprechendes (, , ...). @@ -266,7 +266,7 @@ MOV .08:dd dddd 1 Wort (z.B. INT/BOOL) wird von der linken Adresse zur rechten Adresse transportiert. := -FMOV .34:dd dddd 4 W”rter (z.B. REAL) von linker Adresse zur +FMOV .34:dd dddd 4 Wörter (z.B. REAL) von linker Adresse zur rechten Adresse tranportieren (kopiert). := @@ -284,12 +284,12 @@ MOVii 7F 23 vvvv dddd Dem Wort an der Adresse dddd wird die 16-Bit := vvvv MOVx 7D vv dddd dddd Von der linken Adresse zur rechten Adresse - werden vv (max. 255) W”rter transportiert. - := (vv W”rter) + werden vv (max. 255) Wörter transportiert. + := (vv Wörter) MOVxx 7F 21 vvvv dddd dddd Von der linken Adresse zur rechten Adresse - werden vvvv (max. 65535) W”rter transportiert. - := (vvvv W”rter) + werden vvvv (max. 65535) Wörter transportiert. + := (vvvv Wörter) #ub#2.1.2 INT-Operationen#ue# @@ -306,7 +306,7 @@ CLEAR .24:dd Dem Wort an der Adresse dd wird 0 zugewiesen. := 0 INC1 .0C:dd Der Inhalt des Wortes an der Adresse dddd wird - um eins erh”ht. + um eins erhöht. := + 1 DEC1 .10:dd Der Inhalt des Wortes an der Adresse dddd wird @@ -334,50 +334,50 @@ SUB .20:dd dddd dddd Der Inhalt des Wortes an der zweiten Adresse dritten Adresse abgelegt. := - -MUL 7F 29 dddd dddd dddd Der Wert der W”rter an den beiden ersten +MUL 7F 29 dddd dddd dddd Der Wert der Wörter an den beiden ersten Adressen wird vorzeichenbehaftet multipliziert und im Wort an der dritten Adresse abgelegt. - Ein šberlauf wird im Falle der vorzeichenlosen + Ein Überlauf wird im Falle der vorzeichenlosen Arithmetik ignoriert ( MOD 65536). := * -IMULT 7F 28 dddd dddd dddd Der Wert der W”rter an den beiden ersten +IMULT 7F 28 dddd dddd dddd Der Wert der Wörter an den beiden ersten Adressen wird vorzeichenlos multipliziert und im Wort an der dritten Adresse abgelegt. - Falls das Resultat ein Wert gr”áer 65535 w„re, + Falls das Resultat ein Wert grĂ¶ĂŸer 65535 wĂ€re, wird := FFFFH, sonst := * DIV 7F 2A dddd dddd dddd Der Wert des Wortes an der ersten Adresse wird durch den Wert des Wortes an der zweiten Adresse dividiert und im Wort an der dritten - Adresse abgelegt. Eine Division durch 0 fhrt + Adresse abgelegt. Eine Division durch 0 fĂŒhrt zum Fehler. := DIV MOD 7F 2B dddd dddd dddd Der Rest der Division (wie bei DIV) wird im Wort an der dritten Adresse abgelegt. Falls - = 0 ist, wird ein Fehler ausgel”st. + = 0 ist, wird ein Fehler ausgelöst. := MOD NEG 7F 27 dddd Der Wert des Wortes an der Adresse dddd wird arithmetisch negiert (Vorzeichenwechsel). := - -AND 7F 7C dddd dddd dddd Der Wert der beiden W”rter an den beiden ersten - Adressen wird bitweise UND-verknpft und das +AND 7F 7C dddd dddd dddd Der Wert der beiden Wörter an den beiden ersten + Adressen wird bitweise UND-verknĂŒpft und das Resultat im Wort an der dritten Adresse abgelegt. := AND -OR 7F 7D dddd dddd dddd Der Wert der beiden W”rter an den beiden ersten - Adressen wird bitweise ODER-verknpft und das +OR 7F 7D dddd dddd dddd Der Wert der beiden Wörter an den beiden ersten + Adressen wird bitweise ODER-verknĂŒpft und das Resultat im Wort an der dritten Adresse abgelegt. := OR -XOR 7F 79 dddd dddd dddd Der Wert der beiden W”rter an den beiden ersten - Adressen wird bitweise Exklusiv-ODER-verknpft +XOR 7F 79 dddd dddd dddd Der Wert der beiden Wörter an den beiden ersten + Adressen wird bitweise Exklusiv-ODER-verknĂŒpft und das Resultat im Wort an der dritten Adresse abgelegt. := XOR @@ -420,13 +420,13 @@ FNEG 7F 26 dddd Das Vorzeichen des REAL-Wertes an der Adresse FSLD 7F 60 dddd dddd dddd Die Mantisse des REAL-Wertes an der zweiten Adresse wird um ein Digit (4 Bit BCD) nach links verschoben, Vorzeichen und Exponent - bleiben unver„ndert. Das vorher h”herwertigste + bleiben unverĂ€ndert. Das vorher höherwertigste Digit steht danach im Wort an der dritten Adresse. Das neue niederwertigste Digit wurde aus dem Wort der ersten Adresse entnommen. INT := digit1 ; REAL := REAL SLD 1 ; - digit13 := INT<ÿ1> + digit13 := INT< 1> GEXP 7F 61 dddd dddd Der Exponent des REAL-Wertes an der ersten Adresse wird in das Wort an der zweiten Adresse @@ -451,7 +451,7 @@ ITSUB 7F 2D dddd dddd dddd Aus dem TEXT an der ersten Adresse wird das der dritten Adresse abgelegt. INT := TEXT[INT,2] (Notation: t[n,s] bezeichnet das n. Element mit einer - Gr”áe von s Bytes, der Bytekette t an der + GrĂ¶ĂŸe von s Bytes, der Bytekette t an der Byteposition n*s+1) ITRPL 7F 2E dddd dddd dddd In dem TEXT an der ersten Adresse wird das @@ -498,10 +498,10 @@ REPLAC 7F 34 dddd dddd dddd Der TEXT an der ersten Adresse wird ab der replace (TEXT, INT, TEXT) CAT 7F 35 dddd dddd Der TEXT an der zweiten Adresse wird an das - Ende des TEXTes an der ersten Adresse angefgt. + Ende des TEXTes an der ersten Adresse angefĂŒgt. TEXT := TEXT + TEXT -TLEN 7F 36 dddd dddd Die L„nge des TEXTes an der ersten Adresse wird +TLEN 7F 36 dddd dddd Die LĂ€nge des TEXTes an der ersten Adresse wird im Wort an der zweiten Adresse abgelegt. INT := length (TEXT) @@ -529,7 +529,7 @@ POSFT 7F 39 dddd dddd dddd dddd dddd den Inhalt des Wortes an der dritten Adresse bestimmt ist, bis zur Position die durch den Inhalt des Wortes an der vierten Adresse - bestimmt ist, wird im Wort an der fnften + bestimmt ist, wird im Wort an der fĂŒnften Adresse abgelegt. INT := pos (TEXT, TEXT, INT, INT) @@ -561,14 +561,14 @@ POSIF 7F 3B dddd dddd dddd dddd dddd TEXTes an der ersten Adresse, wird ab der Position, die durch das Wort an der vierten Adresse beschrieben wird, im Wort an der - fnften Adresse abgelegt. + fĂŒnften Adresse abgelegt. INT := pos (TEXT, TEXT, TEXT, INT). -GARB 7F 5F Es wird eine Garbagecollection fr den - taskeigenen TEXT-Heap durchgefhrt. +GARB 7F 5F Es wird eine Garbagecollection fĂŒr den + taskeigenen TEXT-Heap durchgefĂŒhrt. -HPSIZE 7F 5E dddd Die aktuelle Gr”áe des TEXT-Heaps wird in dem +HPSIZE 7F 5E dddd Die aktuelle GrĂ¶ĂŸe des TEXT-Heaps wird in dem Wort an der Adresse dddd abgelegt. := heapsize @@ -588,7 +588,7 @@ RTRPL 7F 65 dddd dddd dddd In dem TEXT an der ersten Adresse wird der #ub#2.1.5 DATASPACE-Operationen#ue# DSACC .58:dd dddd Die dsid an der ersten Adresse wird auf - Gltigkeit geprft und an der zweiten Adresse + GĂŒltigkeit geprĂŒft und an der zweiten Adresse eine Referenzaddresse abgelegt, die auf das 4. Wort des Datenraumes (den Anfang des Datenbereichs) zeigt. @@ -599,10 +599,10 @@ DSACC .58:dd dddd Die dsid an der ersten Adresse wird auf ALIAS 7F 22 vvvv dddd dddd Dem BOUND-Objekt an der dritten Adresse wird der Datenraum an der zweiten Adresse zugewiesen - (INT-Move). Zuvor wird geprft, ob dies der + (INT-Move). Zuvor wird geprĂŒft, ob dies der erste Zugriff auf den Datenraum ist. Falls ja, wird der Datenraumtyp auf 0 gesetzt. Falls ein - Heap aufgebaut werden muá und noch keiner + Heap aufgebaut werden muß und noch keiner angelegt wurde, wird die Anfangsadresse des Heaps auf den Wert vvvv+4 innerhalb des Datenraumes gesetzt. @@ -626,7 +626,7 @@ DSCOPY 7F 46 dddd dddd Dem Datenraum an der ersten Adresse wird eine DSFORG 7F 47 dddd Der Datenraum, dessen dsid an der Adresse dddd steht, wird aus der Datenraumverwaltung - gel”scht. + gelöscht. forget (DATASPACE) DSWTYP 7F 48 dddd dddd Der Typ des Datenraums, dessen dsid an der @@ -650,17 +650,17 @@ DSHEAP 7F 4A dddd dddd Die Endaddresse Textheaps des Datenraums, dessen Einehiten, wird in dem Wort an der zweiten Adresse abgelegt. Falls dieser Wert = 1023 oder < 96 ist, ist kein Heap vorhanden, anderenfalls - ist seine Gr”áe (in KB): -96. + ist seine GrĂ¶ĂŸe (in KB): -96. INT := DATASPACE.heapende DIV 1024 -NXTDSP 7F 4B dddd dddd dddd Fr den Datenraum an der ersten Adresse wird +NXTDSP 7F 4B dddd dddd dddd FĂŒr den Datenraum an der ersten Adresse wird die Nummer der Seite, die auf die Nummer der Seite folgt, die in dem Wort an der zweiten Adresse steht an der zweiten Adresse abgelegt. Falls keine Seite mehr folt, wird -1 geliefert. INT := nextdspage (DATASPACE, INT) -DSPAGS 7F 4C dddd dddd dddd Fr den Datenraum mit der Nummer, die im Wort +DSPAGS 7F 4C dddd dddd dddd FĂŒr den Datenraum mit der Nummer, die im Wort an der ersten Adresse steht, und der Task deren Nummer im Wort an der zweiten Adresse steht, wird die Anzahl der belegten Seiten im Wort an @@ -677,7 +677,7 @@ SEND 7F 71 dddd dddd dddd dddd send (TASK, INT, DATASPACE, INT) WAIT 7F 72 dddd dddd dddd Die eigene Task geht in einen offenen - Wartezustand, bei dem sie empfangsbereit ist fr + Wartezustand, bei dem sie empfangsbereit ist fĂŒr einen Datenraum einer anderen Task. Die id der sendenden Task wird an der ersten Adresse abgelegt, der Messagecode an der zweiten @@ -690,9 +690,9 @@ SWCALL 7F 73 dddd dddd dddd dddd Task, deren id an der ersten Adresse steht, mit dem Messagecode der an der zweiten Adresse steht, gesendet bis die Task empfangsbereit ist. - Dann wird auf einen zurckgesandten Datenraum + Dann wird auf einen zurĂŒckgesandten Datenraum dieser Task gewartet, der an der dritten - Adresse abgelegt wird. Der zurckgesendete + Adresse abgelegt wird. Der zurĂŒckgesendete Messagecode wird an der vierten Adresse abgelegt. Vereinfachte Semantik: REP @@ -703,7 +703,7 @@ SWCALL 7F 73 dddd dddd dddd dddd PPCALL 7F 7A dddd dddd dddd dddd Wirkt wie SWCALL, wartet aber nicht bis die Zieltask empfangsbereit ist, sondern liefert -2 - an der vierten Adresse zurck, wenn die Task + an der vierten Adresse zurĂŒck, wenn die Task nicht empfangsbereit ist. Vereinfachte Semantik: send (TASK, INT, DATASPACE,INT); @@ -715,13 +715,13 @@ SENDFT 7F 7F dddd dddd dddd dddd dddd Der Datenraum an der vierten Adresse wird der Task, deren id an der zweiten Adresse steht, mit dem Messagecode der an der dritten Adresse - steht, gesendet als ob er von der Task k„me, + steht, gesendet als ob er von der Task kĂ€me, deren id an der ersten Adresse steht. Der Antwortcode wird im Wort an der vierten Adresse abgelegt. Dieser Befehl setzt eine Priviligierung >= 1 voraus und ist nur wirksam, wenn die from-Task einer anderen Station - angeh”rt. Vereinfachte Semantik: + angehört. Vereinfachte Semantik: IF station (TASK) = station (myself) THEN send (TASK, INT, DATASPACE, INT) @@ -746,11 +746,11 @@ TPBEGIN 7F 5F dddd dddd dddd aaaaaa Als Sohn der Task, deren Nummer an der ersten Adresse steht, wird eine Task eingerichtet, deren Nummer an der zweiten Adresse steht. Die - neue Task erh„lt die Privilegierung, deren + neue Task erhĂ€lt die Privilegierung, deren Nummer in dem Wort an der dritten Adresse steht und wird mit der Prozedur gestartet, deren Code bei der durch den vierten Parameter - bergebenen Refereznadresse beginnt. Dieser + ĂŒbergebenen Refereznadresse beginnt. Dieser Befehl setzt eine Privilegierung > 1 voraus (Supervisor). @@ -763,13 +763,13 @@ TRPCB 7F 68 dddd dddd dddd Der Wert des Leitblockfeldes der Task TWPCB 7F 69 dddd dddd dddd Der Wert an der dritten Adresse wird in das Leitblockfeld mit der Nummer an der zweiten - Adresse der Task bertragen, deren Nummer an der + Adresse der Task ĂŒbertragen, deren Nummer an der ersten Adresse steht. Privilegierung: 0: Nur linenumber-Feld (0), der eigenen Task 1: linenumber-Feld der eigenen Task und prio-Feld (5) jeder Task 2: Alle Felder - Fr den Fall, daá die Privilegierung ok ist + FĂŒr den Fall, daß die Privilegierung ok ist gilt: pcb (INT, INT) := INT @@ -802,27 +802,27 @@ THALT 7F 6E dddd In der Task, deren Nummer an der Adresse dddd TBEGIN 7F 6F dddd aaaaaa Eine neue Task wird eingerichtet, deren Nummer an der ersten Adresse steht. Die Adresse der Startprozedur wird als Referenzadresse im - zweiten Parameter bergeben. Der Datenraum 4 + zweiten Parameter ĂŒbergeben. Der Datenraum 4 wird von der aufrufenden Task geerbt. Als Privilegierung wird 0 eingetragen. Dieser Befehl setzt eine Privilegierung > 1 voraus (Supervisor). TEND 7F 70 dddd Die Task, deren Nummer an der Adresse dddd - steht, wird gel”scht (alle Datenr„ume) und aus + steht, wird gelöscht (alle DatenrĂ€ume) und aus der Prozessverwaltung entfernt. Dieser Befehl setzt eine Privilegierung > 1 voraus (Supervisor). -PNACT 7F 76 dddd Die Nummer der n„chsten aktivierten Task +PNACT 7F 76 dddd Die Nummer der nĂ€chsten aktivierten Task wird aus der Aktivierungstabelle gelesen. Die Suche beginnt mit dem Wert+1 an der Adresse. Die - Nummer n„chsten aktivierten Task wird an dieser + Nummer nĂ€chsten aktivierten Task wird an dieser Adresse abgelegt. INT := next active (INT) DEFCOL 7F 80 dddd Die Task an der Adresse wird als Collectortask - (fr Datenaustausch zwischen Stationen) + (fĂŒr Datenaustausch zwischen Stationen) definiert. Dieser Befehl setzt eine Privilegierung >= 1 voraus. TASK collector := TASK @@ -834,11 +834,11 @@ Alle Tests und Vergleiche liefern ein BOOL-Resultat, welches den Opcode des nachfolgenden Branch-Befehls bestimmt (Aus LN wird BT aus BR wird BF). TEST .28:dd Liefert TRUE, wenn das Wort an der Adresse 0 - ist (Auch fr BOOL-Variablen gebraucht: TRUE=0, + ist (Auch fĂŒr BOOL-Variablen gebraucht: TRUE=0, FALSE=1). FLAG := = 0 -EQU .2C:dd dddd Liefert TRUE, wenn die W”rter der beiden +EQU .2C:dd dddd Liefert TRUE, wenn die Wörter der beiden Adressen gleich sind. FLAG := = @@ -895,14 +895,14 @@ ISLCAS 7F 14 dddd Liefert TRUE, wenn der ASCII-Code im Wort an FLAG := INT >= 97 AND INT <= 122 ISUCAS 7F 15 dddd Liefert TRUE, wenn der ASCII-Code im Wort an - der Adresse dddd einem Groábuchstaben + der Adresse dddd einem Großbuchstaben entspricht. FLAG := INT >= 65 AND INT <= 90 ISSHA 7F 18 dddd Liefert TRUE, wenn der Wert des Wortes an der Adresse dddd im Bereich 0..2047 liegt, d.h. eine Kurzadresse ist, die noch zusammen mit dem - Opcode im ersten Wort eines Prim„rbefehls + Opcode im ersten Wort eines PrimĂ€rbefehls untergebracht werden kann. FLAG := INT < 2048 @@ -976,7 +976,7 @@ GCPOS 7F 43 dddd dddd Die Cursorposition wird erfragt. Die x-Position CATINP 7F 44 dddd dddd Aus dem Eingabepuffer werden alle Zeichen gelesen und an den TEXT an der ersten Adresse - geh„ngt, bis entweder der Eingabepuffer leer + gehĂ€ngt, bis entweder der Eingabepuffer leer ist oder ein Zeichen mit einem Code < 32 gefunden wurde. Im ersten Fall wird niltext an der zweiten Adresse abgelegt, im zweiten Fall @@ -996,8 +996,8 @@ CATINP 7F 44 dddd dddd Aus dem Eingabepuffer werden alle Zeichen CONTRL 7F 54 dddd dddd dddd dddd Der IO-Controlfunktion mit der Nummer, die an der ersten Adresse steht, werden die beiden - Parameter bergeben, die an der zweiten und - dritten Adresse stehen. Die Rckmeldung wird + Parameter ĂŒbergeben, die an der zweiten und + dritten Adresse stehen. Die RĂŒckmeldung wird an der vierten Adresse abgelegt. IF channel > 0 THEN iocontrol (INT, INT, INT, @@ -1010,8 +1010,8 @@ BLKOUT 7F 55 dddd dddd dddd dddd dddd an der zweiten Adresse steht, wird auf dem aktuellen Kanal ausgegeben. Als Parameter werden die Werte an der dritten und vierten - Adresse bergeben. Der Returncode wird an der - fnften Adresse abgelegt. + Adresse ĂŒbergeben. Der Returncode wird an der + fĂŒnften Adresse abgelegt. IF channel > 0 THEN blockout (DATASPACE[INT, 512], INT, INT, INT) @@ -1023,8 +1023,8 @@ BLKIN 7F 56 dddd dddd dddd dddd dddd an der zweiten Adresse steht, wird an dem aktuellen Kanal eingelesen. Als Parameter werden die Werte an der dritten und vierten - Adresse bergeben. Der Returncode wird an der - fnften Adresse abgelegt. + Adresse ĂŒbergeben. Der Returncode wird an der + fĂŒnften Adresse abgelegt. IF channel > 0 THEN blockout (DATASPACE[INT, 512], INT, INT, INT) @@ -1034,7 +1034,7 @@ BLKIN 7F 56 dddd dddd dddd dddd dddd #ub#2.1.9 Ablaufsteuerung (Branch und Gosub)#ue# B .70:aa bzw. .74:aa Unbedingter Sprung an die Adresse. - ICOUNT := aaaa (aaaa gilt nur fr den + ICOUNT := aaaa (aaaa gilt nur fĂŒr den Debugger/Tracer, da die Adressrechung intern komplizierter ist) @@ -1051,10 +1051,10 @@ BT .00:aa bzw. .04:aa Wenn der letzte Befehl TRUE lieferte, Sprung an FI BRCOMP 7F 20 dddd vvvv Wenn das Wort an der Adresse dddd kleiner als 0 - oder gr”áer als die Konstante vvvv ist, wird mit + oder grĂ¶ĂŸer als die Konstante vvvv ist, wird mit dem auf den BRCOMP-Befehl folgenden Befehl (i.d.R. ein B-Befehl) fortgefahren. Sonst wird - die Ausfhrung an der Adresse des + die AusfĂŒhrung an der Adresse des BRCOMP-Befehls + 2 + (dddd) (auch ein B-Befehl) fortgesetzt. IF >= 0 AND <= vvvv @@ -1095,7 +1095,7 @@ PPROC 7F 1E mmmm Die Adresse der Prozedur mit der Modulnummer := mod addr (mmmm) ; SP INCR 2 -HEAD vvvv (kein Opcode) Der Speicherplatz fr lokale Variablen und +HEAD vvvv (kein Opcode) Der Speicherplatz fĂŒr lokale Variablen und Parameter in diesem Modul wird vermerkt, indem der Stacktop um vvvv erhoht wird. TOP INCR vvvv ; @@ -1128,15 +1128,15 @@ EXEC 7F 1D dddd Das Modul dessen Nummer in dem Wort an der CMOD := high (ICOUNT) + 16 . RTN 7F 00 Das Modul wird verlassen, die - Programmausfhrung setzt an der, auf dem Stack + ProgrammausfĂŒhrung setzt an der, auf dem Stack gesicherten, Adresse fort. TOP := LBASE ; SP := TOP + 4 ; (LBASE, PBASE, ICOUNT, ENSTOP, ARITH) := RTNT 7F 01 Das Modul wird verlassen und der BOOL-Wert TRUE - geliefert (fr den dem CALL/PCALL folgenden - BT/BF-Befehl). Die Programmausfhrung setzt an + geliefert (fĂŒr den dem CALL/PCALL folgenden + BT/BF-Befehl). Die ProgrammausfĂŒhrung setzt an der, auf dem Stack gesicherten, Adresse fort. TOP := LBASE ; SP := TOP + 4 ; @@ -1144,8 +1144,8 @@ RTNT 7F 01 Das Modul wird verlassen und der BOOL-Wert TRUE FLAG := TRUE RTNF 7F 02 Das Modul wird verlassen und der BOOL-Wert - FALSE geliefert (fr den dem CALL/PCALL - folgenden BT/BF-Befehl). Die Programmausfhrung setzt an + FALSE geliefert (fĂŒr den dem CALL/PCALL + folgenden BT/BF-Befehl). Die ProgrammausfĂŒhrung setzt an der, auf dem Stack gesicherten, Adresse fort. TOP := LBASE ; SP := TOP + 4 ; @@ -1156,20 +1156,20 @@ RTNF 7F 02 Das Modul wird verlassen und der BOOL-Wert #ub#2.1.10 Datenadressrechnung#ue# REF .5C:dd dddd An der zweiten Adresse wird die Referenzadresse - der ersten Adresse abgelegt (2 W”rt-MOV). + der ersten Adresse abgelegt (2 Wört-MOV). REF := d1 SUBS .60:vv vvvv dddd dddd dddd Wenn der Inhalt des Wortes an der dritten - Adresse (ROW-Index) gr”áer oder gleich der + Adresse (ROW-Index) grĂ¶ĂŸer oder gleich der Konstanten vvvv (limit-1) ist, wird "Subscript - šberlauf" gemeldet, falls der ROW-Index kleiner - als eins ist wird "Subscript šnterlauf" + Überlauf" gemeldet, falls der ROW-Index kleiner + als eins ist wird "Subscript Ünterlauf" gemeldet. Andernfalls wird der um eins verringerte ROW-Index mit der Konstanten vv (Size eines ROW-Elements) multipliziert, zur Basisaddresse (vierter Parameter) addiert - und als Referenzadresse an der fnften Adresse + und als Referenzadresse an der fĂŒnften Adresse abgelegt. IF INT <= vvvv AND INT > 0 THEN REF := d2 + vv * (INT-1) @@ -1185,7 +1185,7 @@ SEL .64:dd vvvv dddd Die Konstante vvvv (Selektor-Offset einer CTT 7F 0C dddd dddd Die Adresse des Strings(!) an der ersten Adresse wird an der zweiten Adresse als Referenzadresse (Segment 0, DS 4) abgelegt. - CTT steht fr Compiler-Table-Text. + CTT steht fĂŒr Compiler-Table-Text. REF := REF (0004, INT) @@ -1222,11 +1222,11 @@ GW 7F 70 dddd dddd dddd Das Wort im Datenraum 4, das durch das Segment BCRD 7F 08 dddd dddd Bereitet das Lesen einzelner Zeichen aus dem Segment 4 des Datenraumes 4 vor (Nametable). - Das Wort an der ersten Adresse enth„lt die + Das Wort an der ersten Adresse enthĂ€lt die Startadresse des Strings und zeigt auf das - L„ngenbyte. Nach dem Ausfhren des Befehls - enth„lt das Wort an der zweiten Adresse das - L„ngenbyte und der Pointer an der ersten + LĂ€ngenbyte. Nach dem AusfĂŒhren des Befehls + enthĂ€lt das Wort an der zweiten Adresse das + LĂ€ngenbyte und der Pointer an der ersten Adresse zeigt auf das erste Zeichen des Textes. Das Bit 15 des Pointers ist gesetzt, wenn das highbyte adressiert wird. @@ -1235,8 +1235,8 @@ BCRD 7F 08 dddd dddd Bereitet das Lesen einzelner Zeichen aus dem CRD 7F 09 dddd dddd Liest ein Zeichen aus dem String, dessen Lesen mit BCRD vorbereitet wurde. Die erste Adresse - enth„lt einen Stringpointer, der nach jedem - Lesen erh”ht wird, die zweite Adresse enth„lt + enthĂ€lt einen Stringpointer, der nach jedem + Lesen erhöht wird, die zweite Adresse enthĂ€lt nach dem Aufruf des Befehls den Code des gelesenen Zeichens. INT := code (STRING) ; @@ -1244,14 +1244,14 @@ CRD 7F 09 dddd dddd Liest ein Zeichen aus dem String, dessen Lesen CWR 7F 0B dddd dddd dddd Der Hashcode an der ersten Adresse wird mit dem zu schreibenden Zeichencode (dritte Adresse) - verknpft und in den Bereich 0..1023 gemapt. + verknĂŒpft und in den Bereich 0..1023 gemapt. Das Zeichen wird an die Position des Pointers geschrieben (Bit 15 des Pointers unterscheidet - lowbyte und highbyte). Anschlieáend wird der - Pointer auf die Adresse des n„chsten Zeichens + lowbyte und highbyte). Anschließend wird der + Pointer auf die Adresse des nĂ€chsten Zeichens gesetzt. Der Pointer steht an der zweiten Adresse. Vor dem Schreiben des ersten Zeichens - muá der Hashcode auf 0 gesetzt werden. + muß der Hashcode auf 0 gesetzt werden. INT INCR INT ; IF INT > 1023 THEN INT DECR 1023 FI ; INT := (INT + INT) MOD 1024 ; @@ -1260,15 +1260,15 @@ CWR 7F 0B dddd dddd dddd Der Hashcode an der ersten Adresse wird mit dem ECWR 7F 0A dddd dddd dddd Das Schreiben eines Strings wird beendet. Dazu wird an der ersten Adresse der Stringpointer - bergegeben, an der zweiten Adresse wird die - endgltige Stringl„nge geliefert. An der - dritten Adresse wird die Adresse des n„chsten + ĂŒbergegeben, an der zweiten Adresse wird die + endgĂŒltige StringlĂ€nge geliefert. An der + dritten Adresse wird die Adresse des nĂ€chsten freien Platzes nach diesem Stringende geliefert. GETC 7F 0D dddd dddd dddd Dieser Befehl liefert ein BOOL-Result und zwar TRUE, wenn das Wort an der zweiten Adresse - gr”áer als 0 und kleiner als die L„nge des + grĂ¶ĂŸer als 0 und kleiner als die LĂ€nge des TEXTes an der ersten Adresse ist. In diesem Fall wird im Wort an der dritten Adresse der Code des n. Zeichens des TEXTes geliefert. Die @@ -1317,7 +1317,7 @@ GCADDR 7F 17 dddd dddd dddd Diese Instruktion liefert ein BOOL-Result. es mit zwei Opcodes (00/04 bzw. 70/74). byte := high(INT)-high(INT) ; IF byte < 0 - THEN byte INCR 16 ; (* Bit fr LN1 bzw. B1 + THEN byte INCR 16 ; (* Bit fĂŒr LN1 bzw. B1 Opcode *) rotate (byte, right) ; FI ; @@ -1326,19 +1326,19 @@ GCADDR 7F 17 dddd dddd dddd Diese Instruktion liefert ein BOOL-Result. GETTAB 7F 1A Kopiert den Inhalt der unteren 64KB des Segments 5 im DS 4 in das Segment 4. - (permanentes Segment --> tempor„res Segment) + (permanentes Segment --> temporĂ€res Segment) DS4: 50000..57FFF --> 40000..47FFF (Wortaddr) PUTTAB 7F 1B Kopiert den Inhalt der unteren 64KB des Segments - 4 im DS 4 in das Segment 5. (Tempor„re Daten + 4 im DS 4 in das Segment 5. (TemporĂ€re Daten werden permanent) DS4: 40000..47FFF --> 50000..57FFF (Wortaddr) ERTAB 7F 1C Kopiert den Inhalt des Segments 6 im DS 4 (besteht nur aus FF's) in die Segmente 4 und 7, - d.h. das tempor„re Segment (u.a. Symboltabelle) + d.h. das temporĂ€re Segment (u.a. Symboltabelle) und das Segment mit Compiler-Intermediatestring - werden gel”scht. + werden gelöscht. DS4: 60000..6FDFF --> 40000..4FDFF ; DS4: 60000..6FDFF --> 70000..7FDFF @@ -1355,7 +1355,7 @@ CDBTXT 7F 74 dddd dddd Der String(!) an der Adresse im Segment 5 STOP 7F 04 Alle (aufrufenden) Module werden verlassen, bis das erste im 'disablestop'-Zustand angetroffen - wird (Žhnlich errorstop ("")) ; + wird (Ähnlich errorstop ("")) ; WHILE ENSTOP REP return PER . return: @@ -1382,7 +1382,7 @@ SETERR 7F 4D dddd Es wird der Fehlerzustand eingeschaltet, das FI CLRERR 7F 4F Falls der Fehlerzustand vorliegt, wird der - Fehler gel”scht. + Fehler gelöscht. ERROR := FALSE LN .00:vv und .04:vv Die Konstante vv wird in das pcb-Feld @@ -1420,14 +1420,14 @@ CLOCK 7F 66 dddd dddd Die Systemuhr mit der Nummer, die durch den #ub#2.1.14 Systemglobale Instruktionen#ue# KE 7F 06 Der EUMEL0-Debugger 'Info' wird aufgerufen, - falls dies ein infof„higes System ist. + falls dies ein infofĂ€higes System ist. SYSG 7F 19 Sysgen (Nur beim Sysgen-Urlader). INFOPW 7F 51 dddd dddd dddd Das bis zu 10 Zeichen lange Infopassword an der zweiten Adresse (TEXT) wird eingestellt, falls das alte Infopassword mit dem TEXT an der - ersten Adresse bereinstimmt. In diesem Fall + ersten Adresse ĂŒbereinstimmt. In diesem Fall wird im Wort an der dritten Adresse eine 0 abgelegt, andernfalls eine 1. Dies ist kein privilegierter Befehl, er funktioniert @@ -1439,9 +1439,9 @@ INFOPW 7F 51 dddd dddd dddd Das bis zu 10 Zeichen lange Infopassword an der ELSE INT := 1 FI -STORAGE 7F 5A dddd dddd Die Gr”áe des vorhandene Hintergrundspeichers +STORAGE 7F 5A dddd dddd Die GrĂ¶ĂŸe des vorhandene Hintergrundspeichers in KB wird im Wort an der ersten Adresse - abgelegt, die Gr”áe des benutzten + abgelegt, die GrĂ¶ĂŸe des benutzten Hintergrundspeichers an der zweiten Adresse. INT := size ; INT := used @@ -1458,23 +1458,23 @@ SETNOW 7F 67 dddd Die Realtime-Clock (clock(1)) des Systems wird voraus. clock (1) := REAL -SESSION 7F 7E dddd Der aktuelle Wert des Systemlaufz„hlers wird +SESSION 7F 7E dddd Der aktuelle Wert des SystemlaufzĂ€hlers wird an der Adresse dddd abgelegt. INT := systemlaufzaehler ID 7F 81 dddd dddd Der Wert des id-Feldes mit der Nummer, die an der ersten Adresse steht, wird in das Wort an - der zweiten Adresse geschrieben. Fr dei + der zweiten Adresse geschrieben. FĂŒr dei Nummern der id-Felder gilt: Feld Inhalt - 0 Kleinste HG-Version fr EUMEL0 + 0 Kleinste HG-Version fĂŒr EUMEL0 1 CPU-Type (1=Z80,3=8086,4=68000,5=80286) 2 Urlader-Version 3 Reserviert 4 Lizenznummer des Shards 5 Installationsnummer - 6 Frei fr Shard - 7 Frei fr Shard + 6 Frei fĂŒr Shard + 7 Frei fĂŒr Shard IF INT < 4 THEN INT := eumel0 id (INT) ELSE INT := shard id (INT) @@ -1654,8 +1654,8 @@ XOR 7F 79 dddd dddd dddd #ub#3.1 PACKET address#ue# -Mit diesem Paket werden die Operationen fr 16 Bit Adressrechnung zur -Verfgung gestellt. +Mit diesem Paket werden die Operationen fĂŒr 16 Bit Adressrechnung zur +VerfĂŒgung gestellt. TEXT PROC hex8 (INT CONST dez) : Der INT-Parameter (0..255) wird in eine 2-Zeichen Hexdarstellung @@ -1693,7 +1693,7 @@ TEXT PROC cdbtext (INT CONST address) : PROC splitword (INT VAR word, lowbyte) : - Das Wort 'word' wird in den h”herwertigen und niederwertigen Teil zerlegt. + Das Wort 'word' wird in den höherwertigen und niederwertigen Teil zerlegt. Das highbyte steht nach dieser Operation in 'word', das lowbyte in 'lowbyte'. @@ -1703,44 +1703,44 @@ PROC makeword (INT VAR word, INT CONST lowbyte) : BOOL PROC ulseq (INT CONST left, right) : - '<=' fr positive INT-Zahlen (0..65535). + '<=' fĂŒr positive INT-Zahlen (0..65535). OP INC (INT VAR word) : - 'word INCR 1' fr positive INT-Zahlen (0..65535), ohne daá ein šberlauf + 'word INCR 1' fĂŒr positive INT-Zahlen (0..65535), ohne daß ein Überlauf auftritt. OP DEC (INT VAR word) : - 'word DECR 1' fr poistive INT-Zahlen (0..65535), ohne daá ein Unterlauf + 'word DECR 1' fĂŒr poistive INT-Zahlen (0..65535), ohne daß ein Unterlauf auftritt. INT OP ADD (INT CONST left, right) : - 'left + right' fr positive INT-Zahlen (0..65535), ohne daá ein šberlauf + 'left + right' fĂŒr positive INT-Zahlen (0..65535), ohne daß ein Überlauf auftritt. INT OP SUB (INT CONST left, right) : - 'left - right' fr positive INT-Zahlen (0..65535), ohne daá ein šberlauf + 'left - right' fĂŒr positive INT-Zahlen (0..65535), ohne daß ein Überlauf auftritt. INT OP MUL (INT CONST left, right) : - 'left * right' fr positive INT-Zahlen (0..65535), ohne daá ein šberlauf + 'left * right' fĂŒr positive INT-Zahlen (0..65535), ohne daß ein Überlauf auftritt. #ub#3.2 PACKET table routines#ue# PROC init module table (TEXT CONST name) : - Ein benannter Datenraum ('name') wird eingerichtet. Dieser enth„lt die - aufbereitete Permanenttabelle fr schnelle Zugriffe. Die Datenstruktur - beschreibt drei Tabellen (PACKETTABLE, MODULETABLE, TYPETABLE), ber die - zu einer Modulnummer deren Name und deren Parameter, sowie der zugeh”rige + Ein benannter Datenraum ('name') wird eingerichtet. Dieser enthĂ€lt die + aufbereitete Permanenttabelle fĂŒr schnelle Zugriffe. Die Datenstruktur + beschreibt drei Tabellen (PACKETTABLE, MODULETABLE, TYPETABLE), ĂŒber die + zu einer Modulnummer deren Name und deren Parameter, sowie der zugehörige Paketname gefunden werden kann, wenn sie in der Permanenttabelle steht. - Die TYPETABLE enth„lt zu jedem TYPE, der in der Permanenttabelle steht, - seine Gr”áe in Words. + Die TYPETABLE enthĂ€lt zu jedem TYPE, der in der Permanenttabelle steht, + seine GrĂ¶ĂŸe in Words. PROC add modules : @@ -1762,11 +1762,11 @@ TEXT PROC packetname (INT CONST module number) : Der Name des Pakets, das das Modul mit der Nummer 'module number' definiert, wird als TEXT geliefert. Falls das Modul nicht in der Permanenttabelle steht, wird der Name des letzten vorher insertierten - Pakets geliefert (In manchen F„llen also nicht der wahre Paketname). + Pakets geliefert (In manchen FĂ€llen also nicht der wahre Paketname). INT PROC storage (TEXT CONST typename) : - Aus der Modultabelle wird Gr”áe des TYPEs mit dem Namen 'typname' gelesen. + Aus der Modultabelle wird GrĂ¶ĂŸe des TYPEs mit dem Namen 'typname' gelesen. Wenn der Typ nicht in der Permanenttabelle steht, wird 0 geliefert. @@ -1774,7 +1774,7 @@ PROC getmodulenumber (INT VAR module number) : Erfragt eine Modulnummer am Bildschirm. Der Benutzer kann entweder eine Zahl eingeben oder den Namen einer PROC/OP. Wenn mehrere Module mit diesem Namen existieren, wird eine Auswahlliste angeboten. In 'module number' - wird die ausgew„hlte Modulnummer bergeben. + wird die ausgewĂ€hlte Modulnummer ĂŒbergeben. INT PROC codeaddress (INT CONST module number) : @@ -1787,7 +1787,7 @@ INT PROC codesegment (INT CONST module number) : INT PROC hash (TEXT CONST object name) : - Berechnet den Hashcode des Objekts 'object name', um ber die Hashtable, + Berechnet den Hashcode des Objekts 'object name', um ĂŒber die Hashtable, Nametable, Permanenttable die Parameter eines Objekts zu suchen. @@ -1796,8 +1796,8 @@ INT PROC hash (TEXT CONST object name) : #ub#3.3.1 Zugriff auf globale Parameter#ue# PROC default no runtime : - Bereitet den Decoder darauf vor, daá keine runtime vorliegt, d.h. - Stackzugriffe nicht sinnvoll sind. Fr Parameter mit lokalen Adressen + Bereitet den Decoder darauf vor, daß keine runtime vorliegt, d.h. + Stackzugriffe nicht sinnvoll sind. FĂŒr Parameter mit lokalen Adressen werden deshalb keine Variableninhalte dargestellt. Bei fast allen Decoderaufrufen mit 'decode'/'decode module' bis auf die 'decode' mit mehr als zwei Parametern, wird 'default no runtime' automatisch aufgerufen. @@ -1805,23 +1805,23 @@ PROC default no runtime : PROC set parameters (INT CONST lbase, pbase, line number, c8k) : PROC get parameters (INT VAR lbase, pbase, line number, c8k) : - Einstell- und Informationsprozeduren (fr den Tracer). 'lbase' ist die - lokale Basis (Stackoffset fr dies Modul), 'pbase' ist das highbyte der + Einstell- und Informationsprozeduren (fĂŒr den Tracer). 'lbase' ist die + lokale Basis (Stackoffset fĂŒr dies Modul), 'pbase' ist das highbyte der Paketbasis, 'line number' ist die letzte 'LN'-Zeilennummer, 'c8k' (cmod) wird von EUMEL0 beim Eintritt in ein Modul auf - high (Modulstartaddresse + 16KB) gesetzt (fr Branch-Befehle). + high (Modulstartaddresse + 16KB) gesetzt (fĂŒr Branch-Befehle). PROC pbase (INT CONST pbase highbyte) : INT PROC pbase : - Einstell- und Informationsprozeduren, nicht nur fr den Tracer. Die + Einstell- und Informationsprozeduren, nicht nur fĂŒr den Tracer. Die Paketbasis (Globale Daten) wird gesetzt. Dazu wird nur das Highbyte (z.B. - nach 'PENTER') bergeben. + nach 'PENTER') ĂŒbergeben. PROC lbase (INT CONST local base) : - Einstellprozedur fr den Tracer. Stellt w„hrend der runtime die aktuelle - Basis ein. Wird der Decoder nicht w„hrend runtime betrieben, sollte + Einstellprozedur fĂŒr den Tracer. Stellt wĂ€hrend der runtime die aktuelle + Basis ein. Wird der Decoder nicht wĂ€hrend runtime betrieben, sollte lbase(-1) eingestellt werden. @@ -1830,44 +1830,44 @@ INT PROC line number : PROC list filename (TEXT CONST name) : Stellt den Namens-Prefix der Outputfiles ein. Voreingestellt ist "". An - den Filename wird ".n" angeh„ngt, wobei n mit '0' beginnt. + den Filename wird ".n" angehĂ€ngt, wobei n mit '0' beginnt. PROC bool result (BOOL CONST status) : BOOL PROC bool result : - Einstell- und Informationsprozeduren, die fr den Tracer ben”tigt werden. + Einstell- und Informationsprozeduren, die fĂŒr den Tracer benötigt werden. Lieferte der letzte disassemblierte Befehl ein BOOL-Result ? PROC with object address (BOOL CONST status) : BOOL with object address : - Einstell- und Informationsprozeduren, nicht nur fr den Tracer. Sollen - auáer den Darstellungen der Speicherinhalte auch die Parameteradressen (in + Einstell- und Informationsprozeduren, nicht nur fĂŒr den Tracer. Sollen + außer den Darstellungen der Speicherinhalte auch die Parameteradressen (in spitzen Klammern) ausgegeben werden ? PROC with code words (BOOL CONST status) : BOOL PROC with code words : - Einstell- und Informationsprozeduren, nicht fr den Tracer. Sollen ab der + Einstell- und Informationsprozeduren, nicht fĂŒr den Tracer. Sollen ab der 80. Spalte in der Outputfile die Hexdarstellungen der dekodierten - Codew”rter ausgegeben werden ? + Codewörter ausgegeben werden ? #ub#3.3.2 Aufruf des Disassemblers#ue# PROC decode : Aufruf des Decoders. Die Modulnummer der ersten zu dekodierenden Prozedur - wird erfragt. Die Modultabelle wird ggf. erg„nzt, es wird 'default no + wird erfragt. Die Modultabelle wird ggf. ergĂ€nzt, es wird 'default no runtime' eingestellt. PROC decode (INT CONST first module number) : Aufruf des Decoders. Die Modulnummer der ersten zu dekodierenden Prozedur - wird bergeben. Die Modultabelle wird ggf. erg„nzt, es wird 'default no + wird ĂŒbergeben. Die Modultabelle wird ggf. ergĂ€nzt, es wird 'default no runtime' eingestellt. PROC decode (INT CONST segment, address) : Aufruf des Decoders. Die Disassemblierung beginnt in dem - Codesegment/Adresse, das/die als Parameter bergeben wird. Die Modultabelle - wird ggf. erg„nzt, es wird 'default no runtime' eingestellt. + Codesegment/Adresse, das/die als Parameter ĂŒbergeben wird. Die Modultabelle + wird ggf. ergĂ€nzt, es wird 'default no runtime' eingestellt. PROC decode (INT CONST segment, INT VAR address, INT CONST to addr, @@ -1876,7 +1876,7 @@ PROC decode (INT CONST segment, INT VAR address, INT CONST to addr, die Modultabelle. Der bei 'address' beginnende und bei 'to addr' endende Adressbereich im Codesegment 'segment' wird dekodiert. Ist 'only one module' TRUE, wird nur bis zum Ende des aktuellen Moduls dekodiert. - 'address' zeigt nach dem Prozeduraufruf auf die n„chste Instruktion nach + 'address' zeigt nach dem Prozeduraufruf auf die nĂ€chste Instruktion nach 'to addr'. @@ -1884,21 +1884,21 @@ PROC decode (INT CONST segment, INT VAR address, TEXT VAR words, instruction, INT PROC (INT CONST, INT VAR, TEXT VAR) next word)): Diese Prozedur ist das Herz des Decoders. Sie disassembliert eine Instruktion, die im Codesegment 'segment', Adresse 'address' beginnt und - legt die mit 'nextword' gelesenen W”rter als Hexdarstellung in 'words' ab. + legt die mit 'nextword' gelesenen Wörter als Hexdarstellung in 'words' ab. Die dekodierte Instruktion steht dann in 'instruction'. Vor dem Aufruf dieser Prozedur sollte 'words' und 'instruction' niltext zugewiesen werden. Die passende Prozedur 'nextword' wird auch vom 'eumel decoder' - herausgereicht. 'address' zeigt nach der Ausfhrung des Befehls auf die - n„chste Instruktion. + herausgereicht. 'address' zeigt nach der AusfĂŒhrung des Befehls auf die + nĂ€chste Instruktion. PROC decodemodule : - Wie 'decode', nur wird bis nur zum Ende des gewnschten Moduls + Wie 'decode', nur wird bis nur zum Ende des gewĂŒnschten Moduls disassembliert. PROC decodemodule (INT CONST module number) : - Wie 'decode', nur wird bis nur zum Ende des gewnschten Moduls + Wie 'decode', nur wird bis nur zum Ende des gewĂŒnschten Moduls disassembliert. @@ -1907,23 +1907,23 @@ PROC decodemodule (INT CONST module number) : PROC nextmoduleheader (INT CONST segment, INT CONST address, INT VAR header address, module number) : Diese Prozedur findet ab der angegeben Adresse ('segment'/'address') den - Anfang des n„chsten Moduls. In 'header address' wird die Startadresse des + Anfang des nĂ€chsten Moduls. In 'header address' wird die Startadresse des gefundenen Moduls geliefert (bleibt im Segment 'segment'), in 'module number' die Nummer des gefundenen Moduls. INT PROC next word (INT CONST segment, INT VAR address, TEXT VAR words) : - Diese Prozedur liefert das durch 'segment'/'address' angegeben Wort, h„ngt - die Hexdarstellung dieses Wortes an 'words' an und erh”ht 'address' um + Diese Prozedur liefert das durch 'segment'/'address' angegeben Wort, hĂ€ngt + die Hexdarstellung dieses Wortes an 'words' an und erhöht 'address' um eins. TEXT PROC data representation (INT CONST data addr, segment, address, type): Diese Prozedur liefert die Darstellung des Parameters 'data addr' ggf. mit Adresse (--> with object address). 'segment'/'address' bezeichnet die - Position, an der die Instruktion fr diesen Parameter steht. 'type' ist + Position, an der die Instruktion fĂŒr diesen Parameter steht. 'type' ist ein (durch die Instruktion festgelegter) Typ des Parameters, mit dem die - Art der Darstellung gew„hlt wird (TEXT, REAL, INT, ...). Im Gegensatz zu + Art der Darstellung gewĂ€hlt wird (TEXT, REAL, INT, ...). Im Gegensatz zu 'object representation' braucht bei dieser Prozedur keine Darstellung vorhanden sein. In diesem Falle wird nur z.B. der Stackoffset '' ausgegeben. @@ -1933,13 +1933,13 @@ TEXT PROC object representation (INT CONST data segment, data address, segment, address, type) : Diese Prozedur wird von 'data representation' aufgerufen und liefert die Darstellung des Parameters. In 'data segment'/'data address' wird die - Anfangsadresse der darzustellenden Daten bergeben. Die anderen drei + Anfangsadresse der darzustellenden Daten ĂŒbergeben. Die anderen drei Parameter verhalten sich wie bei 'data representation'. TEXT PROC last actual parameter : Liefert den Wert (nach TEXT konvertiert) des letzten dekodierten aktuellen - Parameters (am sinnvollsten w„hrend runtime). Diese prozedur wird vom + Parameters (am sinnvollsten wĂ€hrend runtime). Diese prozedur wird vom Tracer benutzt. @@ -1950,25 +1950,25 @@ TEXT PROC last actual parameter : PROC prot file (TEXT CONST filename) : TEXT PROC prot file : - Einstell- und Informationsprozeduren fr den Namen der Protokollfile. + Einstell- und Informationsprozeduren fĂŒr den Namen der Protokollfile. Wird ein 'filename' ungleich niltext eingestellt, dann werden die - dekodierten Instruktionen w„hrend der Ablaufverfolgung zus„tzlich in diese + dekodierten Instruktionen wĂ€hrend der Ablaufverfolgung zusĂ€tzlich in diese File geschrieben. PROC source file (TEXT CONST filename) : TEXT PROC source file : - Einstell- und Informationsprozeduren fr den Namen der Quelltextdatei. + Einstell- und Informationsprozeduren fĂŒr den Namen der Quelltextdatei. Wird ein 'filename' ungleich niltext eingestellt, dann wird nach dem - Ausfhren eines 'LN'-Befehls (LineNumber) die Zeile mit dieser Nummer aus + AusfĂŒhren eines 'LN'-Befehls (LineNumber) die Zeile mit dieser Nummer aus der Quelldatei gelesen und parallel zur dekodierten EUMEL0-Instruktion angezeigt. PROC tracer channel (INT CONST) : INT PROC tracerchannel : - Einstell- und Informationsprozeduren fr den Kanal, an dem das Programm - ausgefhrt werden soll. Die Ablaufverfolgung bleibt an dem Kanal, an dem + Einstell- und Informationsprozeduren fĂŒr den Kanal, an dem das Programm + ausgefĂŒhrt werden soll. Die Ablaufverfolgung bleibt an dem Kanal, an dem die PROC/OP aufgerufen wurde. @@ -1982,40 +1982,40 @@ INT PROC tracerchannel : PROC trace : Diese Prozedur erfragt vom Benutzer die PROC/OP, bei der der die - Ablaufverfogung beginnen soll. Anschlieáend muá der Aufruf der PROC/OP - eingegeben werden. Der Benutzer wird auáerdem nach dem Namen der + Ablaufverfogung beginnen soll. Anschließend muß der Aufruf der PROC/OP + eingegeben werden. Der Benutzer wird außerdem nach dem Namen der compilierten Quelldatei, dem Namen der Protokollfile und dem Abarbeitungskanal gefragt. Nachdem alle Angaben gemacht worden sind, wird - der PROC/OP-Aufruf mit 'do' ausgefhrt. + der PROC/OP-Aufruf mit 'do' ausgefĂŒhrt. PROC set breakpoint : Die Modultabelle wird ggf. erweitert, der Benutzer wird nach dem Namen einer PROC/OP gefragt, deren Codeabarbeitung verfolgt werden soll. Der Code - dieser PROC/OP muá im Codesegment 3 stehen (sonst erfolgt ein 'errorstop'). + dieser PROC/OP muß im Codesegment 3 stehen (sonst erfolgt ein 'errorstop'). Der Protokoll- und Sourcefilename werden auf niltext gesetzt. PROC set breakpoint (INT CONST breakpointnr, address) : - Setzt an der bergebenen Codeadresse im Segment 3 einen Breakpoint der + Setzt an der ĂŒbergebenen Codeadresse im Segment 3 einen Breakpoint der beiden Breakpoints (1 oder 2 als 'breakpointnr'). Der Benuzter ist selbst - dafr verantwortlich daá + dafĂŒr verantwortlich daß - dies nicht die Einsprungsadresse eines Moduls ist (HEAD-Instruktion), - - die bergebene Adresse das erste (Opcode-) Wort einer Instruktion ist, + - die ĂŒbergebene Adresse das erste (Opcode-) Wort einer Instruktion ist, - vor dem Aufruf des Moduls die Paketbasis korrekt gesetzt ist, falls - vor der ersten Instruktion mit Parametern kein 'PENTER' ausgefhrt wird. + vor der ersten Instruktion mit Parametern kein 'PENTER' ausgefĂŒhrt wird. PROC reset breakpoints : - Die Breakpoints werden zurckgesetzt und der (wegen des Breakpointhandler- - CALLs) gesicherte Code wieder an seinen Originalplatz zurckgeschrieben. + Die Breakpoints werden zurĂŒckgesetzt und der (wegen des Breakpointhandler- + CALLs) gesicherte Code wieder an seinen Originalplatz zurĂŒckgeschrieben. PROC reset breakpoint (INT CONST breakpointnr) : Es wird nur gezielt der eine Breakpoint mit der Nummer 'breakpointnr' - zurckgesetzt. + zurĂŒckgesetzt. PROC list breakpoints : Der Status, die Adresse und der gesicherte Code (an dieser Adresse) werden - fr beide Breakpoints gelistet. + fĂŒr beide Breakpoints gelistet. diff --git a/devel/debugger/1.8.2/src/DEBUGGER.ELA b/devel/debugger/1.8.2/src/DEBUGGER.ELA index fddde7d..6b4a429 100644 --- a/devel/debugger/1.8.2/src/DEBUGGER.ELA +++ b/devel/debugger/1.8.2/src/DEBUGGER.ELA @@ -128,7 +128,7 @@ INT OP MUL (INT CONST left, right) : ENDOP MUL ; BOOL PROC ulseq (INT CONST left, right) : - left <= right (* Muá leider(!!) auf ULSEQ Code gepatcht werden *) + left <= right (* Muß leider(!!) auf ULSEQ Code gepatcht werden *) ENDPROC ulseq ; (*************************** Wortoperationen ******************************) @@ -190,7 +190,7 @@ ENDPACKET address ; (**************************************************************************) -PACKET table routines DEFINES (* Fr eumel decoder 861017 *) +PACKET table routines DEFINES (* FĂŒr eumel decoder 861017 *) (* 1.8.0 by M.Staubermann *) code segment , code address , @@ -473,7 +473,7 @@ PROC get module number (INT VAR module number) : anz objects := 0 ; FILE VAR f := notefile ; maxlinelength (f, 1000) ; - note ("Modulnummer des gewnschten Objekts merken und ESC q tippen.") ; + note ("Modulnummer des gewĂŒnschten Objekts merken und ESC q tippen.") ; noteline ; noteline ; module number := -1 ; @@ -779,7 +779,7 @@ ENDPACKET table routines ; (*************************************************************************) -PACKET eumel decoder DEFINES (* M. Staubermann, M„rz/April 86 *) +PACKET eumel decoder DEFINES (* M. Staubermann, MĂ€rz/April 86 *) (* 1.8.0 861201 *) (* 1.8.2 880726 *) lbase , @@ -1212,8 +1212,8 @@ analyze key : {e} CASE 101 : echo := NOT echo (* Bildschirmausgabe zus. *) {s} CASE 115 : storage (size,used) ; out(""13""5"System-Storage: " + text (used) + " ") {m} CASE 109 : out (""13""5"Modulnr: " + text (mod nr-1) + " ") -{Q,W}CASE 87,81:output permitted := TRUE (* L„uft nur im Vordergrund *) -{S} CASE 83 : output permitted := FALSE (* L„uft auch im Hintergrund *) +{Q,W}CASE 87,81:output permitted := TRUE (* LĂ€uft nur im Vordergrund *) +{S} CASE 83 : output permitted := FALSE (* LĂ€uft auch im Hintergrund *) {ESC}CASE 27 : IF incharety <> "" THEN taste := "" ELSE list line ("Abbruch mit ESC") @@ -1406,7 +1406,7 @@ process call : THEN instruction CAT " " ELSE instruction CAT " " FI ; - was bool result := FALSE ; (* Wird von params0 ggf berschrieben *) + was bool result := FALSE ; (* Wird von params0 ggf ĂŒberschrieben *) instruction CAT params0 (prim op (opcode).params, word, segment, address, words, INT PROC (INT CONST, INT VAR, TEXT VAR) next word) . @@ -1774,7 +1774,7 @@ module address representation : (* Hier: lowbyte = mod nr, highbyte = mod addr *) next module header (data segment, data address, highbyte, lowbyte) ; IF highbyte <> data address - THEN linear search (* Adresse muá doch zu finden sein *) + THEN linear search (* Adresse muß doch zu finden sein *) FI ; text val := text (lowbyte) ; process module nr (lowbyte) . @@ -1978,10 +1978,10 @@ copy text from heap : heap segment := address AND 7 ; address := address AND hex fff8 ; (* In Vielfachen von 8 *) laenge := getword (segment, addr ADD 2) AND 255 ; - makeword (laenge, first char) ; (* 16 Bit Laenge ber Wortgrenze *) + makeword (laenge, first char) ; (* 16 Bit Laenge ĂŒber Wortgrenze *) laenge := min (laenge, 256) ; (* Mehr ist im Listing nicht sinnvoll *) IF getword (heap segment, address) = minus one (* Standard DS *) - THEN address INCR 3 ; (* Kann nicht ber 8000H Grenze gehen *) + THEN address INCR 3 ; (* Kann nicht ĂŒber 8000H Grenze gehen *) ELSE INC address (* Im Frei-Datenraum nur Wort Laenge *) FI ; result := "" ; @@ -2118,7 +2118,7 @@ ENDPROC tracer channel ; PROC tracer channel (INT CONST c) : IF c < 17 AND c > minus one THEN trace channel := c - ELSE errorstop ("PROC tracer channel: Kanalnummer unzul„ssig") + ELSE errorstop ("PROC tracer channel: Kanalnummer unzulĂ€ssig") FI ENDPROC tracer channel ; @@ -2135,7 +2135,7 @@ PROC trace : put (" Protokollfilename (falls kein Protokoll RETURN):") ; getline (name) ; prot file (name) ; - put (" Tracekanal (Ausfhrung an diesem Kanal: RETURN):") ; + put (" Tracekanal (AusfĂŒhrung an diesem Kanal: RETURN):") ; name := "0" ; editget (name) ; line ; @@ -2458,7 +2458,7 @@ valid source : exists (source file name) . get breakpoint address from user : - put ("N„chste Breakpointaddresse (hex) in Segment 3:") ; + put ("NĂ€chste Breakpointaddresse (hex) in Segment 3:") ; statement line := hex16 (next instruction address) ; editget (statement line) ; user address := integer (statement line) ; @@ -2592,7 +2592,7 @@ set first breakpoint behind branch instruction at return address : next instruction := getword (code segment 3, next instruction address) ; c8k := getword (local data segment, lbas + c8k offset) AND 255 ; set first breakpoint behind branch instruction - ELSE putline ("Trace bei Vorw„rtssprung beendet."5"") + ELSE putline ("Trace bei VorwĂ€rtssprung beendet."5"") FI . set second breakpoint at branch address of branch instruction at return address : @@ -2651,7 +2651,7 @@ determine return address : packet base := HIGH return segment ; (* Wort besteht aus zwei Teilen!*) set parameters (lbas, packet base, minus one, c8k) ; stptr := lbas ADD 4 ; - DEC return address ; (* auf CALL breakpointhandler (ein Wort zurck) *) + DEC return address ; (* auf CALL breakpointhandler (ein Wort zurĂŒck) *) IF bit (return segment, 7) (* ISERR *) THEN old error line := error line ; old error code := error code ; @@ -2738,7 +2738,7 @@ set breakpoint behind previous call : lbas + return address offset) ; IF return segment = code segment 3 THEN set breakpoint (breakpoint nr, return address) - ELSE putline ("Trace bei Rcksprung beendet."5"") + ELSE putline ("Trace bei RĂŒcksprung beendet."5"") FI . next free breakpoint : @@ -2860,7 +2860,7 @@ determine module name and module nr : ELSE result := subtext (result, 1, pos (result, "-->")-2) FI ; FI ; - address := start address . (* Rcksetzen auf ersten param push *) + address := start address . (* RĂŒcksetzen auf ersten param push *) collect actual parameters : IF symbol <> "(" @@ -2898,7 +2898,7 @@ collect actual parameters : result CAT " " ; result CAT symbol ; (* CONST oder VAR *) result CAT ":" ; - typetext := ":" + typetext ; (* Fr Pos-Suche *) + typetext := ":" + typetext ; (* FĂŒr Pos-Suche *) nextsymbol (symbol) ; (* Jetzt auf ',' oder ')' *) FI ; IF (getword (code segment 3, address) AND hex 7f00) = hex 7f00 (* ESC OR LONGA *) @@ -3001,8 +3001,8 @@ ENDOP HIGH ; PROC fix local base : (* Kein direkter EXTERNAL-Aufruf, da bei 'CALL' lbas auf Stack gelegt wird*) - REP UNTIL incharety = "" PER ; (* Damit pause ausgefhrt wird *) - internal pause (0) (* ^ War Grund fr 'falsche Returnaddresse'*) + REP UNTIL incharety = "" PER ; (* Damit pause ausgefĂŒhrt wird *) + internal pause (0) (* ^ War Grund fĂŒr 'falsche Returnaddresse'*) ENDPROC fix local base ; @@ -3087,7 +3087,7 @@ PROC set breakpoint : INT VAR i ; handlers module nr (module number (PROC breakpointhandler)) ; auto trace := FALSE ; - source lines neu := TRUE ; (* Zum L”schen *) + source lines neu := TRUE ; (* Zum Löschen *) source file ("") ; prot file ("") ; actual line number := minus one ; -- cgit v1.2.3