DE2458651A1 - Elektronische datenverarbeitungsanlage mit einrichtung zur fehlerbefreiung von rechenprogrammen - Google Patents

Elektronische datenverarbeitungsanlage mit einrichtung zur fehlerbefreiung von rechenprogrammen

Info

Publication number
DE2458651A1
DE2458651A1 DE19742458651 DE2458651A DE2458651A1 DE 2458651 A1 DE2458651 A1 DE 2458651A1 DE 19742458651 DE19742458651 DE 19742458651 DE 2458651 A DE2458651 A DE 2458651A DE 2458651 A1 DE2458651 A1 DE 2458651A1
Authority
DE
Germany
Prior art keywords
register
program
address
memory
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19742458651
Other languages
English (en)
Other versions
DE2458651C2 (de
Inventor
Guido Badagnani
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Olivetti SpA
Original Assignee
Olivetti SpA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Olivetti SpA filed Critical Olivetti SpA
Publication of DE2458651A1 publication Critical patent/DE2458651A1/de
Application granted granted Critical
Publication of DE2458651C2 publication Critical patent/DE2458651C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Calculators And Similar Devices (AREA)

Description

Elektronische Datenverarbeitungsanlage mit Einrichtung zur Fehlerbefreiung von Rechenprogrammen
Die Erfindung betrifft eine elektronische Datenverarbeitungsanlage mit einer Einrichtung zur Fehlerbefreiung von Rechenprogrammen, entsprechend dem Oberbegriff des Hauptpatentanspruchs .
Es ist auf dem Gebiet' der Datenverarbeitung bekannt, daß es notwendig ist, Programme vor ihrer Benutzung zu testen, um Fehler und Abweichungen zu beseitigen, die während der Err stellung der Programme selbst entstanden sind. '
Normalerweise sind in Anlagen großer Rechen- und Speicherkapazität bereits feste Fehlerbefreiungsprogramme vorhanden und geeignet, dem Operator alle Möglichkeiten zu geben, den Aufbau des getesteten Programms zu verfolgen und eine visuelle Anzeige der möglicherweise vorliegenden Fehler zu erhalten.
Da diese festen Fehlerbefreiungsprogramme mit dem zu testenden Programm in Wechselwirkung treten, müssen sie neben diesem im Speicher der Anlage vorhanden sein, so daß nur Anlagen großer Dimensionen diese Möglichkeiten bieten können.
509 8 2 8/0783
BERLIN: TELEFON (030)8312088 KABEL: PROPINDUS -TELEX Ο184Ο57
MÜNCHEN: TELEFON (0811) 22 50 80 KABEL: PROPIN DU S · TELEX OB 2+244
Bei Anlagen kleiner Dimensionen, bei denen die Speicherkapazität auf die Maximalgröße von Programmen des besonderen Anwendungsgebietes (beispielsweise Fakturieraufgaben) der Anlage zugeschnitten ist, ist es für den Programmierer normalerweise nicht möglich, das aufgestellte Programm zu testen. Tatsächlich neigen die Hersteller derartiger Anlagen dazu, den Benutzer mit den notwendigen Programmen, die bereits perfektioniert bzw. von Fehlern befreit sind, zu versorgen.
Diese Tendenz findet ihre Berechtigung in der Tatsache, daß die Vergrößerung des Speichers zum Zwecke der Aufnahme eines Fehlerbefreiungsprogrammes die Kosten der Anlage negativ beeinflussen würde. Darüber hinaus würde der Benutzer eine Anlage erwerben, deren Wirkungsgrad wegen der unbenutzten Speicherteile nur gering ist.
Der offensichtliche Nachteil, der sich hieraus aber für den Benutzer ergibt, ist, daß der erworbenen Anlage vollständig die Flexibilität fehlt, was soweit geht, daß es dem Benutzer nicht möglich ist, selbst die kleinsten Änderungen in den Programmen vorzunehmen, die mit der Anlage geliefert werden.
Diese fehlende Flexibilität der Leistungsfähigkeit der Anlage macht den Benutzer bezüglich aller Leistungen, die mit der Veränderung von Programmen zusammenhängen, vollständig vom Hersteller der Anlage abhängig.
Der Benutzer ist also gezwungen, den Hersteller zu bitten, die Programme zu modifizieren, womit normalerweise lange Wartezeiten und hohe Kosten verbunden sind. Um diesen Nachteilen aus dem Wege zu gehen, ist der Benutzer geneigt, die Programme selbst zu modifizieren und fremde Datenverarbeitungszentren zu bitten, die vorgenommenen Modifikationen von Fehlern zu befreien. Aber
509828/0783
auch in diesem Fall ist der Benutzer gezwungen, lange Wartezeiten und zusätzliche Kosten in Kauf zu nehmen.
Es ist eine Kleindatenverarbeitungsanlage bekannt mit einer Einrichtung zur Fehlerbefreiung von Rechenprogrammen (IBM System/3 Model 10 Disk Systems Operator's Guide, IBM 5^10 Processing Unit Controls and Indicators, Seiten 11 bis 13). Diese Anlage enthält ein Fehlerbeseitigungssteuerfeld, das nicht durch den Operator sondern nur durch den Programmierer bedient werden kann. Dieses Steuerfeld enthält einen Schalter, um die Arbeitsweise der Anlage vom Normalbetrieb in den Betrieb zur Fehlerbeseitigung umzuschalten. Weiterhin ist eine Anzahl von Schaltern vorgesehen, die jeweils mit einer bestimmten Fehlerbefreiungsoperation, wie beispielsweise Anzeige der Arbeitsspeicherregister, Einschreiben in den Speicher, schrittweiser Lauf, etc. verbunden ist.
Zusätzlich zu diesem Steuerfeld ist ein weiteres Steuerfeld vorgesehen, um Daten und Adressen in den Speicher einzugeben, wobei eine Anzeige eingeschlossen ist, die jeweils nur zwei 8-Bit Speicherbytes im Binärcode anzeigen kann.
Diese Einrichtung zur Fehlerbefreiung hat zwei grundsätzliche Nachteile :
Es werden wesentliche Teile der Anlage nur im Fehlerbeseitigungsbetrieb benutzt und nicht bei der normalen Arbeitsweise. Dadurch werden die Kosten der Fehlerbefreiungseinrichtung so stark heraufgesetzt, daß sie verhältnismäßig kostspielig wird.
Der zweite Nachteil besteht darin, daß die Anzeige jeweils nur zwei Bytes gleichzeitig wiedergibt, wodurph es für den Programmierer schwierig wird, den gesamten Inhalt eines
5098 28/0 78 3
2458657
Registers darzustellen, wodurch die Beseitigung von Fehlern in Rechenprogrammen unübersichtlich und langwierig wird.
Der Erfindung liegt die Aufgabe zugrunde, eine Fehlerbefreiungseinrichtung zu schaffen, die von den vorgenannten Nachteilen frei ist und auch bei kleineren Datenverarbeitungsanlagen die Benutzung von kompletten Fehlerbefreiungsprogrammen, die einen gewissen Komfort bieten, gestaltet, ohne daß damit eine wesentliche Kostenerhöhung verbunden wäre.
Diese Aufgabe wird durch die im Hauptanspruch angegebenen Merkmale gelöst.
Vorteilhaft bei der Erfindung ist, daß alle Operationen, die sich auf die Fehlerbefreiung beziehen, unter alleiniger Benutzung der Tastatur, des Bedienungsfeldes und der Anzeige, mit denen die Anlage üblicherweise ausgerüstet ist, ausgeführt werden können, ohne daß besondere Ausrüstungen zur Fehlerbefreiung (wie bei großen Anlagen) notwendig wären.
Bei einer vorteilhaften Weiterbildung der Erfindung besteht die Möglichkeit, einen Satz der wichtigsten Programme zur Fehlerbefreiung im Auslesespeicher (ROM) unterzubringen sowie die Möglichkeit, auf einer Magnetkarte aufgezeichnete Fehlerbefreiungsprogramme in eine bestimmte Zone des Arbeitsspeichers (RAM) ohne Änderung der wesentlichen Parameter des zu testenden Programmes einzubringen. Der Programmierer ist in der Lage, Fehlerbefreiungsprogramme, die für seine Aufgabe besonders geeignet sind, mittels Aufzeichnung auf Magnetkarten selbst zu schreiben und zu benutzen.
509828/07 8 3
BAD ORIGINAL
"5" 2458657
Die genannten und weitere vorteilhafte Merkmale der Erfindung sollen im Folgenden anhand eines Ausführungsbeispiels der Erfindung, das in der Zeichnung dargestellt ist, näher erläutert werden. Es zeigen:
Figur 1a eine Blockdarstellung eines Ausführungsbeispiels einer das erfindungsgemäße Fehlerbefreiungssystem für Programme enthaltenden Datenverarbeitungsanlage,
Figur 1b eine Außenansicht der Anlage in perspektivischer Darstellung,
Figur 2 eine Blockdarstellung der Zentraleinheit der Anlage, Fig. 2a bis c Details der Blockdarstellung nach Fig. 2, Figur 3 die Taktsignale der Zentraleinheit, Figur k ein Zustandsregister,
Figur 5 zeigt Takt signale des Zustandsregisters nach Fig. ^f,
Figur 6 die auf das Zustandsregister einwirkenden Signale während des Lesens einer Mikroanweisung,
Figur 7 ein Operationsregister,
Figur 8 eine Blockdarstellung des Operationsregisters nach Fig. 7i Figur 9 eine Darstellung der reservierten Zone (ZRM)dee Arbeitsspeichers Figur 9a ein Programmbedingungsbyte,
Figur 9b ein Codeunterbrechungsbyte,
Figur 9c ein Reservierungsunterbrechungsbyte, .
5 0 9 8 2 8/0783
Figur 9d ein Fehlerbefreiungs-Hilfsbyte,
Fig. 10a ein Flußdiagratnm des Übersetzer-Mikroprogramms,
bis c
Figur 10d die Formate der Anweisungen,
Fig. 11a zeigen die Flußdiagramme des Fehlerbefreiungsbis g (DBG)-Programms,
Fig. 12a die Darstellung eines Beispiels einer optischen bis f Anzeige einer Anweisung,
Figur 13 ein Flußdiagramm für ein Blockerkennungs-Mikroprogramm und
Figur Ik ein schematisches Flußdiagramm der Arbeitsweise des erfindungsgemäßen Fehlerbefreiungsprogramms,
InhaIts über sieht
1. Liste der verwendeten Kurzbezeichnungen
2. Allgemeine Beschreibung
3. Zentraleinheit (Fig. 2)
3.1 Zeitgeber 20
3.2 Ausführung der Mikroanweisungen
3.3 Zustandsregister (SO) 27
3.^ Anweisungsregister (RO) 26
3.5 Operationsregister 30
3.6 Arithmetische Einheit 35
3.7 Schaltelemente (Register kO)
3.8 Verschiebeschaltung 41
3.9 Eingangsschaltung zu den Operationsregistern
3.10 Verbindungsschaltung für RAM 1
3.11 Kanallogik 45
509828/ 0 7 83
k. Detaillierte Beschreibung von RAM 1 und ROM
5. Anweisungsinterpretations-Mikroprogramm (Übersetzer)
6. Fehlerbefreiungsprogramme
6.1 Benutzte Anweisungen
6.2 Optische Anzeige der Anweisungen in den Registern und 363
6.3 Tastenerkennung
6Λ Programm zum Eingeben mit Magnetkarte (Block B2 von DBG) (Taste S 2)
6.5 Lesen RAM 1-Block BO . (Taste SO)
6.6 Stop-Reservierungs-Block B1 (Taste Sl)
6.7 Einschreiben in RAM1-Block B6 (Taste S6)
6.8 Schrittweise Programmausführung
7. Abschließende Bemerkungen und Beispiele 1. Liste der verwendeten Kurzbezeichnungen
AB Ans teuerungs tasten
AJ Unterbrechungseinschaltung (Register
BSD Fehlerbefreiungs-Hilfsbit (Register 35I in Fig. 9)
C Befehl
CC Bedingungscode
CJ Unterbrechungscode
CP Programmbedingungen (Register 313)
CRT Zeichen (entsprechend 8 Speicherbits), Leerstelle
CU Zentraleinheit
D Datenkanal
DBG Fehlerbefreiung
DEV Ein Schaltelement des Registers kO, bestimmt durch 3 Bits
DJ Register 40, bestehend aus acht Schaltelementen
EXOR Exklusiv-Oder
II Adressen der Programmunterbrechung (Register 335 in Fig. 9)
IND Adresse
509828/078
JP Programm-Adressierer 207
JPSR Unterbrechung Programm (Register 302 von RAM 1)
JR Wiedereingabe Adresse (Register 327 in Fig. 9)
JS Stop Adresse (Register 350 in Fig. 9)
JTR Referenztabellen-Adressierregister
M.C. Magnetkarte
MEM Speicher RAM 1
MJ Anweisungsmodifizierung
MLS Sequenzlogik-Matrix 28
OPSR Unterbrochenes Programm (Register 301 von RAM 1)
P1 Zeiger 1 (Register für Hinweissignal)
P2 Zeiger 2 (Register für Hinweissignal)
PI Unterbrechungs-Reservierungsbit (Register 31*0
PSR Fortgeschrittenes Programm (Register 300 von RAM 1)
PU Periphere Einheiten h
RAM Arbeitsspeicher
RB Basisregister 310
RC Bedienungsregister 359
RL Arbeitsregister (Register 352 in Fig. 9)
RO , Mikroanweisungsregister 26
ROM Auslesespeicher
SO Zustandsregister
ZRM Reservierte Zone von RAM 1
2. Allgemeine Beschreibung
Eine Datenverarbeitungsanlage mit dem erfindungsgemäßen
Fehlerbefreiungs—System soll zunächst mit Bezug auf die Fig. 1a und b beschrieben werden. Das dargestellte Ausführungsbeispiel der Datenverarbeitungsanlage weist eine Mikroprogrammierur*g auf, d.h. , zu jeder Anweisung des Programms gehört ein Mikroprogramm, das in einem festen Speicher festgehalten ist, so daß die Ausführung einer Programmanweisung durch die aufeinanderfolgende Ausführung der Mikroanweisungen des entsprechenden Mikroprogramms erfolgt.
509828/0 783
Die Anlage nach den Eig. 1a und b weist einen Arbeitsspeicher (RAM) 1 auf, der die Anweisungen und Daten des in Ausführung begriffenen Programms aufnimmt, und einen Auslesespeicher (ROM) 2, der sowohl die Mikroprogramme, die die Programmanweisungen vervollständigen, als auch die Programme, die durch das erfindungsgemäße Fehlerbefreiungssystem benutzt werden, enthält, wie es im Folgenden näher beschrieben werden soll.
RAM 1 und ROM 2 stellen übliche Speicher dar und brauchen deshalb nicht im einzelnen dargestellt werden. Es soll an dieser Stelle lediglich erwähnt werden, daß jede Zelle der beiden Speicher eine Kapazität von jeweils 16 Bits aufweist.
RAM 1 und ROM 2 sind mit einer Zentraleinheit (CU) 3 verbunden, welche ebenfalls weiter unten detailliert beschrieben werden wird und ihrerseits mit einer Anzahl von peripheren Einheiten (PU) h verbunden ist.
Die peripheren Einheiten h können verschiedener Art sein, entsprechend der besonderen Anwendung, für die die Anlage konzipiert ist.
Eier sollen nur diejenigen peripheren Einheiten beschrieben und dargestellt werden, die für das Fehlerbefreiungssystem entsprechend der Erfindung benötigt werden. Im einzelnen bestehen die dargestellten peripheren Einheiten aus: einem alphanumerischen Tastenfeld 5» einer optischen Anzeige 6, einem Bedienungsfeld 7t einem Drucker 8 und einer Schreib-ZLese-Einheit 9'» die für die Aufzeichnung und Wiedergabe von Daten auf einer Magnetkarte 9 geeignet ist. ,
Zunächst sollen einmal kurz mit Bezug auf die Fig. 1a und b die Operationen, die ein Programmierer bei der Fehlerbefreiung eines Programr.es ausführen muß, das zuvor in RAM 1 eingespeichert worden ist, dargestellt werden. Diese Funktionen werden selbstverständlich weiter unten noch einmal ausführlich beschrieben werden.
-10 -
509828/0783
Es soll jetzt angenommen werden, daß das in RAM 1 festgehaltene Programm durch die Datenverarbeitungsanlage nicht korrekt ausgeführt wird, da Fehler verschiedener Art vorhanden sind, die durch den Programmierer während der Aufstellung verursacht sein mögen.
Der Programmierer entschließt sich jetzt eine Prüfung der Anweisungen des Programms vorzunehmen, die die Anlage nicht ausführen kann, und nimmt an, daß eine von ihnen falsch ist. Um diese Anweisung direkt in RAM 1 zu verbessern, greift der Programmierer zum Bedienungsfeld 7 und bringt den Umschalter 100, der in Form eines Schlüsselschalters - mit zur Sicherheit gegen eine unbefugte Programmänderung mit einem abziehbaren Schlüssel - ausgebildet sein kann (Fig. 1b) von seiner normalen Stellung in die Stellung "Fehlerbefreiung", schreibt die entsprechende Adresse der Anweisung im numerischen Teil 101 des Tastenfeldes 5 und betätigt dann eine Hilfs-taste S1, die zu einer Tastengruppe 102 gehört.
Der Umschalter 100, der dazu dient, die Fehlerbefreiungsprogramme zu aktivieren, kann durch einen Druckschalter ersetzt werden, der den Umschaltkontakt steuert. Wesentlich ist nur, daß der logische Zustand des auf der Leiter 61 in Fig. 2c vorhandenen Signals auf irgend eine Weise verändert wird.
Die Funktionen, die den Tasten SO bis S6 während der Ausführung von DBG-Progratnmen, die in ROM 2 vorhanden sind, zugeordnet sind, können auch von anderen alphabetischen Tasten oder Drucktasten zwischen G und Z wahrgenommen werden, unter der Annahme, daß die Tasten A bis F für den Hexadezimalcode, zur Modifizierung der Anweisungen benutzt werden. Auch zusätzliche hinzugefügte Drucktasten zum Abruf der in ROM 2 befindlichen DBG-Programme, Umschalter oder verriegelbare Tasten gehören zu den Varianten, die bei dem in vorangehenden beschriebenen Fehlerbefreiungssystem möglich sind.
- 11 -
509828/07 83
2458.65
Mit dieser Operation wird eine Unterbrechung in dem zu korrigierenden Programm eingeleitet, die durch den Schalter 100, der im Bedienungsfeld 7 betätigt wurde, hervorgerufen wird und eines der Fehlerbefreiungsprogramme, das in ROM 2 festgehalten ist, wird durchgeführt. Dieses Programm ist von der im Tastenfeld 5 betätigten Taste abhängig. Es kann beispielsweise zur Folge haben, daß die Anweisung, welche der im Tastenfeld geschriebenen Adresse entspricht, optisch angezeigt wird und weiterhin ein Einhalten der Verarbeitung mit Aktivierung des Tastenfeldes 5 bewirken. Auf diese Weise kann der Programmierer über das Tastenfeld 5 diejenige Anweisung eingeben, die er für richtig hält. Danach betätigt die Bedienungsperson eine weitere Hilfetaste S6, die mit einem weiteren Fehlerbefreiungsprogramm verbunden ist, welches die richtige Anweisung im Speicher RAM 1 bei der vorher eingegebenen Adresse einspeichert.
Wenn der Programmierer ein Fehlerbefreiungsprogramm durchzuführen wünscht, das von denen, die in ROM 2 eingespeichert sind, abweicht, gibt er in die Schreib-/Lese-Einheit 9' die Magnetkarte 9 t auf der
- 12 -
509828/0783
- 1 2A5 8651
ein Fehlerbefreiungsprogramm aufgezeichnet ist, ein und betätigt die Hilfstaste S2. Diese Taste ruft ein besonderes Programm aus SOK 2 ab, welches die folgenden Schritte bewirkt: Lesen des auf der Karte 9 aufgezeichneten Programmes, dessen überführung in eine reservierte Zone (ZRM) von RAM 1 und die unverzügliche Ausführung dieses Programms.
Es soll darauf hingewiesen - und weiter unten noch im einzelnen beschrieben-werden , daß die reservierte Zone von RAM 1, in welche das Kartenprogramm überführt wird, keine Information enthält, die für die Wiederaufnahme des zu testenden Programms wesentlich ist, so daß keine Information verloren geht, wenn das Fehlerbefreiungsprogramm, das auf der Magnetkarte 9 aufgezeichnet ist, ausgeführt wird. Aus dem Gesagten geht ein Vorteil des erfindungsgeciäßen Systems bereits hervor, nämlich die Möglichkeit des Programmtestens durch einfaches Betätigen eines Umschalters, wobei die selben Elemente (Tastenfeld, Anzeige, Magnetkarte) benutzt werden, wie bei der normalen Arbeitsweise.
3. Zentraleinheit (Fig. 2)
Die Zentraleinheit J5 soll jetzt anhand von Fig. 2 im einzelnen beschrieben werden. Die Zentraleinheit 3 ißt eine Zusammenstellung von logischen Schaltungen, welche die verschiedenen Mikroprogramme, die in BOM 2 enthalten sind, steuern und ausführen.
Sie besteht aus vier Hauptteilen:
Ein Zeitgeber 20, welcher die Verarbeitung von Daten innerhalb der Zentraleinheit 3 steuert. Dieser Zeitgeber besteht aus einem Oszillator 21 und einer Anzahl von Signalerzeugerschaltungen 22.
Eine sequentielle logische Matrixschaltung 251 welche eine Serien-Parallel-Umwandlung durchführt und die Codes der Mikroanweisungen,
509 8 28/0783
die aus ROM 2 ausgelesen werden, übersetzt sowie die zur Ausführung derselben notwendigen Befehle erzeugt. Diese Schaltung besteht aus einem Mikroanweisungsregister (EO) 26, einem Zustandsregister (SO) 27 und einer Sequenzlogik-Matrix (MLS) 28.
Eine Operationsschaltung führt die Verarbeitung der Daten in der Art und Weise durch, die durch die Sequenzlogik-Matrix 28 vorgegeben ist. Die Operationsschaltung enthält: die Operationsregister 30, welche in zwei Gruppen (KA, HB) 31, 32 unterteilt sind, von denen jede aus 16 Acht-Bit-Registern besteht, die von jetzt ab mit AO bis A15 und BO bis B15 bezeichnet werden sollen; eine arithmetische Einheit 35, welche aus drei Blöcken (UA, FB und UC) 36 bis 38 mit einer Parallelität von 8 Bits gebildet wird; das Register (DI) kO, bestehend aus Schaltelementen, die Verschiebeschaltung (ND) 4i, eine Eingangsschaltung für die Operationsregister, welche die Verbindungen NA und NB und zwei Register (BA und BB) kz und k3 und eine Schaltung zur Verbindung mit RAM 1,bestehend aus Verbindungen NO und NC,enthält, sowie eine Kanallogik k5, welche die Verbindung zwischen den peripheren Einheiten steuert und die simultane Operation der Zentraleinheit 3 überwacht.
Es folgt jetzt eine detaillierte Beschreibung der oben-genannten Blöcke.
3.1 Zeitgeber 20
Der Oszillator 21 erzeugt periodische Impulse, welche feste Perioden definieren, Maschinenzyklen genannt, die jeweils für einen Zeitraum andauern, der für die Ausführung einer Elementaroperation notwendig ist (beispielsweise Auslesen aus einem Operationsregister 30, Heraufsetzen und Wiedereinschreiben in das Operationsregister 30)·
Während des Maschinenzyklus werden Signale durch die Schaltung 20 erzeugt, deren Dauer und Position innerhalb des Maschinenzyklus festliegt.
509828/07 8 3
Die Funktion dieser Signale wird dadurch festgelegt, daß sie auf die Schaltungen der Zentraleinheit 3 einwirken oder nicht einwirken, je nachtien Bedingungen, die durch die Sequenzlogik-Matrix 28 in einer im Folgenden zu beschreibenden Weise gegeben
Die Arbeit der Zentraleinheit 3 und der Informationsaustausch mit den peripheren Einheiten erfolgt vollkommen synchron mit diesen Taktsignalen.
Zehn Signale werden durch die Schaltung 22 erzeugt und ihre Benutzung soll hier behandelt werden. Die Signale sindi
TO steuert das Zustandsregister 27, T1 taktet das Auslesen von ROM 2,
T2 taktet RAM 1,
T3A und T3N steuern das Register (RO) 26, T^A und TifN steuern die Register (BA und BB) *f2 und k"} und
das Register 40,
T5 die Register 31 und '32 sowie
T6 und T7 die Kanallogik V?. >
Fig. 3 stellt ein Zeitdiagramm dar, in dem die genannten Signale erscheinen.
Der Oszillator 21 und die Schaltungen 22 werden nicht im einzelnen beschrieben, da sie der allgemein üblichen Bauart entsprechen.
3.2 Ausführung der Mikroanweisungen
Vor der Beschreibung der übrigen Blöcke der Zentraleinheit 3» sollen die Mikroanweisungen, die durch die Zentraleinheit 3 für das erfindungsgeniäße Fehlerbefreiungssystem benutzt werden und ihre Ausführung kurz besprochen werden.
509828/0783
Die Ausführung einer Mikroanweisung kann in zwei Phasen zerlegt werden: eine ausführende Phase, die für alle Mikroanweisungen gleich ist und die adressierten Mikroanweisungen aus EOM 2 ausliest, die Ausführung derselben vorbereitet und den Adressierer von ROM 2 heraufsetzt. Diese Phase ist offensichtlich unabhängig von der gelesenen Mikroanweisung. In einer Ausführungsphase wird die Verarbeitung der Daten in Übereinstimmung mit der durch die in der vorangehenden Interpretationsphase ausgelesenen MikroanweiBung angegebenen Art und Weise vorgenommen. Die Interpretationsphase wird stets in einem einzigen Maschinenzyklus ausgeführt und die Konfiguration der Signale (von jetzt ab ."Befehle" genannt) liegt innerhalb der Grenzen des Zyklus fest. Die Konfiguration dieser Befehle definiert die auszuführenden Operationen und soll "Interpretationszustand" genannt werden. Das Vorliegen des Interpretationszustandes wird durch ein Flip-Flop SOOO des Zustandsregisters 27 (Fig. k) angegeben,-
Die Ausführungsphase wird in einem oder mehreren Maschinenzyklen durchgeführt, denen eine entsprechende Anzahl von Stadien' entspricht, die jeweils durch ein entsprechendes Flip-Flop des Registers 27 bestimmt wird. ·
Während der Ausführungsphase verbleibt der Code der betreffenden Mikroanweisung fest im Register 26, wohingegen der Zustand der Flip-Flöpe des Registers 27 den aktuellen Zustand definiert,-
Jeder Zustand bestimmt den nächsten in Abhängigkeit von dem Code der gelesenen Mikroanweisung. Am Ende der Ausführung einer jeden Mikroanweisung wird in den Interpretationszustand SOOO zurückgeschaltet um die nachfolgende Mikroanweisung aus EOM 2 auszulesen.
Während der zwei Phasen - der Interpretationsphase und der Ausführungsphase - erzeugt die Sequenzlogik-Matrix (MLS), an deren Eingang sich die Register 26 und 27 befinden, Befehle C, die den In-
509828/0 78 3 " 1.6 "
formationsfluß durch die Operationsschaltung oder andere Blöcke der Zentraleinheit 3 steuern.
Die Information gelangt dann zwischen den Blöcken der Zentraleinheit 3 über eine Anzahl von Und-Toren verschiedenen Typs, die durch von der Sequenzlogik-Matrix 28 erzeugte Befehle C gesteuert werden. In Fig. 2 werden diese Tore symbolisch in drei Zonen unterteilt dargestellt. Die mittlere Zone enthält das Steuersignal des Tors, das durch die Schaltung (MLS)28 erzeugt wurde. Wenn dieser Befehl anliegt, werden die Signale am Eingang des Tors in den folgenden Block übertragen, Die Xummernpaare, variierend von 00 bis 15 im oberen und im unteren Bereich der die Tore darstellenden Blöcke geben die Nummer des Bits an, das sie steuern, - genauer gesagt geben sie die zeitlichen Positionen dieser Bits jeweils am Ein- und am Ausgang des Tors an. Ein Tor, beispielsweise, das die Zahlen 07, 00 sowohl in der Eingangs- als auch in der Ausgangszone aufweist, überträgt 8 Bits parallel ohne Verzögerung. Auf der anderen Seite stellt ein Tor mit dem Zahlenpaar 03, 00 in der oberen Zone - d.h. am Eingang - und dem Zahlenpaar 07, O^ in der unteren Zone - d.h. am Ausgang - ein Tor dar, welches vier Bits überträgt, wobei diese um h Positionen nach links verschoben werden, Venn 07, 04 am Eingang und 03, 00 am Ausgang steht, so erfolgt das Verschieben um vier Positionen nach rechts. Wenn schließlich das dem Eingang zugeordnete Feld leer ist, so gibt dies an, daß die Bits von außen her in das Tor gelangen.
An dieser Stelle soll der Satz von Mikroanweisungen, der für das erfindungsgemäße Fehlerbefreiungssystem benutzt wird, beschrieben werden, wobei die anderen Mikroanweisungen, die durch die Zentraleinheit ausgeführt werden können, weggelassen werden. Die Mikroanweisungen haben jeweils ein bestimmtes Format von 16 Bits, was einem Wort von ROM 2 entspricht. Das Format der Mikroanweisungen stellt sich folgendermaßen dar:
15 11 07 03 00
509828/078 3
BAD ORIGINAL
Die Felder, jedes mit vier Bits, haben die folgenden Bedeutungen;
F ist der Operationscode der Mikroanweisung,
X gibt den ersten Operanden an,
Y gibt den zweiten Operanden an und
Z ist eine Erweiterung für eines der vorangehenden Felder.
Wenn die Felder X und Y als Operanden die Register A, B oder L der Operationsregister 30 angeben, so soll das bei den Mikroanweisungen durch die Symbole Ax, Bx, Lx, Ay, By bzw. Ly gekennzeichnet werden,
Die Mikroanweisungen werden in zwei Gruppen eingeteilt, die sich durch den unterschiedlichen Funktionscode unterscheiden, d.h. durch die unterschiedliche Binär-Konfiguration des Feldes F der Mikroanweisung.
Die Mikroanweisungen mit demselben Funktionscode werden in derselben Zustandsfolge ausgeführt.
3.3 Register (SO)27
Das Register 27 wird durch acht Flip-Flops (Fig. k) gebildet, welche die verschiedenen Maschinenzyklen unterscheiden. Es sind S000-S001-
Ihr Setzen wird gesteuert durch die Sequenz-Logik-Matrix 28 über die direkte Untersuchung des Feldes F der Mikroanweisung, welche im Register (RO) 2o vorliegt. Der Wechsel des Zustandes des Registers 27 findet mit der Vorderflanke des Signals TO statt, wobei dieses die erste Operation ist, die die Matrix 28 innerhalb der Grenzen eines Taktzyklus bewirkt.
5098 28/07 8 3 BAD ORIGINAL
Cie Signale S0k2, S043, S010 werden aus der Oder-Funktion bei den folgenden Zuständen erhalten:
SO if 2 = SOOJf + S002
SOkJ, = SOO^ + SOO3
SO10 = SOOO + S001
Fig. 5 stellt ein Zeitdiagramra dar, das sich auf den Zustand S010 bezieht, beginnend mit den Zuständen SOOO und S001. Die Zustände S0*f2 und S04j werden auf ähnliche Weise erzeugt. Es soll deshalb festgestellt werden, daß die Matrix 28 nur fünf Zustände erzeugt, nämlich SOOO bis SOOk, während die anderen drei Zustände davon abgeleitet werden.
Es soll schließlich festgestellt werden, daß allen Folgen ein Interpretationszustand SOOO vorangeht. Die Befehle, die durch die Matrix 28 in den jeweiligen Zuständen erzeugt werden, sollen im Verlauf der Beschreibung erläutert werden.
3-k Anweisungsregister (RO) 26
Das Register 26 enthält 16 Flip-Flops, welche eine Serien-Parallel-Ur.wandlur.g des Codes der Mikroanweisung derjenigen Information vornehmen, die aus ROM bei der Adresse, die durch das Operationsregister 30 vorher bestimmt wurde, ausgelesen worden ist.
Die sechzehn Flip-Flops teilen sich in zwei Gruppen zu acht auf. Die an; wenigstens bedeutsamen Bits werden durch das Signal TJN gesteuert, die anderen durch das Signal T3A.
-19 -
509828/0 7 83 BAD ORIGINAL
Die Erzeugung der Signale T3N und T3A erfolgt nur in den beiden Zuständen, in denen aus ROM ausgelesen wird, das ist der Interpretationszustand SOOO aller Mikroanweisungen und der Zustand S001 der Mikroanweisung ROMA.
Durch die Anstiegsflanke der Signale T3N und T3A werden die sechzehn Bits, die aus ROM 2 ausgelesen wurden, durch das Register (RO) 26 einer Serienparallelumwandlung unterzogen und legen den Code der auszuführenden Mikroanweisung fest.
Die Information verbleibt während des folgenden Ausführungszustandes unverändert im Register, wie es in Fig. 6 dargestellt ist.
Vie bereits erwähnt, findet im Zustand SOOl der Mikroanweisung ROMA ein zweiter Lesevorgang von ROM statt. Die acht Flip-Flops die den am wenigsten bedeutsamen Bits des Registers 26 entsprechen, werden durch das Signal T3N durch die acht bedeutsamsten oder am wenigsten bedeutsamen ausgelesenen Bits gesetzt. Das hängt ab vom Wert des Bits 07 des Registers B2.
3.5 Die Operationsregister 30
Die Operationsregister 30 sind in zwei Serien angeordnet, die mit A und B bezeichnet werden und aus jeweils sechzehn Registern bestehen, die jeweils eine Kapazität von acht Bits haben (Fig. 8).Die Bits der Register jeder der beiden Serien mit demselben Gewicht - beispielsweise der Serie A - sind in einer h χ h Matrix (Fig. 7) angeordnet, so daß sich acht k χ k Matrizen ergeben, in denen die ersten Bits jeweils das Register AO bilden, die zweiten Bits das Register A1 usw.
Zur Auswahl eines Registers - beispielsweise des Registers Al 5 - ist es ausreichend, auf eine der acht Auswahlleitungen, die in Fig. 7 dargestellt sind, acht Befehle C02** bis C031 zu senden, die die Form 10000001 haben.
50
Die Befehle 002^ bis CO31 werden selbstverständlich durch die Sequenzlogik-Matrix 28 erzeugt, welche für die Felder X und Y der Mikroanweisungen sowohl die Auswahlbefehle (C02^ bis CO31) als auch die dazugehörigen Zustände (eingegeben in SO) mittels einer der beiden Registersätze erzeugt. Im einzelnen wählt der Zustand SO^fJ eines der Register der Serie B aus, während der Zustand S0^2 ein Register der Serie A auswählt. Der Zustand SOIO bezieht sich dagegen auf ein Register mit der Länge von sechzehn Bits, das ähnlich wie die A-und B~Register aufgebaut ist und als •'Langregister" - gekennzeichnet durch den Buchstaben L - bezeichnet werden soll. Das Einschreiben eines Teils der Information, die in dem Register 30 vorhanden ist, in das Register hZ und kj> wird, wie bereits erwähnt, durch das Signal T5 (Fig. 2) getaktet. Jetzt wählen die durch die Matrix 28 erzeugten Befehle
CTO^ bis CT07 die in die Register 31 und 32 mit einer Gleichzeitigkeit von vier Bits zu übertragenden Daten aus, so daß es möglich ist, eines der Register A oder B oder eines Teils derselbe^ zu verändern, wobei der Rest unverändert bleibt.
Ji. 6 Arithmetische Einheit 35
Die arithmetische Einheit 35 führt arithmetische und logische Operationen bezüglich des Inhalts der Operationsregister 30 aus. Sie besteht aus den beiden Addierer darstellenden Blöcken (UA und UB) 36 und 37 mit einer Parallelität von acht Bits und einem eine logische Schaltung darstellenden Block (UC) 38· Die beiden Addierer (UA und UB) J>6 und 37 sind derart verbunden, daß sie zusammen einen Sechzehn-Bit-Addierer bilden. Es sind jedoch nur bei bestimmten Operationen, d.h. wenn ein Langregister (L) betroffen ist, alle sechzehn Ausgänge des Addierers significant.
Die Schaltung (UC) 38, in das das Ergebnis von UA als erster Operator eingegeben werden kann, führt die logischen Oder-, Und- und Exclusiv-Oder-Funktxonen aus.
- 21 -
509828/0783
Mittels des Dekoders 30 (Fig. 2b) liefert die arithmetische Einheit 35 darüberhinaus Information über das Ergebnis der arithmetischen und logischen Operationen, die im Flip-Flop D02 auf die von der logischen Matrix (MLS) 28 erzeugten Befehle CD11 und CD12 hin gespeichert sind. Der Zustand des Flip-Flops wird mittels der Befehle SADO und SADI abgefragt, um bedingte Sprünge zu bewirken.
3.7. Schaltelemente (Register *fO)
Die das Register *fO bildenden Schaltelemente bestehen aus ahht Flip-Flops (DOO bis D07) welche eine Serienparallelumwandlung für Ereignisse durchführen, die während der Ausführung einiger Mikro-, anweisungen auftreten. Ihr Inhalt wird während der Ausführung derjenigen Mikroprogramme, die Adressen-Sprunganweisungen in die Adressierer von ROM 2 bedingen, abgefragt. Sie werden automatisch durch logische Mikroanweisungen (Und, Oder usw.) bewirkt, um das Ergebnis der ausgeführten logischen Operationen zu speichern.
Jedes einzelne Schaltelement (Flip-Flop) kann darüberhinaus durch eine Mikroanweisung REDI bzw. SEDI auf Null oder Eins (Tabelle A) gesetzt werden.
Im Format der Mikroanweisung (Tabelle A) bilden die drei am wenigsten bedeutsamen Bits des Feldes X die binäre Adresse (00 bis 0?) des betreffenden Schaltelementes.
50 9 828/0783
Einige Mikroanweisungen (TADI-TBDI-SADl) überführen die
acht Bits des ausgewählten Registers A oder B in die acht
Flip-Flops (siehe Tabelle A). Einige arithmetische oder
logische Mikroanweisungen (Und, Oder, ORE, ADD) setzen
jedoch die FlipTFlops mit ihrem qualitativen Ergebnis, d.h. im einzelnen, daß das Schaltelement DOI das Auftreten eines Null-Ergebnisses von der arithmetischen Einheit 35 festhält,
Die Schaltelemente des Registers kO ändern ihren Zustand zu zwei verschiedenen Zeiten. Die Schaltelemente (Flip-Flops)
DOO bis D03 kippen mit dem Signal T4N, während die Schaltelemente (Flip-Flops) OOk bis D07 mit dem Signal T^A kippen,
3.8 Verschiebeschaltung kl
Durch diese Schaltung, die aus Schaltungen vom Und-Oder-Typ besteht, ist es möglich, einen Informationsfluß unter allen möglichen Verbindungen (NA, NB) der Eingangsschaltung zu den Operationsregistern (Gruppen 31 , 32) zu ermöglichen. Die
Verschiebeschaltung 41 wird aus einer Gruppe von acht Toren gebildet, die in zwei.Untergruppen, die mit den Operationsregistern (RA und RB) 31 und 32 verbunden sind, unterteilt
ist. Jede dieser beiden Untergruppen kann ein Verschieben
oder einen Umlauf von Daten, die aus dem Operationsregister 30 kommen, bewirken, wie es symbolisch in Fig„ 2b dargestellt ist. Jedes Tor der beiden Untergruppen wird durch eine Kombination von drei Bits der Mikroanweisungen SHSB, und
ROTB angesteuert, die auf
- 23 -
50982 87 0783
diese Schaltung einwirken. Die Kombinationen sind in Pig. 2b symbolisch durch die Bezeichnungen GZOO bis GZ07 angegeben, während die anderen beiden Tore der Schaltung 41 direkt angesteuert werden und dazu dienen, die Bedingungen oder Null in die Schaltelemente einzugeben. Ein weiterer Eingang zur "Verschiebeschaltung 41 ist durch ein Tor 70 gegeben, welches mit der Kanallogik 45 mittels des Datenkanals D verbunden ist. Dieses Tor 70 gestattet die Einführung von Daten, die aus peripheren Einheiten mittels der Kanallogik 45 über die Verbindungen NA oder NB in die Operationsregister 30 gelangen.
3.9« Eingangsschaltung zu den Operationsregistern
Dies ist eine Schaltung, die mit den Operationsregistern 31 und 32 verbunden ist. Sie bewirkt, daß das Byte, welches zu den Operationsregistern 31 und 32 geführt und in diese eingeschrieben werden soll, ausgewählt wird.
Dieses Netzwerk wird durch die Verbindungen NA und NB und die Register (BA und BB) 42 und 43 gebildet. Die Verbindungen NA und NB sind zwei Schaltungen, die - jede mit einer Parallelität von 8 Bits - die acht möglichen Informationswege zu den Operationsregistern 31 und 32 mittels der Befehle CAOO bis CA07, die durch MLS 28 erzeugt werden, auswählen.
Die ausgewählte Information kann aus den folgenden Einheiten stammen:
arithmetische Einheit 35 (zwei Wege),
Verschiebeschaltung (ND) 41,
ROM.2, '
RAM 1,
Bedienungsfeld 7 (zwei Wege) und
Kanallogik;45.
Die Register (BA und BB) 42 und 43 halten die Information fest,
509828/0783
- 2k -
die an den Verbindungen NA und NB, ausgewählt durch einen der Befehle CAOO bis CA07 in Gegenwart des Signals TU, vorliegt. Der Inhalt von BA und BB 42 und 43 kann - je nachdem ob die zuvor beschriebenen Befehle CT04 bis CT07 aktiviert sind - in die Operationsregister 31 unc* 32 eingeschrieben werden.
3.10 Verbindungsschaltung für RAM 1
Die Zentraleinheit 3 ist mit dem Eingang des Speichers RAM über die Verbindung NO mit einer Parallelität von 16 Bits (Νόθο bis 015) verbunden. Diese Verbindung wird während der Ausführung der Mikroanweisungen zum Einschreiben in den oder zum Auslesen aus dem Speicher aktiviert.
In beiden Fällen liefert die Verbindung NO die Adresse, zu der ein Zugriff gewünscht wird, und nur beim Einschreiben von Mikroanweisungen liefert sie die Zeichen (8 Bits), die gespeichert werden sollen.
Der Ausgang von RAM 1 wird durch die Verbindung NC mit einer Parallelität von 8 Bits (NCOO bis 07) gebildet und nur im Falle des Auslesens benötigt.
Alle diejenigen Mikroanweisungen, welche ein Auslesen aus oder ein Einschreiben in RAM 1 bewirken, werden innerhalb von 3 Maschinenzyklen ausgeführt! im ersten Zyklus SOOO findet die Interpretationsphase statt, im zweiten Zyklus S004 wird die Adresse in RAM 1, bei welcher die Mikroanweisung wirksam ist, auf die Verbindung NO gegeben.
Die Register, die nicht mit der Verbindung NO als Adressieier verbunden werden können, sind das Register (RO) 26- wenn Zugriff zu einer Adresse unter 225 (d.h. in der reservierten Zone
509828/0783 - 25 -
von SAM 1) gewünscht wird oder das Registerpaar (AB oder BA) wenn Zugriff zu irgendeiner Adresse von RAM 1 gewünscht wird. In Fig. 2 werden die Adressierbefehle des Speichers RAM 1 durch die Befehle CMO3 bis CMO7 dargestellt. Der Befehl CMO3 steuert das Register RO an, während die Befehle CM04 und CM05 die Register (RA und RB) 31 und 32 ansteuern.
Aus dem Zustand S004 geht die Anlage über in den Zustand S002 oder S003, entsprechend dem Typ der auszuführenden Mikroanweisung.
Die Anlage geht in den Zustand S002 bei all denjenigen Mikroanweisungen, denen ein Register B die einzuschreibenden Daten liefert oder die ausgelesene Information erhält.
Sie geht jedoch in den Zustand S003 über, wenn ein Register A beim Einschreiben oder Auslesen betroffen ist.
Innerhalb der Grenzen der Zustände S002 und S003 ist es notwendig, zwei verschiedene Punktionen zu unterscheiden:
1. In der Schreib-Mikroanweisung wird mittels der ersten acht Bits (NOOO bis 007) der Verbindung NO derjenige Datenteil - begleitet von dem Signal T2 - übersandt, der in den Speicher (bei der Adresse, die bereits im Zustand S004- angegeben worden ist) einbeschrieben werden soll. Der Ausgang ITG des Speichers ist nicht signifikant und unbenutzt.
Die einzuschreibende Information kann aus den Registern (RA und RB) 31 und 32 oder von peripheren Einheiten mittels der Kanallogik 4-5 übertragen werden, wenn die Befehle CM04, GM06 bzw. GMO? von MLS 28 erzeugt werden.
2. Beim Lesen von Mikroanweisungen ist auf der anderen Seite die Verbindung NO nicht wesentlich und wird durch RAM nicht benutzt. Statt dessen ist der Ausgang NC wesent-
5 0 9828/0783
- 2.6 -
2458657
lieh und kann zu einem B Register übertragen werden» wenn der Zustand S002 und der Befehl CA05 vorliegen oder aber an ein A Register, wenn der Zustand S003 und der Befehl CAO5 vorhanden sind.
Die Blöcke der Zentraleinheit 3 und die durch MLS 28 erzeugten Befehle zur Steuerung des Informationsflusses zwischen den einzelnen Blöcken sind in der vorhergehenden Darstellung beschrieben worden. Die Matrix (MLS) 28 ist nicht eingehend behandelt worden, da es sich hierbei lediglich um eine Matrix handelt, in der die Zeilen dur-h die Ausgänge der Register 26 und 27 und die Spalten durch die Leiter, auf denen die Befehle C erzeugt werden, gebildetwerden.Bedingungen für die Matrix (MLS) 28 werden darüber hinaus durch den Zeitgeber 20 in Form von Befehlen geeigneter Folge erzeugt.
Bezüglich weiterer Einzelheiten betreffend MLS 28 soll auf das Buch "Microprogramming, Principles and Practices", von Sarair S. Husson, erschienen 1970 bei Prentice-Hall Inc., Snglevood Cliff, N.J., United States of America verwiesen werden. Im Kapitel 2 ist das Prinzip dargestellt und an einer Reihe von konkreten Beispielen erläutert, nacbjdem eine Folge von Befehlen, die zur Ausführung von Mikroanweisungen geeignet ist , erzeugt werden kann.
Kanallogik 45
Die Kanallogik 45 ist ein Komplex von Schaltungen, die geeignet ist, den Austausch von Daten und Befehlen zwischen
509828/0783 - 27 -
der Zentraleinheit 3 und den'damit verbundenen peripheren Einheiten k zu handhaben und zu koordinieren. Ausgeschlossen davon ist das Steuerpult 7» welches direkten Zugriff zur Zentraleinheit 3 über die Verbindungen NA und NB hat.
Eine detaillierte Beschreibung der Kanallogik h$ findet sich in der DT-OS 2 059
An dieser Stelle ist es lediglich notwendig, darauf hinzuweisen, daß die Kanallogik k% die Mikroanweisungen mit verschiedenen Prioritäten, die im Prozessor vorhanden sind, auf der Grundlage der feststehenden Prioritätsordnung verarbeitet.
Der Grund für den Einsatz der Kanallogik 45 besteht in dex Notwendigkeit, eine Möglichkeit zu haben, ein fortgeschrittenes Mikroprogramm zu unterbrechen, um ein Unterbrechungs-Mikroprogramm mit größerer Priorität ausführen zu können.
Beim vorliegenden Ausführungsbeispiel gibt es die folgenden vier Prioritätsstufen:
Das Hauptmikroprogramm "oder Mikroprogramm der Priorität ht das normalerweise die Funktion des Übersetzens und Ausführens von Anweisungen des Programms durch Verarbeitung von Daten und Start der Eingangs- und Ausgangsoperationen hat,.
ein Mikroprogramm der Priorität 3» das normalerweise zur Ausführung von Operationen bestimmt ist, die nicht innerhalb der vorgegebenen Zeitfolge des Programms vorkommen, (beispielsweise Vorbereitungen von Unterbrechungen des Programms, mikroprogrammierte Steuerung von Eingangs-Ausgangs-Operationen) und
Mikroprogramme der Prioritäten 2 und 1, die normalerweise dazu dienen, Daten aus einer peripheren Einheit in den Speicher und umgekehrt zu übertragen.
- 28 -
509828/0783
Zu jedem Mikroprogramm gehört ein Adressierregister, wie es in Fig. 8 dargestellt ist. Im einzelnen wird die Prioritätsstufe 4 durch das Register LOO adressiert, die Stufe 3 durch das Register L01, die Stufe 2 durch das Register Δ13 und die Stufe 1 durch das Register A12.
Die Übertragung von Daten aus den peripheren Einheiten zu der Zentraleinheit 3 findet auf zwei verschiedene Weisen statt. Die erste wird gesteuert durch das Tor 39» welches einen direkten Zugriff zu RAM 1 über die Verbindung NO (Fig» 2c) gestattet. Dieses Tor wird durch Mikroanweisungen für direkten Zugriff zu RAM 1 gesteuert, die bereits weiter oben beschrieben worden sind. Die zweite Art wird durch das Tor 70 der Verschiebeschaltung 4-1 gesteuert und gestattet den Zugriff zu den Operationsregistern 30 und 31 über die Verbindungen NA und NB. Die Daten und Befehle aus den peripheren Einheiten, die in die Operationsregister 30 und 31 eingeschrieben sind, werden direkt durch den Satz von Mikroanweisungen, der auf die Register einwirkt, verarbeitet.
4·. Ausführliche Beschreibung von RAM 1 und ROM 2
Sine Beschreibung desjenigen Teiles von RAM 1, der für die DBG-Programme benutzt wird, soll jetzt anhand von Fig. 9 gegeben werden. Die erste Zone, die reservierte Zone (ZRM) genannt wird, steht dem Übersetzer-Mikroprogramm und denjenigen Mikroprogrammen, die die peripheren Einheiten steuern, sowie den D3G-Programmen zur Verfügung.
Die zweite Zone steht dagegen der Aufzeichnung von auszuführenden Programmen, den Daten, die diese Programme behandeln und den Ergebnissen der Verarbeitungsoperationen offen.
509828/0783 -29-
Bevor RAM 1 im einzelnen beschrieben wird, ist es notwendig, kurz die Operationen, die von einem in ROM 2 - "Übersetzer" genannten - Mikroprogramm ausgeführt werden zu beschreiben. Dieses Mikroprogramm, das im einzelnen weiter unten beschrieben werden wird,führt die nachfolgenden Operationen aus:
übersetzung der vorliegenden Anweisung (Phase ALFA), Erkennung von Programmunterbrechungen, Start des Uhterbrechungsprogramm durch Erkennen, ob es in RAM 1 oder ROM 2 aufgezeichnet ist,
Verhinderung aller Unterbrechungen, einschließlich des Programms in der Startstufe,
Ermöglichen des Auslesens aus RAM 1 oder ROM 2, je nachdem, ob das ünterbrechungsprogramm in RAM 1 oder in ROM 2 vorhanden
Ausführung des Auslesens der Anweisung aus RAM 1 oder ROM 2, Erkennen des Formats der Anweisung,
Herausziehen der Operanden und
Ausführung der Anweisungen durch Start des zugehörigen Mikroprogramms (Phase BETA).
Im einzelnen umfasst ZRM ein Register (PSR) 300 (Fig. 9), das die Parameter des Programms im Laufe der Verarbeitung enthält und aus den folgenden Registern (vgl. Tabelle ) besteht:
Ein Basisregister (RB) 310, das die Anfangsadresse der für die normalen Programme zugänglichen Speicherzone enthält. Das Register (RB) 310 wird durch den übersetzer zum Ermitteln der Adressen für die Operanden, die in den Anweisungen enthalten ist, benutzt. Es wird durch geeignete Anweisungen während der Ausführung der Programme modifiziert.
509828/07 8 3 _ 30 -
TABELL.E. Kurabez. § Zahl d.
Bytes
Adresse
von nach
00B1
Register
Nr.
Bezeichnung RB, NN 2 00B0 00B3
310 Basisregister P1 ■ 2 00B0 00B5
311 ' Zeiger 1 P2 2 00B^
312 Zeiger 2 CP 1 00B6 •MM»
313 Programmbe dingunge η PI 1 00B7
31* Unterbrechungsreservierg· MI Ο 1 00B8 00D1
315 Anweisungsmodifizierung RB. VX
ßi
O
2 00D0 00D3
320 Basisregister P1 2 00D2 00D5
321 Zeiger 1 P2
CP
2
1
00D6 .—
■ 322
323
Zeiger 2
Programrabedingungen
CI O 1 00D7
324· Unterbrechungscode MI NN
«
1 00D8 00DB
325 Anweisungsmodifizierung· IR 2 00DA
327 OPS3 - Adresse CP 1 00BC
333 Programnbedingungen , AI 1 00BD 00BF
33* Unterbrechungseinschaltg, II 2 00BE 00ED
335 Unterbrechungsadresse IS 2 00SG
350 Stop - Adresse 33D 1 00C7 00AF
351 , D3G - Hilfsbyte RL 8 00Λ8 00D6
352 Arbeitsregister ITS 3 00Dk
353 Referenztabellenadresse
50982.8/0783
Die Zeigerregister (P1 und P2) 311 und 312 sind Rgister, die von einer bestimmten Anweisung benutzt werden, um die genaue Adresse des Operanden zu-ermitteln. Diese Adressen ergeben sich durch Addition von P1 331 oder P2 312 zu RB 310. Ihr Inhalt kann durch besondere Anweisungen verändert werden.
Das Programm-Bedingungsbit, das in Fig. 9a dargestellt ist, hat die folgende Bedeutung: ,
Die Bits 00, 01 werden Bedingungscode (CC) genannt und durch arithmetische und logische Anweisungen zum Speichern der entscheidenden Ergebnisse aufgestellt. Diese Bedingungen werden durch andere Anweisungen abgefragt, um bedingte Sprünge auszuführen. Das Bit 03 wird durch den Übersetzer benutzt um festzulegen, ob die auszuführende Anweisung aus RAM 1 (Bit 03 = 1) · oder aus ROM 2 (Bit 03 = θ) ausgelesen werden soll. Dieses Bit ist normalerweise "Eins" und wird durch das Übersetzungs-Mikroprogramm nur dann auf "Null" gesetzt, wenn dieses eine Unterbrechung, die durch Betätigung der Taste 100 erzeugt wurde, erkennt, die ein in ROM 2 befindliches DBG-Programm abruft, um anzuzeigen, daß die Anweisungen dieses Programmes in ROM 2 ein-» gelesen werden müssen. Das Bit 05 ist normalerweise bei "Eins" und wird benutzt, um dem Programmierer Unterbrechungen wegen DBG-Anforderungen zu ermöglichen und wird durch den Übersetzer auf Null gesetzt, wenn eine Unterbrechung ausgelöst ist. Die Bits 02, Ok, 06, 07 werden nicht durch die DBG-Pr.ogramme benutzt und dienen dazu, Unterbrechungen aus anderen Gründen zu ermöglichen.
Ein Unterbrechungsreservierungsbyte (Pi) 31^ (Fig· 9) wird durch den Unterbrecher benutzt, um eine darin enthaltene Unterbrechung auszulösen. Eine Unterbrechung wird dann ausgelöst, wenn die von PI und CP gebildete Und-Funktion von Null verschieden ist, wie es weiter unten beim Übersetzer-
- 32. -
509828/078 3
Byte teil beschrieben werden wird. Diese"srwird aufgestellt durch die Mikroprogramme, die mit Unterbrechungsgründen zusammenhängen, die sowohl aus der Zentraleinheit 3 als auch aus den peripheren Einheiten 4 stammen. Das Bit 05 gibt dabei eine DBG-Unterbrechung an.
Die Art und Weise, in der das Bit 05 des Unterbrechungs-Reservierungsbytes auf 1 gesetzt wird, soll anschließend in dem Teil der das Fehlerbefreiungs-Hilfsbyte (Tabelle E) betrifft, im einzelnen beschrieben werden.
Ein Anweisungs-Modifizierungsbyte (MI) 315 (Pig· 9) wird durch den Übersetzer benutzt, um das zweite Byte der auszuführenden Anweisung zu modifizieren und kann durch den Programmierer in Abhängigkeit der Ergebnisse der vorangehenden Anweisungen aufgestellt Werdens.
Die Bytes 316, 317 und 318 werden für andere Zwecke benutzt, die nicht die Erfindung betreffen und daher nicht näher erläutert zu werden brauchen.
ZRM enthält darübeilhinaus ein weiteres Register (OPSR) 301, das dazu dient, die Parameter des unterbrochenen Programms aufzunehmen. OPSR 301 wird durch den Übersetzer angesteuert durch Übernahme entsprechender Register und Bytes aus dem Register (PSR) 300. Wenn das Unterbrechungsprogramm beendet ist, dient die letzte Anweisung stets der Wiederaufnahme des unterbrochenen Programms, das ist eine Anweisung, die OPSR 301 nach PSR 300 überträgt. Im einzelnen enthält das Register (OPSR) 301:
Die Register RB 320, P1 321, P2 322, CP 323, MI 325, 326, die mit dem Inhalt der entsprechenden Register 310 bis 316 von PSR 300 versehen werden.
Das Register 324 enthält den Unterbrechungscode OI (Fig. 9b),
509828/0783 -33-
-33- 2458657
das ist der Code, der eine Unterbrechung im Ablauf des gerade ausgeführten Programms bewirkt. Er wird durch den Übersetzer aufgestellt bevor das Unterbrechungsprogramm aktiviert wird. Das bewirkt eine Unterbrechung, die durch CI bestimmt wird und in fünf gleiche Klassen unterteilt ist, die jeweils durch ein unterschiedliches Mikroprogramm gesteuert werden. Jeder Klasse entspricht ein Bit von CI, die Klassen 1 und 2 entsprechen dabei einem einzigen Unterbrechungsgrund und werden durch die Bits 01 bzw. 02 identifiziert. Die Klassen 3, 4 und 5 werden durch die Bits 05» 06 bzw. 07 identifiziert, wobei jedes eine Vielzahl von Unterbrechungsgründen enthält (höchstens 16), die durch die Bits 00 bis 03 identifiziert werden.
Der Grund den Unterbrechungscode (CI)für die.Ursache der Unterbrechung in OPSR 301 aufzuzeichnen, ist die Tatsache, daß die Wiederaufnähme oder NichtWiederaufnahme des unterbrochenen Programms von der Art der Unterbrechung abhängt. Wenn beispielsweise der Unterbrechungsgrund so geartet ist, daß das unterbrochene Programm nicht wieder aufgenommen werden kann, muß das Unterbrechungsprogramm mit dem Ruf nach dem . Operator enden. Erst nach dem Eingriff diese Operators ist es möglich, das unterbrochene Programm fortzusetzen.
Das Register (IR) 32? enthält die Wiedereintrittsadresse von PSR 300, der diejenige Anweisung entspricht, welche in dem Moment des Neubeginns auszuführen ist. Sie wird durch den Übersetzer dadurch aufgestellt, daß der Inhalt des Operationsregisters LO? (Programm-Adressierer) im Augenblick der Unterbrechung festgehalten wird.
ZRK enthält darüber hinaus ein Register (IPSR) 302, welches dazu dient, die Parameter des Unterbrechungsprogrammes aufzunehmen. Das Register enthält ein Byte (CP) 333, das die
509828/0783
damit verbundenen Programmbedingungen angibt. Das Byte CP hat die Bedeutung, die in Fig. 9a angegeben ist und wird in das Register (CP) 313 durch den !übersetzer im Augenblick des Einschaltens des ünterbrechungsprogramms überführt.
Das Register (IPSR) 302 enthält darüber hinaus die Unterbrechungsprogramm-Adresse (II) 335 (Fig. 9), welche in das Register L07 der Register 30 (Fig. 2b) durch den Übersetzer eingegeben wird, wenn das Unterbrechungsprogramm in RAM 1 eingespeichert wird.
Das Register 302 enthält außerdem das Unterbrechungseinschaltungs-Byte (AI) 34-3, das in Fig. 9c dargestellt ist, in dem die Bits 01, 02, 05, 06 und 07, wenn sie sich im 1-Zustand befinden, angeben, daß die der entsprechenden Unterbrechungsklasse zugeordneten Programme in RAM 1 aufgezeichnet sind und, wenn sie sich im Null-Zustand befinden, daß die Programme in ROM 2 aufgezeichnet sind.
Im einzelnen führt der Übersetzer die logische Und-Funktion zwischen dem Unterbrechungsp.ode (CI) und dem Unterbrechungs-Einschaltungsbyte (AI) aus. V/enn das logische UND Null, ergibt, soWird damit angezeigt, daß das zu der Unterbrechung gehörige Programm in ROM 2 aufgezeichnet ist, und wenn es eins ergibt, so heißt dies, daß sich das Programm in RAM 1 befindet.
Im ersten Fall schreibt der Übersetzer den Inhalt des Registers (II) 335 in das Operationsregister L07 ein und im zweiten Fall schreibt es darin die Adresse der für DBG-Programme reservierten Zone B in ROM 2 ein.
Zusätzlich enthält ZRM ein Register (IS) 350,' das in Fig. 9 dargestellt ist und die Stop-Adresse aufweist, bei der die Bedienungsperson den Ablauf des Programmes anzuhalten
- 35 -
509828/0783
wünscht, wie es bereits eingangs erwähnt wurde und hier noch einmal eingehender beschrieben werden soll. Dieses Register wird durch ein DBG-Programm gesetzt, wobei die vom Programmierer über das Tastenfeld eingegebenen Daten benutzt werden.
In ZBM ist außerdem ein DBG-Hilfsbyte (BSD) 351 enthalten. BSD 351 ist im einzelnen in Fig. 9d dargestellt. Die Bits, die im Bit 01 benutzt werden, zeigt an, ob eine im Augenblick der Unterbrechung vorliegende Anweisung noch ausgeführt werden soll oder nicht (wie es eingehender im den Übersetzer betreffenden Abschnitt erläutert werden wird). Wenn dieses Bit gleich Null ist, wird die Anweisung ausgeführt. Im anderen Falle wird das Unterbrechungsprogramm ausgeführt* Das Bit 02 gibt ab, ob ein Halt reserviert worden·ist, es wird durch das DBG aufgestellt, das mit dem adressierten Halt zusammenhängt. Das Bit 03 gibt an, ob der Umschalter 100 sich in seiner Nor— malposition (Bit 03 = 0) oder in seiner Fehlerbefreiungs-Position (Bit 03 = 1) befindet. Es wird aufgestellt durch ein Mikroprogramm, das von der Position des Umschalters 100 abhängig ist.
Mittels des Umschalters 100 im Bedienungsfeld 7 wird ein Kontakt 60 geschlossen, der über die Leitung 61, die einen Teil des Kanals 62 bildet, direkt an die Verbindung NA angeschlossen
Wenn sich der Umschalter 100 in seiner Normal-(N)-Position befindet, ist der Kontakt 60 geöffnet und die Leitung 61 befindet sich infolgedessen auf dem Null-Pegel. Wie bereits gesagt, entspricht dies dem Normalzustand der Anlage. Befindet sieh der Umschalter 100 jedoch in seiner Fehlerbefreiungs-(DBG)-Position, so ist der Kontakt 60 geschlossen und die" Leitung 61 befindet sich auf dem Eins-Pegel.
509828/0783 - 3* -
Der Zeitgeber 20 erzeugt alle 60 Millisekunden ein Signal TM, welches eine Unterbrechung der Mikroprogramme der Stufe 4- (d.h. der Übersetzer-Mikroprogramme) bewirkt und führt die Mikroanweisung aus, die durch das.Register L01 (Adressierer der Mikroprogramme von Stufe 3) adressiert sind. Diese Mikroanweisung bildet einen Teil der vorbestimmten Folge von Mikroanweisungen, welche den verschiedenen externen Bedingungen entsprechen, die während des Ablaufs eines Programmes überprüft werden müssen.
Genauer gesagt ist im Augenblick TM im Register L01 die Adresse gegenwärtig, die dem entsprechenden Mikroprogramm IDISO zugeordnet ist.
Mittels einer Mikroanweisung MAD wird der Inhalt der Zelle mit der Adresse odiagonal gestrichen C7, das ist das DBG-HilfsbyiP (BSD) 351, in A10 eingespeichert. Anschließend wird mittels der Mikroanweisung CRTA die Zahl "17" = 11110111 in das Register B02 eingespeichert. Mittels einer Mikroanweisung AOT)A wird die logische Und-Funktion von BDS und "F7" in Δ10 überführt, d.h.-, daß sich in A10 das Fehlerbefreiungs-Hilfsbyte(BSD) mit dem Bit bO3 » 0 befindet.
Anschließend wird mittels der Mikroanweisung TGCA das im Kanal 62 vorhandene Byte (vgl. Fig. 2) nach A08 überführt. Das heißt im einzelnen, daß wenn der Umschalter 100 in der DBG-Position ist, sich die Leitung 61, welche dem Bit 02 im Kanal 62 entspricht) sich im Eins-Zustand befindet. Mittels einer Mikroanweisung TADI wird das Byte im Kanal 62 zu den Schaltelementen des Registers 40 überführt. Dann wird mittels der Mikroanweisung CRTB die Zahl "00" in das Register B02 eingegeben. Anschließend wird der logische Zustand des Schaltelementes D02, das die Bedingung der Leitung 61, welche der DBG-Position des Umschalters 100 entspricht, enthält, abgefragt. Wenn sich dieses Bit im 1-Zustand befindet, wird die
- 37 -
509828/078 3
Zahl "08" = 0001 mittels der Mikroanweisung CRTB in das Register B02 eingegeben und die logische Oder-Funktion (Mikroanweisung ORA) wird dann zwischen den Inhalten der Register A10 und der Zahl "8" gebildet. Es soll festgehalten werden, daß das Hilf sbyte (BSD) mit dem Bit 03 = 0 in dem Register A10 festgehalten worden ist und das Ergebnis der Mikroanweisung ORA daher das Bit Ό3 auf eins setzt.
Wenn sich dagegen das Bit auf der Leitung 61 auf dem Null-Pegel befindet, wird die Mikroanweisung CRTB, welche 00001000 in B02 eingibt, nicht ausgeführt, so daß die logische Oder-Punktion zwischen den Inhalten des Registers A10 und der Zahl "00000000" ausgeführt wird, was bedeutet, "daß das Bit 03 von BSD auf Null bleibt.
Nach diesen Operationen wird die Position 00C7 (BSD 351) mittels der Mikroanweisung AMD neu beschrieben und BSD auf diese Weise modifiziert. Wenn der Umschalter 100 in seiner Normal-Position ist, wird das Bit 03 = 0_, wenn er sich dagegen in der DBG-Position befindet, wirdA/03 =1. Das—selbe Mikroprogramm bietet darüber hinaus die Möglichkeit, das Bit 05 des Unterbrechungsreservierungsbytes (PI) aufzustellen. Mittels der Mikroanweisung MAD wird das Byte bei der Adresse 00B7 von RAM 1 aufgezeichnet, d.h. das Byte (PI) 314· wird in das Register A02 überführt.
Abschließend wird das Bit 05 von PI mittels der beiden Mikroanweisungen CTRB und ANDA zu Null gemacht. Mittels der Mikroanweisung TADl· wird der Inhalt des Registers A10 - das ist das HilfsbyteBSD, das kürzlich in Übereinstimmung mit der Position des Umschalters 100 modifiziert wurde, in das Register 40 übertragen.
Die Zahl "20" = 00100000 wird dann mittels der Mikroanweisung CRTB in das Register B02 eingeschrieben. Anschließend wird
- 38 -
509828/0783
mittels der beiden Mikroanweisungen SADI die Bits BO2 und B03 von BSD abgefragt, die vorher in das Register 4-0 eingespeichert worden sind und sich auf die Reservierung einer HALT-Adresse bzw. auf die Betätigung des Umschalters 100 beziehen. Wenn sich mindestens eines der abgefragten Bits im Ί-Zustand befindet,.setzt die Mikroanweisung ORA das Bit 05 des Bytes PI auf eins, welches mittels der Mikroanweisung AMD in RAM 1 wieder eingeschrieben wird. Wenn auf der anderen Saite beide Bits 02 und 03 von BSD sich im Null-Pegel befinden, wird durch die Mikroanweisung GRTB in das Register B02 die Zahl "10" = 00010000 eingegeben, welche einem anderen Unterbrechungscode entspricht, der nicht die Fehlerbefreiung betrifft und daher hier nicht beschrieben wird.
Außerdem enthält ZRM ein 8-Byte-Register, das als Arbeitsregister (RL) 352 (Fig. 9) bezeichnet und im Arbeitsbereich zum Akkumulieren der Teilergebnisse während der Ausführung einiger Instruktionen und zum Liefern eines Ergebnisses am Ende einer Anweisung, das nicht in den Registern für die Operanden enthalten sein kann (beispielsweise der Rest einer Division) benutzt wird.
AuSerdem gehört zu ZRM ein Acht-Byte-Register 359, das als Bedingungsregister RC bezeichnet wird. Jedes Byte unterteilt sich in zwei Semibytes, welche besondere Programmbedingungen angeben-r Das Register 359 wird benutzt, um alle signifikanten Programmbedingungen festzuhalten, die während der Ausführung von internen oder externen Anwexsungen auftreten und die im Hinblick auf ihre Zahl nicht im Bedingungscode ausgedrückt werden können oder welche günstigerweise unabhängig davon gespeichert werden.
Von allen Semibytes wird hier der Inhalt des neunten erläutert werden, da nur dieses für das DBG-Programm benutzt wird, wie im folgenden erläutert wird. Das neunte Semibyte nimmt die
50 9828/078 3 - 39 -
ersten vier Bits der Zelle 0 0CB ein und wird durch die über das Bedienungsfeld eingegebenen Anweisungen benutzt, um den Code der Taste 102 aufzustellen, durch deren BetätigungdieEingabe von Baten über das Tastenfeld beendet wurde.
Schließlich, enthält ZRM ein Einbyte-Register (AB) 370, das die Tasten 102 identifiziert, welche in Abhängigkeit vom Programm aktiviert werden. Das Register wird also gesetzt, wie aus dem folgenden ersichtlich sein wird, durch die DBG-Programme zum Aktivieren der Tasten SO, S1t" S2 und S6, da diese lediglich während der Fehlerbefreiung eine Bedeutung haben.
Schließlich enthält ZRM noch eine Gruppe von acht Registern 350 bis 367 (Fig. 9)> welche normalerweise durch das Programm folgendermaßen benutzt werden: Die Register 360 bis 363 werden zusammen mit dem Arbeitsregister 352 benutzt um Zwischenergebnisse während der Ausführung von Multiplikationen oder Divisionen aufzunehmen und Ergebnisse, welche nicht von den Operandenregistern aufgenommen werden. Genauer gesagt werden die Multiplikation- und Divisions-Anweisungen von Mikroprogrammen ausgeführt, die auf die genannten Register einwirken. Es soll festgestellt werden, daß der Inhalt dieser Register am Ende der Anweisung, die sie benutzt hat, nicht wesentlich ist, soweit alle signifikanten Bedingungen und Ergebnisse in Speicherzonen außerhalb von ZRM übertragen worden sind, die durch die Operanden der jeweiligen Anweisung adressiert wurden.
Die Register 364 und 365 werden durch die Anweisungen zur Ausgabe eines Registerinhaltes benutzt, d.h. sie, enthalten alle Zeichen, die si,ch auf Zeichensetzung, die algebraischen Zeichen (Plus-Zeichen, und Minus-Zeichen) die Zwischenräume usw. beziehen, die beim Ausdruck einer Speicherzone benötigt werden. Sie werden durch die Operanden dieser Anweisungen abgerufen und ihr Inhalt ist zum Ende einer solchen Anweisung nicht mehr· wesentlich. Die Register 366 und 367 werden durch das DBG- .
509828/0783
Programm als eine Erweiterung des Registers (OPSR) 301 benutzt. Das heißt, daß sie dazu dienen,, signifikante Bedingungen des unterbrochenen Programmes aufzunehmen, welche nicht iia Register (OPSR) 301 enthalten sind. Es soll festgestellt v/erden, daß während die Register 360 bis 365 am Ende einer sie benutzenden Anweisung keine signifikanten Daten enthalten, die Register 366 und 367 signifikante Daten zum Zwecke der Wiederaufnahme des unterbrochenen Programmes enthalten und deshalb durch die DBG-Programme nur in besonderen Fällen, die jetzt genannt werden sollen, benutzt werden können. Es soll darüber hinaus darauf hingewiesen werden, daß die Register 360 bis 367 nicht notwendigerweise den Positionen in RAM 1 zugeordnet sein müssen, wie es aus Fig. 9 hervorgeht, sondern sich in jeder Speicherzelle befinden können. Eines der wesentlichen Merkmale der Erfindung liegt in der Identifizierung in RAM 1 mittels der betreffenden Adressen_einer bestimmten Anzahl von Registern (in ciessn Fall acht)?nn Ende der Ausführung der Anweisungen keine signifikanten Daten enthalten und im Gebrauch dieser Register als Unterstützungsregister bei den Fehlerbefreiungsprograiamen. Dies geschieht selbstverständlich automatisch ohne Eingriff des Programmierers, der lediglich den Umschalter 100 und die Tasten 102 betätigen muß.
3s soll darauf hingewiesen werden, daß nicht notwendigerweise die Register 360 bis 367 als Unterstützungsregister für das D3G--Programm benutzt werden müssen und genau so gut Register, die ausschließlich für die DBG-Programme reserviert sind, benutzt werden können und sowohl innerhalb von ZRM als auch in einem freien Speicher oder sogar als Register außerhalb des Speichers angeordnet sein können.
Di-- freie Speicherzone- das ist die Zone, die sich unmittelbar an ZRM anschließt - enthält darüber hinaus eine Zone, die als Referenztabellenzone bezeichnet wird und deren Ort durch
509828/0 7 83 BAD 08!GINAL.
sin Register von ZRM bestimmt wird. Dieses Register (IiR) 353 weist drei Bytes auf, wovon die ersten beiden die Anfangsadresse der Tabelle bestimmen, während das dritte die Länge der Tafel selbst (maximal 256 Bytes) angibt. Die Referenztabelle wird durch die Operanden adressiert. Die freie Speicherzone, die sich der Referenztabelle unmittelbar anschließt, enthält sechzehn Register, jeweils von acht Bytes, welche privilegierte Register genannt werden. In der Tat können diese Register direkt durch Anweisung mittels Angabe ihrer Bezugsnummer in hexadezimaler Notation adressiert xverden. per übrige Teil von RAM 1 kann darüber hinaus frei adressiert werden.
RCK 2 teilt sich in zwei Zonen A und B auf (Fig. 9). Die Zone A enthält alle diejenigen Mikroprogramme, die die Arbeit des Prozessors betreffen, während die Zone B die DBG-Programme enthält.
5» Anveisunssinterpretations-Mikroprogramm (Übersetzer)
Wie bereits festgestellt wurde, werden die Programme von RAM 1 Anweisung für Anweisung ausgeführt. Jede Anweisung wird .wiederum in zwei Phasen ausgeführt: eine Interpretationsphase (Paase ALFA) und eine Ausführungsphase (Phase BETA). Die Ausführuiigsphase ist allen Anweisungen gemeinsam und wird durch geeignete Mikroprogramme, die Übersetzer genannt werden und in der Zone A von ROM 2 aufgezeichnet sind, ausgeführt. Diese Phase endet mit der Erkennung des Formats der Anweisung, die das ■Jbersetzermikroprogramm selbst aus RAM 1 oder ROM 2 ausgelesen hat und mit der Vorbereitung der Operanden im Operationsregister 30. Dieses Mikroprogramm wird deshalb zum Be- ' ginn jeder Anweisung durch diejenige Mikrοanweisung, welche die Durchführung der gerade ausgeführten Anweisung beendet, abgerufen.
509 82 8/078 3 - hz -
BAD ORIGINAL
Im einzelnen geht die Ausführung jeder Anweisung des Programms, welches der Prozessor durchführt, in der folgenden Weise vor sich:
Die letzte Mikroanweisung des Mikroprogramms, welches die vorhergehende Anweisung ausgeführt hat, ist eine nicht-bedingte Sprungmikroanweisung SAI zur Adresse IALFA welches die erste Mikroanweisung des Übersetzer-Mikroprogrammes darstellt.
Die nun folgende Beschreibung bezieht sich auf die Fig. 9» 10a, 10b und 10c. Mittels der ersten beiden Mikroanweisungen CRTA und AMD wird das Zeichen CRT "00" bei der Adresse 00B8 von RAM 1 eingegeben, d.h. daß das Anweisungs· Modifikationsbyte (Block 200 in Fig. 10a) auf Null gesetzt wird, was vor einer neuen Anweisung durchgeführt werden muß. Mittels der folgenden beiden Mikroanweisungen, das sind MAD und TAB, wird der Inhalt der Zelle 00B6 in das Operationsregister B15 des Registers A1h überführt. Diese
509828/0783
BAD ORiGINAL
Zelle enthält, wie bereits gesagt, das Programmbedingungsbyte (GP) 513 (Block 201).
Durch die nächste MAD wird in das Register A14 der Gruppe 31 der Inhalt der Zelle 00B? übertragen, in dem das Unterbrechungs-Reservierungsbyte (PI) 314 (Block 201) festgehalten ist.
Wie bereits dargestellt wurde, enthält das Unterbrechungs-Reservierung sby te PI in kodierter Form die Gründe, die eine Unterbrechung des auszuführenden Programms bewirken. Die. logische Und-Funktion wird mittels der Mikroanweisung AND (logische Entscheidung 202) gebildet mit CP 313 und PI
Wie bereits erläutert wurde setzt die Mikro-
anveisung AND das Schaltelement D01 der Gruppe von -Schaltelementen von 40 auf eins, wenn das Ergebnis von AND Null ist. Mittels der nachfolgenden Mikroanweisung SADO wird der Inhalt des Schaltelementes D07 abgefragt und wenn es sich auf dem logischen Nullpegel befindet (d.h., daß eine Unterbrechung reserviert worden ist) wird ein Sprung zu derjenigen Adresse ausgeführt, die den symbolischen Namen IINTE (31ock 25O) aufweist, bei der die erste Mikroanweisung desjenigen Mikroprogramms festgehalten ist, das die Unterbrechungen st&uert. Wenn jedoch das Schaltelement sich auf dem logischen 1-Pegel befindet, wird die Phase ALFA des Auslesens aus RAM 1 fortgesetzt.
Jetzt sollen die Bedingungen untersucht werden, die den Sprung nach IINTE oder die Fortsetzung des Übersetzungsmikroprogranms bestimmen.
Wenn das Byte PI bei 0000 0000 ist, ergibt die UND-Funktion mit dem 3yte CP ebenfalls 0000 0000, so daß das das Schaltelement D01 sich auf dem 1-Pegel befindet und eine Sprunganweisung daher nicht ausgeführt wird. Die Bedingung PI
5 0 9 8 2 8/0783
0000 0000 zeigt an, daß keine Unterbrechung reserviert worden ist. Wenn wenigstens ein Bit von PI im 1-Zustand ist und das entsprechende Bit von CP ebenfalls auf 1 ist, heißt das, daß eine bestimmte MikroUnterbrechung vorbereitet ist und die Und-Funktion zwischen GP und PI muß bei einem Bit desselben Gewichtes wie das von PI"1 "ergeben. Wenn beispielsweise eine Unterbrechung mittels des Bedienungsfeldschalters 100 (Fig. 1b) vorbereitet worden ist, muß das Byte PI, wie bereits dargelegt, die Konfiguration 0010 0000 haben. Das Byte CP wiederum muß vom Programmierer in der Konfiguration 1X1X XXXX gesetzt werden, da das ablaufende Programm die DBG-Unterbrechung zuläßt, so daß die Und-Funktion zwischen CP und PI 0010 0000 ergibt. Infolgedessen wird D01 durch die Mikroanweisung AND auf UuIl gesetzt und es ergibt sich der Sprung nach IINTE.
Falls keine Unterbrechung vorlag, wird das gesamte Byte CP mittels der Mikroanweisungen MAD und TADI (Block 203) in das Register 40 überführt. Es wird dann eine Überprüfung mittels der Mikroanweisung SADI ausgeführt, ob das Schaltelement D03 sich auf dem Eins- oder auf dem Null-Pegel befindet (logische Entscheidung 204).
Wie bereits gesagt, gibt das Bit 03 des Bytes CP an, ob das Auslesen der auszuführenden Anweisung aus RAM 1 oder aus ROM 2 erfolgt.
Wenn das -^e sen der auszuführenden Anweisung aus RAM 1 (bei normalen Programmen) erfolgt, werden das erste und das zweite Byte der Anweisung bei der im Langregister LO? enthaltenen. Adresse mittels der beiden Mikroanweisungen MBIP (Block 205) ausgeben. Bei jedem Auslesen (MBIP) wird das Register L07 um eins heraufgesetzt. Die beiden Bytes werden darüber hinaus in die Register B14 und B15 der Operationsregister 32
509828/078 3 -45-
überführt. Aus dem Gesagten geht hervor, daß das Register LO7 als ein Programmadressierer für die Anweisungen dient, da es nach Jedem Auslesen Jeweils die Adresse der folgenden Anweisung angibt. Darüberfhinaus hat es in dem Falle, daß die der vorliegenden vorangehende Mikroanweisung eine Sprunganweisung war, mittels eines geeigneten in der BETA-Phase ausgeführten Mikroprogramm im Register LO7 diejenige Adresse der Anweisung in RAMt festgelegt, zu der gesprungen werden soll. Zusammenfassend gesagt, enthält das Register L07 die Adresse der nachfolgenden Anweisung in RAM 1 sowohl für den Fall der sequentiellen Adressierung als auch den der Adressierung mit einem Sprung.
Wenn die vorliegende Anweisung aus ROM 2 (Fall der DBG-Prograrame) ausgelesen werden soll, muß das Bit 03 der Programmbedingungen auf Hull gesetzt werden, so daß der Sprung nach IALFA1 nicht ausgeführt wird. Die Mikroanweisung SLL wird Jedoch ausgeführt und tauscht den Inhalt des Registers L07 mit dem Inhalt des Registers· L02 (Block 206). Anschließend werden mittels zweier aufeinanderfolgender Paare von Anweisungen ROMA und TAB die ersten beiden Bytes der gelesenen Anweisung in die beiden Register B14· und B15 (Block 206) überführt.
Es muß erwähnt werden, daß der Austausch von LO7 und L02 sich wegen der Tatsache als notwendig erweist, daß die Mikroanweisung ROMA, welche das Auslesen aus ROM 2 bewirkt, ausschließlich durch das Register L02 adressiert wird. Darübeijhinaus setzt es den Inhalt des Registers nach Jedem Auslesen um eins herauf. Nach dem Auslesen des ersten und zweiten Bytes der Anweisung wird der Inhalt des Registers LO7 durch den Austausch der Mikroanweisung SLL, mittels derer der Inhalt des Registers L02 mit dem des Registers L07 ausgetauscht wird, wieder hergestellt. Es ist deshalb festzuhalten, daß in den beiden Fällen des Auslesens von RAM 1
509828/0783
und ROM 2 die beiden Bytes der auszuführenden Anweisung in den beiden Registern B14 und B15 des Registers 32 festgehalten sind und/üaß nach einem solchen Auslesen das Register LO7 bereits die Adresse der nachfolgenden Anweisung enthält. Anschließend wird mittels der drei Mikroanweisungen MAD, REDI und ADDB (Block 207 in Fig. 10a) das zweite Byte der ausgelesenen Anweisung in Übereinstimmung mit dem Anweisungsmodifizierungsbyte (MI), das vorher in der Zelle 00B8 festgehalten wurde, verändert·
Mittels der Mikroanweisungen CRTB und TBA (Block 208) wird das erste Byte der Anweisung benutzt, um die ROM-Adresse, zu errechnen, von der Paare von Bytes geschrieben werden, die den Formaten der Anweisungen (erstes Semibyte) und den Adressen der Ausführungsphase (zweites, drittes und viertes Semibyte) des zugehörigen Anweisungssatzes entsprechen. Diese Bytepaare bilden die die Anweisung charakterisierenden Elemente. Anschließend werden mittels der beiden folgenden Kikroanweisungen ROMA die zu der Anweisung gehörigen Bytes ausgelesen und in die Operationsregister L02 (Fig. 8) überführt. Jetzt wird&iän L02 enthaltene Anweisung durch ein Mikroprogramm, das eines der in Fig. 1Od angegebenen Formate erkennt, untersucht.
Wenn die erkannte Anweisung das Format 1 hat, besteht sie aus einem Funktionscode F, zwei Bits 11 und 12, welche angeben, oövdie jeweiligen Register R1 und R2 RAM 1 direkt oder indirekt adressieren, und zwei Felder R1 und R2 von jeweils 4 Bits, welche zwei Konstanten angeben. Wenn 11 = 12 = 0 ist, werden die Adressenoperanden durch Multiplikation der Konstanten R1 und R2 mit 8 und Addition dieses Wertes zu dem Inhalt des Basisregisters (RB) 310 ermittelt. Auf diese Weise kann RAM 1 für Registern von acht Bytes adressiert werden. Für den Fall 11 = 1 und 12 - 0 bezeichnet R1 eines von sechzehn privilegierten Registern in RAM 1 und R2 hat die-
- 47. -
509828/078 3
selbe bevorzugte Bedeutung. In diesem Fall wird der erste Operand in der Zone von RAU 1 gelesen, die durch den Inhalt von RI adressiert worden ist, während der zweite Operand wie vorgenannt errechnet wird. Alle Fälle mit 11 = O und 12 = 1 oder 11 =12 = 1 können aus den vorhergehenden hergeleitet werden.
Wenn die Anweisung das Format 2 hat, besteht sie aus einem Funktionscode F, einem Bit I und zwei Feldern RI und L2. Der erste Operand wird wie im Format 1 (11 = 0, 11 =1) ermittelt, und der zweite Operand durch Addition der Zeiger P1 oder P2, die durch die Godes F bis RB ermittelt werden, errechnet. Das Feld L2 enthält die Anzahl von Bytes des zweiten auszulesenden Operanden, beginnend mit der ermittelten Adresse.
Wenn die Anweisung das Format 3 aufweist, besteht sie aus einen Funktionscode F und zwei Feldern L1 und L2. Die Adressenoperanden werden wie bei dem zweiten Operanden des Formates 2 errechnet und die !Länge der Operanden wird durch die Felder L1 und L2 angegeben.
Wenn die Anweisung das Format 4 aufweist, besteht sie aus zwei Feldern. Eines gibt den Funktionscode F an und das andere ein Feld E, KD, I und L, welches vier verschiedene Bedeutungen auf der Basis des Inhaltes von F annehmen kann. Der Code F adressiert zwei Operanden mittels der Zeiger P1 und P2, wie beim Format 3> und gibt darüber hinaus die Bedeutung des zweiten Feldes an.
Wenn die Anweisung das Format 5 hat, enthält sie einen Funktionscode F, in dem der erste Operand wie beim Format 3 und der zweite Operand wie beim Format 1 errechnet wird.
Bei einer Anweisung vom Format 6 werden die beiden Bytes der Anweisung direkt in der nachfolgenden BETA-Phase benutzt.
509 828/0 78 3 - 48 -
Eine Anweisung vom Format-7 besteht aus vier Bytes, wobei zunächst die Bytes 1 und 2 in andere Register JO überführt werden und dann die beiden durch das Register L07 adressierten Bytes 3 und 4 in B14 und B15 gebracht werden. Die Anweisung besteht aus einem Funktionscode F, einem Feld E, das dasjenige Element der Referenztabelle bezeichnet, aus dem die Adresse des Operanden ermittelt werden kann, und ein Feld LD, welche den Abstand in Bezug auf die in dieser Weise ermittelte Adresse angibt.
Nach diesen Operationen hat der Übersetzer seine Aufgabe erfüllt und leitet daher die Ausführungsphase BETA ein, in welcher die vorher ermittelten Operanden verarbeitet werden.
Wenn während der Phase ALFA eine Unterbrechung erkannt wird (logische Entscheidung 207 in Fig. 1Oa) führt der Übersetzer einen Sprung zu der Adresse HNTE ( Fig. 1Ob)
aus. Lie erste Mikroanweisung AND ermittelt wiederum das , Ergebnis der logischen Und-Funktion zwischen CP und PI und speichert das Ergebnis im Register B15 (Block 251). Dieses Ergebnis wird dann nach DEV 40 mittels der Mikroanweisung T3DI überführt und die Schaltelemente werden abgefragt, um den Grund der Unterbrechung (Block 252) zu ermitteln. Es sollen hier alle möglichen Gründe von Unterbrechungen außer Acht gelassen werden mit Ausnahme derer, die auf einem Einschreiten des Programmierers wegen eines DBG Bedarfs beruhen. Das DBG-HiIfsbit wird aus RAM 1 mittels der Mikroanweisung MAD ausgelesen und anschließend mittels der Mikroanweisung TADI (Block 256) zu den Schaltelementen des Registers 40 überführt. Anschließend werden die Schaltelemente D01, D02 und D05, welche die Bits 01, 02 bzw. 03 des BSD enthalten, untersucht.
509828/078 3
Das Bit ist normalerweise in Null-Zustand, woraufhin ein Sprung zu der Adresse IINTE1 ausgeführt wird, "bei der das Bit auf Eins gesetzt und ein Sprung nach der Adresse IALSAR ausgeführt wird. Das ist deswegen notwendig, damit die Unterbrechungsfunktion nicht in eine fortgeschrittene oder laufende Anweisung fällt, sondern erst am Ende derselben ausgeführt wird. Anschließend wird das Schaltelement D03 (Block 259) abgefragt, welches das adressierte STOP von allen anderen DBG-Programmen unterscheidet.
Das überprüfen des Bits 03 wird nach dem Bit 02 wegen der nachfolgend zu erläuternden Gründe bewirkt. Es soll angenommen werden, daß der Programmierer eine STOP-Adresse eingibt, d.h., daß er die Ausführung des Programmes bei einer bestimmten Stelle, die mit der STOP-Adresse übereinstimmt, zu unterbrechen wünscht. Dadurch wird das Bit 02 von BSD zusammen mit dem Bit 05 des Bytes TI auf eins gesetzt, was anschließend noch ausführlicher erläutert werden soll. Diese Bitanordnung veranlasst den Übersetzer zu der Adresse HUTE (logische Entscheidung 202) zu springen, von wo aus er zu der logischen Entscheidung 259 gelangt.
Die logische Entscheidung 259 unterscheidet, ob, neben dem adressierten STOP ein anderes DBG-Prograram durch den Programmierer angefordert worden ist. Das kann ggf. dann auftreten, wenn die Bedienungsperson - sobald STOP-Anforderung ausgeführt ist - merkt, daß sie für ihn nicht von Nutzen ist und er statt dessen beispielsweise wünscht, ein bestimmtes DBG-Programm auszuführen, das auf einer Magnetkarte 9 festgehalten ist. Diese Möglichkeit entspricht dem Zustand, daß die Bits 02 und 03 des BSD gleichzeitig auf "1" sind. Dadurch wird ein Sprung des Übersetzers nach IINTE2 veranlaßt. Es wird vorher dafür gesorgt, daß bei IINTE2 das adressierte STOP unterdrückt und das durch.den Programmierer ausgewählte DBG-Programm ausgeführt wird. In dem dargestellten Beispiel bewirkt dieses Programm das Lesen und die Ausführung des Programms, das auf der Magnetkarte 9 festgehalten ist.
509828/078 3
- 50 -
Es ist selbstverständlich, daß die Suche nach einer reservierten STOP-Adresse nur dann stattfindet, wenn keine anderen DBG-Anfragen vorliegen und das DBG-Programm hat deshalb eine niedrigere Priorität. Das Bit 02 des adressierten STOP wird durch eine andere DBG-Anfrage unterdrückt.
Für den Fall, daß die einzige DBG-Anfrage eine reservierte STOP-Adresse ist, werden die Mikroanweisungen MAD, TAB und MAD (Block 260) ausgeführt, mittels derer die beiden Bytes der reservierten STOP-Adresse aus den Zellen 00EC und 00ED (Register IS 350, Fig. 9) in das Register L08 (30 in Fig. 2b) überführt wird. Anschließend wird mittels der Mikroanweisungen ORE, SADO, ORE die Exklusiv-Oder-Funktion mit den Inhalten der Register L07 und L08 (30 in Fig. 2b) gebildet, d.h. es wird ein Vergleich durchgeführt zwischen der programmierten Adresse und der reservierten Adresse (Block 261).
Wenn die beiden Adressen übereinstimmen, setzt die Mikroanweisung ORE das Schaltelement DO1 auf "Eins". In diesem Fall bewirkt die Mikroanweisung SADI ein Sprung nach IINTE2 (logische Entscheidung 262) und es findet - wie noch erklärt werden wird - ein optische Anzeige der bei der reservierten Adresse aufgezeichneten Anweisung statt.
Im Falle von unterschiedlichen Adressen werden die Mikroanweisungen GRTB, ORA und AND ausgeführt und bewirken ein Einschreiben von BSD in RAM 1 bei den Adressen 00C7, wobei das Bit 01 inzwischen auf den 1-Pegel (Block 265) gesetzt worden ist. Anschließend werden dort die Mikroanweisungen MAD und TAB ausgeführt, die das Byte GP im Register B15 (Block 266) wieder herstellen. Eine Mikroanweisung SAI wird anschließend ausgeführt und erzeugt einen nicht bedingten Sprung zu der Adresse IALFAR (Block 203 in Fig. 10a).
_ 51 -
509828/0783
24 5865
Auf diese Weise wird das Bit 01 von BSD auf eins gesetzt, unabhängig davon, ob sich dieses Bit auf dem O-Pegel (logische Entscheidung 256) befindet oder die Adressen sich unterscheiden, so daß auf jeden Fall die Übersetzung der Anweisung fortgesetzt wird und der Übersetzer während der nachfolgenden Anweisung wiederum einen Adressenvergleich durchführt. In dem Ball, daß die Adressen übereinstimmen oder eine DBG-Anforderung vorliegt, die sich von einer STOP-Reservierung unterscheidet, wird ein Sprung zu der Adresse IINTE2 ausgeführt.
Die Mikrοanweisungen CRTB und ANDA werden ausgeführt und machen das Bit 01 vom DSB (Block 270) zu Null, so daß das Bit sich wieder in seinem Normalzustand befindet, nachdem die Unterbrechung eingeleitet wurde. Das auf diese Weise modifizierte Hilfsbit BSD wird dann in RAM 1 bei der Adresse 00C7 mittels der Mikroanweisungen AMD und CRTB (Block 271) zurückgeführt...
Auf diese Weise wird die STOP-Reservierung gelöscht. Anschließend wird die Mikroanweisung CRTB ausgeführt, mittels derer das Byte GI "0000 0100",-das angibt, daß der Grund der Unterbrechung ein DBG-Programm ist, in das Register B13 eingespeichert (Block 272).
Beginnend mit dieser Mikroanweisung findet die tatsächliche Unterbrechung des laufenden Programms statt. Die acht Mikroanweisungen, die denjenigen, die bei der Adresse IERR01 in ROM ? vorhanden sind, werden ausgeführt und bewirken die Überführung der ersten-zehn Bytes der Parameter des ausgeführten Programms aus dem Register (PSR) 300 in die entstehenden Zellen des Registers (OPSR) 301 (Block 273).
Der Inhalt des Registers L07 wird dann bei den Adressen 00DA und 00DB von RAM 1 mittels der Mikroanweisungen BMIP
50 9 8 28/0783
und AMI eingespeichert, d.h. daß die Programmadressierung des unterbrochenen Programms im Register (OPSR) 301 aufbewahrt wird (Blöcke 27^ und 275).
Der Unterbrechungscode, der vorher aufgestellt würde, wird dann mittels der Mikroanweisungen CRTA und BMI bei der Adresse 00D7 (Register 524 in Fig. 9) eingespeichert.
Auf diese Weise werden im Register (OPSR) 301 alle Parameter aufbewahrt, die die Wiederaufnahme des unterbrochenen Programms am Ende des Unterbrechungsprogrammes erlauben.
Wie sich noch zeigen wird, enden alle Unterbrechungsprogramme mit der Rückübertragung des Inhalts des Registers (OPSR) in das Register (PSR) 300. Nach dieser Phase versorgt das Übersetzungs-Mikroprogramm das. Register 300 mit den Parametern des Unterbrechungsprogramms, das anstelle des unterbrochenen Programms ausgeführt werden soll. Im einzelnen macht es mittels der Mikroanweisungen AMD (Block 280 Fig. 10c) das Byte MI des Registers (PSR) 300 zu Null und mittels der Mikroanweisungen MAD und TBA . überträgt es in das Register B09 das Byte AI, das in der Zelle 00BD von RAM 1 (Register (AI 334) festgehalten ist und in das Register A11 das Byte GI, das vorher in der Form "00000100" (Block 281) aufgestellt worden ist.
Wie bereits gesagt, ist das Byte AI durch den Programmierer erzeugt worden, um festzulegen, ob das Unterbrechungsprogramm in RAM 1 oder in ROM 2 vorliegt. In diesem bestimmten Fall hat man sich - aus den Gründen, die schon in der Einleitung erläutert worden sind - dafür entschieden, die DBG-Programme in ROM 2 zu speichern, was jedoch für den Benutzer nicht die Möglichkeit ausschließt, seine eigenen DBG-Programme in RAM 1 zu speichern, falls er die Möglichkeit dazu hat. Hierfür ist es ausreichend, das Bit 03 in AI 334 zu aktivieren. Dort
509828/07 83
wird die logische Und-Funktion mit AI und CI gebildet, wodurch D01 = 1 gesetzt wird, wenn sich das Ergebnis von 0000 0000 unterscheidet(Block 282).
Die Mikroanweisung SADO kontrolliert das Schaltelement D01 und falls sich dies auf eina befindet (das Programm ist in ROM gespeichert) führt es die beiden Mikroanweisungen CRTA und AMD aus, welche das Byte CP des laufenden Unterbrechungsprogramms (Block 283) zu Null machen.
An dieser Stelle soll noch darau^hingewiesen werden, daß das Interpretations-Mikroprogramm, nachdem erkannt wurde, daß der Grund der Unterbrechung ein DBG ist, Unterbrechungen aus allen anderen Gründen verhindert, die nicht kompatibel mit den DBG-Programmen sind;
Anschließend werden die-Mikroanweisungen CRTB und CRTA ausgeführt, wodurch die Adresse 1700 von ROM 2 in das Register LO7 (Block 284) überführt und ein nicht bedingter Sprung zu der symbolischen Adress-e IALFA (Fig. 10a) ausgeführt wird, um die erste Anweisung des DBG-Programms zu interpretieren. Die Adresse 1700 entspricht dem Anfang der Zone B von ROM (Fig. 9)· Es soll darauf hingewiesen werden, daß der Interpretationsteil ' ' auch das Bit 03 von CP 313 auf Null gesetzt hat, so daß, wenn eine Rückkehr nach IALFA erfolgt, das Auslesen der Anweisungen durch ROM 2 und nicht durch RAM 1 bewirkt wird.
Es soll außerdem daraufhingewiesen werden, daß der Interpretationsteil ebenfalls das Bit 05 von CP 313» das zu der Anweisung zur Fehlerbefreiung gehört, zu Null macht, da anderenfalls sich nach dem Start des DBG-Programms eine geschlossene Schleife ergeben würde.
- 3k 5 09828/078 3
Tarsächlich würde der Interpretationsteil beim Ausführen der ersten Anweisung des DBG-Programms bei der logischen Entscheidung 202 (Fig. 10a) die DBG-Unterbrechung eingeschaltet finden, insoweit nämlich, als PI nicht verändert und das Bit 05 von GP = 1 ist. Infolgedessen würde dazu HITTS springen und über die Blöcke 250 bis 284 (Fig. 10b und 10c) wiederum zu der Adresse IALFA hin und nicht aus der genannten Schleife herausgelangen.
Schließlich führt der Interpretationsteil - zum Zeitpunkt wenn das Unterbrechungs-Programm in RAM 1 eingespeichert wird (logische Entscheidung 182) - die Mikroanweisungen MAD1 AMD, MAD, TAB, MAD (Block 285 von Fig. 10c) aus, wodurch die Adresse, die in den dritten und vierten Bytes des Registers (IPSR) 302 enthalten ist, in das Adressierregister L07 des ausgeführten Programms gelangt und darüber hinaus das Byte GP 333 des Registers (IPSR) 302 in das Register (CP) 313 eingespeichert wird, um auf diese Weise in das Register (PSR) 3OO die neuen Bedingungen des Unterbrechungs-Programms einzugeben.
6. IPehlerbefreiungsprogramme
6.1 Benutzte Anweisungen
Es war bereits weiter oben ersichtlich, daß als Folge der Betätigung des Umschalters 100 oder der Erkennung einer vorher reservierten STOP-Adresse das Bit 05 von PI 314 und das Bit 03 von BSD auf "1" gesetzt werden. Darübei^hinaus wurde gezeigt, daß wenn der Programmierer die DBG-Programme in ROM 2 eingespeichert hat, er dafür gesorgt hat, daß das Bit 01 des Bytes AI 334 von IPSR 302 auf "0" gesetzt wurde.
- 55 -
5098 2 8/0783
Schließlich wurde auch dargelegt, wie das gleichzeitige Vorliegen der eben genannten Bitzustände das Interpretations-Mikroprogramm veranlasste, die Verarbeitung des ablaufenden Programms zu unterbrechen, seine signifikanten Parameter festzuhalten und die Adresse "1700" von ROM 2 in den Programm-Adressierer L07 einzugeben.
Diese Adresse ist die Adresse der Initialanweisung des DBG-Programms, das in ROM 2 gespeichert ist.
Bevor die Beschreibung des DBG-Programms fortgesetzt werden soll, ist es zweckmäßig, die Bedeutung der dafür benutzten Anweisung zu erläutern.
Zunächst sollen diejenigen Schritte kurz erläutert werden, die ausgeführt werden, um die Anweisungen durchzuführen.
Wie bereits gesehen, liest der Übersetzungsteil die beiden Bytes der Anweisung aus RAM 1 oder ROM 2. Aus dem Inhalt dieser beiden Bytes erkennt der Interpretationsteil das zu der Anweisung gehörende Format, errechnet auf der Grundlage des Formats die Adresse der Operanden, zieht die Operanden aus RAM 1 heraus und überführt sie in die Operationsregister Β1Λ und BI5. Jetzt werden auf der Grundlage des Inhaltes des Feldes F der Anweisung die Mikroprogramme, die die Anweisung ausführen, aus ROM 2 herausgezogen. Am Ende dieses Vorgangs wird der Interpretationsteil angerufen und fährt mit dem Herausziehen der nachfolgenden Anweisung fort.
6.2 Optische Anzeige der Anweisungen in den Registern 362 und 363
Das DBG-Programm, das in ROM 2 gespeichert ist, soll nun anhand der Figuren 11a bis 1 ig beschrieben werden.
- 56 -
509828/078 3
Das DBG-Programm, das in ROM 2 aufgezeichnet ist, teilt sich in eine Anzahl von Funk ti ons bloc ken B-IOO ,BO,B1,B2,B6 von denen der erste B100 den anderen gemeinsam ist. Die anderen Blöcke BO,B1,B2,b6 können jedoch einzeln mittels der Tasten S0,S1,S2 und S6, die in Fig. 1b zusammen mit 102 bezeichnet sind, abgerufen werden.
Es soll klargestellt werden,daß die Tasten 102 (SO bis S6) auch benutzt werden, wenn der Umschalter 100 sich in seiner Normalposition befindet. In diesem Fall nehmen sie alle eine besondere Bedeutung an, die ihnen durch das"im Ablauf befindliche Programm zugeordnet wird, Die Tasten SO und S6 können beispielsweise vom Programm als normales Ende der Dateneingabe vom Tastenfeld 5 und WJBderaufnähme der Verarbeitung unter Benutzung dieser Daten angesehen werden.,Die übrigen Tasten S1 bis S5 fügen zu diesen Datenblöcken zusätzliche Information - über die normale Eingabe von Daten hinaus - hinzu, die vom Programmierer bestimmt wird.
Die Funktion der Anlage, wenn der Umschalter 100 in seiner Normalposition ist, soll hier nicht beschrieben werden, sondern die Operationen, die mit den Tasten 102 zusammenhängen, wenn der Umschalter 100 sich in seiner DBG-Position befindet.
Eine Beschreibung des ersten Blocks B100 des Programms, der bei allen anderen Programmen derselbe ist, soll zunächst beschrieben werden. Dieser funktionale Block konserviert andere Parameter des unterbrochenen Programmes, welche nicht in OPSR 301 enthalten sind und bereitet darüber hinaus die optische Anzeige derjenigen Adresse und derjenigen Anweisung vor, die im Augenblick der Unterbrechung ausgeführt werden sollte.
- 57 -
5 09828/0783
Im einzelnen wird mittels der beiden ersten Anweisungen TLD, 2 und YPB, 2 der Inhalt des Registers RB 310 nach 0160 (Block 400 Fig. 11a) gebracht. Der Inhalt des Arbeitsregisters 352 wird dann mittels einer Anweisung LAX (Block 401) in das Register 366 übertragen. Es soll bemerkt v/erden, daß das Register 366 durch die Anweisung LAX als viertes Register (identifiziert durch das letzte Semibyte der Anweisung), beginnend mit dem Basisregister RB 31O von PSR 3OO» ia eiern die Adresse 0160 enthalten ist, adressiert wird. .
Das Basisregister (RB) 310 wird dann mittels der Anweisungen TL und YBP, 1 (Block 402) auf Null gesetzt. Danach werden mittels der Anweisungen TLD, 1, TLD, 2 und MVG die beiden Bytes des Bedingungsregisters (RG) 359 in den Zellen 0188 und 0189 (Block 403) konserviert, die - wie gesagt - diejenigen Bedingungen enthalten, die von der Bedienungsperson vor der DBG-Unterbrechung von außen eingegeben wurden. Diese Bytes werden durch das DBG-Programm in das RG 359 zurückgebracht, wenn das unterbrochene Programm nach der Ausführung des DBG-Programms wieder aufgenommen wird.
Es soll darauf hingewiesen werden, daß die Anweisung MVG ein Feld von der Länge L+1 aus der Zelle, die durch die Summe der Inhalte von RB 310 und P1 311 adressiert wird beginnend mit der Zelle, die durch die Summe der Inhalte der Register(P2) 312 und (RB) 310. L ist die Zahl, die im zweiten Byte der Anweisung enthalten ist.
Anschließend wird mittels der Anweisungen AP1, AP2 und MVC der Inhalt des Registers (AB) 370 (jAnsteuertasten) in die Zelle 018A (Block 404) über.
- 58 50982 8/0783
Kittels der Anweisungen SP2, SP1 und MVC wird der Inhalt des Registers (CI) 324 in die Zelle 0158 (Block 405) überführt. Die beiden Bytes, welche die Absolutadresse für den Wiederbeginn des unterbrochenen Programms (Register (IR) 327) angeben, werden mittels der Anweisungen AP2, SP1, MVC in die Register (Pi) 311 von PSR 300 überführt. Danach wird diese Adresse mittels der Anweisungen AP2 und LPD von P1 311 in das Register 362 (Block 406) weitergegeben.
Durch die Anweisungen YBP, 2, SP2, TLD, 1 und MVC wird das Register (RB) auf den Wert 0160 gesetzt und der Inhalt des Basisregisters (RB) 320 von OPSR 301 wird in das Register (P1) 311 von PSR 300 überführt. Anschließend wird der Inhalt des Registers (RB) 320 mittels der Anweisungen AP2 und LPD1 an das Register 364 weitergegeben.
Der Unterschied zwischen den Inhalten der Register 364 und 362 wird mittels der Anweisung SR gebildet und das Ergebnis wird in das Register 362 (Block 407) eingespeichert. Diese Differenz wird anschließend in das Register 363 durch eine Anweisung LR (Block 408) überführt. Mittels der gerade beschriebenen Operationen wird in die Register 360 und 363 die auszuführende relative Adresse des unterbrochenen Programms in hexadezimalem Code eingeschrieben.
Mittels der Anweisungen TL1 und TL2 werden die Register P1 311 bzw. P2 312 auf die Werte von 0000 und 0005 gesetzt, welche hinzugefügt zum Inhalt des Registers (RB) 310 die Zellen 0160 bzw. 0165 adressieren.
Die Anweisung YTX, die vier Bytes (gekennzeichnet durch das letzte Semibyte der Anweisung) aus dem Register (P2) 312 zerlegt und transcodiert sowie sie anschließend in acht Bytes (gekennzeichnet durch das dritte Semibyte der Anweisung) adressiert durch das Register (P1) 311 durch Eliminierung der nicht signifikanten Nullen (Block 409)- überführt, wird anschließend ausgeführt.
509828/0783 - 5? -
Danach wird eine Anweisung MVI, 2 ausgeführt, welche durch P2 312 adressiert wir.d und eine Leerstelle CRT in die Zelle 0165 (Block 410) einschreibt.
Mittels der Anweisungen YPB, 1, AP1 und AP2 sowie YTX wird das Register (RB) 310 auf Null gesetzt und das Byte CP aus RAM 1 ausgelesen, zerlegt, transcodiert und in die Zellen 0166 und 0167 (Block 411) in Fig. 11b übertragen.
Anschließend wird die Anweisung EIES ausgeführt, welche in die Zelle 00E4 den Code, der durch das zweite Byte ausgedrückt ist, einschreibt. Dieser Code ist "01000111" und jedes Bit gehört zu einer entsprechenden Taste 102 (Block 412). Im einzelnen wird dieser Code interpretiert als ein Code zum in Funktion/setzen der Tasten SO, S1, S2 und S6 mittels der Anweisung YOP, um festzustellen, ob die durch den Programmierer betätigten Tasten eingeschaltet waren oder nicht.
Mittels der Anweisungen SP1, SP2 und MVC wird der Inhalt des Registers (RB) 320 von OPSR 301 in das Register (P2) 312 von PSR (Block 413) übertragen. Der Inhalt von RB von OPSR 301 wird mittels der Anweisungen AP1,. YPB1, LPD2 (Block 414) in das Register 364 überführt. Anschließend wird der Inhalt des Registers 364 in Register 361 (Block 415) übertragen.
Die absolute Adresse der auszuführenden Anweisung des unterbrochenen Programms wird im Register 364 mittels der Anxjeisungen LR und AR (Block 416) errechnet. Es wird daran erinnert, daß der Inhalt des Registers 36.5 die relative Adresse des unterbrochenen Programms war. Die absolute Adresse wird anschließend mittels der Anweisungen LR und TRD (Block 416) in das Register 360 und das Register (P2) 312 übertragen. Das Register (RB) 310 wird mittels der Anweisungen TL und YBPI auf Null gesetzt und der Inhalt der
50 9828/07 83
- 6ο. -
durch Ρ2 312 adressierten Zelle wird mittels der Anweisungen AP1 und MVC in die zweite Hälfte des Registers 363 übertragen. Dieser Inhalt wird zerlegt und mittels der Anweisungen TLD2, TCP und YTX transcodiert, so daß im Register 363 die von dem unterbrochenen Programm auszuführende Anweisung in zerlegtem Code (Block 417) festgehalten ist. Mittels der Anweisungen SP1, SP2 und MVC wird das zweite Semibyte des Bytes CP, das in der Zelle 0167 aufgezeichnet ist, um eine Zelle nach links verschoben, so daß dieses Semibyte jetzt in den beiden Zellen 0166 und 0167 vorhanden ist. Anschließend wird die Leerstelle CRT mittels der Anweisung MVI (Block 418) in die Zelle 0167 eingeschrieben.
Zusammenfassend gesagt sind durch die in den Blöcken 406 bis 418 durchgeführten Operationen in den Registern 362 und in zerlegtem Code vorbereitet worden: Die relative Adresse der von dem unterbrochenen Programm auszuführenden Anweisung, das zweite Semibyte des Bytes CP (das, unter anderem den Bedingungscode enthält), eine Leerstelle CRT und den Heximalcode der bei dieser Adresse enthaltenen Anweisung. Ein Beispiel der Vorbereitung der Register 362 und 363 soll anhand der Figuren 12a bis f behandelt werden.
Unter der Annahme, daß das Programm bei der absoluten Adresse 2423 - ausgedrückt in komprimiertem Hexadezimalcode - unterbrochen worden ist, welche in das Register 362 (Block 406) überführt worden ist und dort in der komprimierten Form, wie in Fig. 12 dargestellt, vorhanden ist, wobei das letzte Semibyte (Zeichen c) das positive Vorzeichen darstellt. Unter der Annahme, daß darübeijhinaus der Inhalt von RB 320 von OPSR 301 "1200" ist, wird dieser Inhalt in das Register (Block 407) überführt, wie er in der komprimierten Form in Fig. 12a dargestellt ist. Es wird jetzt zwischen den Registern 364 und 362 die Differenz gebildet und das Ergebnis in Register 362 eingespeichert, wie Fig. 12b (Block 408) darge-
509828/0783 -61 _
stellt. Der Inhalt des Register 362 wird dann zerlegt (dekomprimiert) (Block 409) und nimmt daraufhin die ersten fünf Bytes des Registers 362 (Fig. 2c) ein. Eine Leerstelle CRT wird dann in die Zelle 165 (Block 410) eingeführt und das Byte CP 323 wird in dekomprimierter Form in die Zellen 0166 und 016? eingegeben. Es soll angenommen werden, daß dieses Byte den Wert "4A" hat, wie er in Fig. 12e wiedergegeben ist. Daraufhin wird die Anweisung, die durch das unterbrochene Programm ausgeführt werden sollte, gelesen und in komprimierter' Form in die zweite Hälfte des Registers 363 überführt. Es soll angenommen werden, daß die Anweisung den Code "59000005". hat, d.h., daß sie eine Anweisung TLD, 2 darstellt, mittels derer die Zahl "5" in den Zeiger (P2) 312 (Fig. 12b) eingespeichert wird. Diese Anweisung wird daraufhin in das Register 363 in dekomprimierter Form neu geschrieben (Fig. 12c und Block 417). Das Byte CP wird dann um eine Position nach links verschoben und eine Leerstelle CRT in die Zelle 0167 (Block 418) eingeschrieben.
Die beiden Register 362 und 363 befinden sich kurz gesagt in dem Zustand, wie er in Fig. 12d dargestellt ist.
Fig. 12f zeigt im einzelnen die Folge von Zuständen, die die Zellen 0166 und 0167 beim Übergang von der Konfiguration nach Fig. 12c zu der von Fig. 12d einnehmen. Die in den Registern 363 und 364 vorbereitete Konfiguration wird anschließend optisch angezeigt, wie es weiter unten noch dargestellt werden soll.
Die Beschreibung des DBG-Programmes soll nun. wieder aufgenommen werden (Fig. 11b).
Mittels der Anweisungen SP2, YBP, 2 und TLD,1 wird das Register (RB) 310 auf 0160 und das Register (P1) 311 in den Zustand 0010 (Block 419 in Fig. 11b) gesetzt. Anschließend wird die Anweisung YOP ausgeführt (Blöcke 420· und 421 von
■ - 62 5098 28/0 78 3
Fig. 11c), welche der Anzeige 103 die in den Registern 362 und 363 vorhandenen Zeichen zuführt, die durch die Bedienungsperson eingegebenen Daten in das Register 36h überführt und der Bedingungscode entsprechend der Taste 102, die durch die Bedienungsperson betätigt wurde, gesetzt.
Die Anweisung YOP kann im wesentlichen als in drei funktionelle Blöcke unterteilt angesehen Werdens Ein erster Block sorgt dafür, daß die durch die vorhergehende Anweisung in die Register 362 und 363 eingespeicherte Information der optischen Anzeigeeinheit 6 zugeführt wird, ein zweiter Block sorgt dafür, daß die über das Tastenfeld eingegebenen Daten in das Register 364, welches durch den Zeiger (P1) 3I 1 angegeben ist, gelangen und ein dritter Block bewirkt die Aufstellung des Bedingungscodes, der in dem Programm-Bedingungsbyte 313 enthalten ist, und des neunten Semibytes des Bedingungsregisters 359 ih Abhängigkeit von der betätigten Taste,
Der erste funktionelle Block ist ein Mikroprogramm, welches dia Summe der Zeiger (P2) 312 and des Basisregisters (RB) 310 benutzt, um das erste Byte des Registers 362 zu adressieren, so daß das Auslesen der sechzehn dem adressierten Byte folgenden Bytes eingeleitet wird.
Mittels geeigneter Mikroanweisungen überführt dieses Mikroprogramm die Daten direkt in die ausgewählte periphere Einheit (über die Verbindung NC und die Kanallogik ^5).
In diesem'Fall wurde mittels der Anweisung YOP durch die Kanallogik k5 die Anzeige 6 (Fig. Ib) ausgewählt, so daß die Daten, die in den beiden Registern 362 und 363 enthalten sind, optisch angezeigt werden. Die Art und V/eise, in der die Kanallogik k5 die Anzeige 6 auswählt, ist bereits erwähnt worden und darüber hinaus in der DT-OS 2 059 3^1 beschrieben. Darüber hinaus kann diese Auswahl in jeder beliebigen Art und Weise vorgenommen werden, so daß auf eine aus-
509828/0783
- 63 -
führliche Beschreibung verzichtet werden kann, · . zumal kein Bereich der vorliegenden Erfindung betroffen ist.
Der zweite Punktionsblock der Anweisung YOP ist ein Mikroprogramm, welches die Summe des Zeigers (P1) 311 und RB 310 benutzt, um die erste Zelle des Registers 364- zu adressieren und in den acht folgenden Bytes die über das Tastenfeld eingegebenen Daten einzuspeichern. Dieses Mikroprogramm benutzt geeignete Mikroanweisungen,
welche den Datenaustausch mit der ausgewählten peripheren Einheit ermöglichen. Diese Daten werden mittels des Tores 70 in Fig. 2b in die Verbindung ITD eingeführt, von wo aus sie mittels der Verbindung ND in das Register B14 (Fig. 8) überführt werden. Die Einführung der Daten aus dem Bedienungsfeld 5 in das Register B14- wird durch eine Mikroanweisung gesteuert, (nicht in Tabellen angegeben) welche die Befehle GZ03, CA02, CT06, CT07 und die Auswahlbefehle CO32 bis CO39 erzeugt, die auf die Tore 70, 71, 72 bzw. 73 und die Auswahlschaltungen, die in Fig. 2 angegeben sind, einwirken, woraufhin die Zeichen vom Tastenfeld 5 in das Register B14- überführt werden. Diese Überführung wird hinsichtlich der Bits parallel und hinsichtlich der Zeichen seriell vorgenommen, so daß die Zeichen eines nach dem anderen überführt werden.
6.3 Tastenerkennung
Der dritte Funktionsblock soll nun anhand des Mikroprogramms, das in Tabelle M dargestellt ist und des Flußdiagramms von Fig. 13 beschrieben werden.
Wie bereits festgestellt, ist das letzte Zeichen vom Tastenfeld 5 mittels des zweiten Funktionsblockes (Block 600 in Fig. 13) in das Register B14· eingespeichert worden.
509828/0783
_ 64 - 2458851
Mittels der Mikroanweisung SDIB wird das Zeichen ORT, das in B14 enthalten ist, mit demjenigen, das in den Schaltelementen (Register) 40 enthalten ist, ausgetauscht.
Anschließend werden die Bits 03 bis 07 des letzten CRT mittels der Anweisungen SAI)O und SADI, welche auf die Schaltelemente D03 "bis D07 (logische Entscheidung 601 in Fig. 13)einwirken, ermittelt.
Es soll darauf hingewiesen werden, daß, wenn die letzte Eingabe vom Tastenfeld eine Taste der Gruppe 102 oder die RUN-
7a
Tastendes Bedienungsfeldes 7 in das Register B14 ist, das festgehaltene Zeichen GRT die Konfiguration 10011XXX annimmt. Die Bits XXX geben eine Binärzahl von 0 bis 6 ab, die mit den Tasten 102 zusammenhängt, während die Zahl 7 auf die RUN-Taste hinweist.
Wenn jedoch das letzte eingegebene Zeichen ein alphanumerisches Zeichen ist, nimmt wenigstens eines der Bits 03 bis 07 eine Konfiguration an, die sich von 10011 unterscheidet, so daß ein Sprung zu der Adresse IGOTEH ausgeführt wird. Das Mikroprogramm, das bei IGOTEH beginnt, ist eines, das die Einführung der Zeichen des Registers 364 von RAM 1 bewirkt, d.h. es führt den vorgenannten zweiten funktioneilen Block aus.
\Jerm die Bits 03 bis 07 die Konfiguration 10011 haben, wird die RUN-Taste, der 10011111 entspricht, mittels der Mikroanweisungen GRTA, ORE und SADI erkannt, welche mit Hilfe einer "Schablone?1 ermitteln, ob der Inhalt der Register B14 gleich 10011111 (logische Entscheidung 602) ist. Wenn die Inhalte sich unterscheiden, gehört das CRT unzweifelhaft zu einer Taste der Gruppe 102.
- 65 -
509828/0783
Mittels der Mikroanweisungen CRTA und ANDB werden die Bits 03 bis Ο? des Registers B14 auf Null gesetzt, während die Bits OO bis 02, die rait XXX bezeichnet sind und binär die Zahl, die zu der betätigten'Taste 102 gehört, wiedergeben, nicht verändert werden (Block 603)· Anschließend werden mittels der Mikroanweisungen ORTA, CRTB und SEDI die Operationsregister AO9 = "00" und B02 = "0Ti vorbereitet und das Schaltelement DOO auf eins gesetztiVMittels der Mikroanweisungen SOT und SADI wird eine Kontrolle durchgeführt, um festzustellen, ob der Inhalt von B14 dem Inhalt von AO9 (logische Entscheidung 606 entspricht). Venn die beiden Register einen verschiedenen Inhalt haben, wird mittels der Mikroanweisungen ICA und SHSB das Register A09 um eins heraufgesetzt und der Inhalt des Registers B02 um eine Position nach links verschoben (Block 607). Anschließend wird durch den nicht bedingten Sprung SAI die Rückkehr nach Block 604 bewirkt und der Durchlauf der Blöcke 604, 606 und 607 wiederholt. Dieser Zyklus wird so oft wiederholt, wie es der laufenden Nummer' der gedrückten Taste 102 entspricht.
V/enn beispielsweise die Taste S6 gedrückt worden ist, wird dieser Umlauf siebenmal wiederholt,etc. Es wird darauf hingewiesen, daß, wenn der Inhalt des Registers B14 dem des Registers AO9 entspricht, das anfangs in die erste Stelle des Registers B02 eingespeicherte "1"-Bit um soviele Plätze nach links verschoben worden ist, wie Zyklen durchgeführt worden sind. In dem dargestellten Beispiel ist das "1"-Bit in der siebten Stelle des Registers 302 aufgezeichnet, d.h., daß das in 302 befindliche Byte gleich 0100 0000 ist.
Wenn 314 = A09 ist, wird mittels der Mikroanweisungen MAD, AlTD und SADI eine Prüfung durchgeführt, ob die gedruckte Taste durch das Programm eingeschaltet ist (logische Entscheidung 608). Wie bereits dargestellt, hat das DBG-Programm die Position 00Ξ4- von RAM 1 (Register 370 in Fig. 9) mit einem Tasteneinschaltbit b.elegt, bei dem die im "1"-Pegel befindlichen Bits die eingeschalteten Tasten bezeichnen.
509828/0 783
Im einzelnen sind die Tasten SO, S1, S2 und S6 eingeschaltet (Block 412 in Fig. 11b), so daß das Byte 01000111 in der Position 00E4 von RAM 1 vorhanden ist.
Ss wird deshalb mittels einer Mikroanweisung AND eine Überprüfung durchgeführt, ob ein "1"-Bit in derjenigen Position des Registers 370 vorhanden ist, die der oben genannten Taste entspricht, d.h., daß kontrolliert.wird, ob diese Taste betätigt ist. In dem dargestellten Beispiel ist ein "1"-Bit sowohl in der sechsten Position des Registers B02 als auch in der sechsten Position des Registers 570 vorhanden.
Für den Fall, daß keine Taste betätigt worden ist, würde ein Sprung zu der Adresse IGOTAJ ausgeführfvBei dieser Adresse ist die Eingangsmikroanweisung des Mikroprogramms, das die Operationeöl^llche auf die Betätigung einer nicht durchgeschalteten Taste hinjfolgen, festgehalten. Dies kann beispielsweise das Aufleuchten einer Lampe im Bedienungsfeld 7 und aas Abwarten einer neuen Anweisung sein. Ein derartiges Mikroprogramm soll hier nicht beschrieben werden, da es nicht einen Teil der Erfindung darstellt.
Venn die durch die Bedienungsperson betätigte Taste durch das EBG-Programm eingeschaltet war, wird die Mikroanweisung MAD ausgeführt und überführt das fünfte Byte des Bedingungsre^isters (RG) 359, das in der Zolle ÖÖG3 vorhanden ist, zu den Operationsregister A02. Wie bereits gesagt, worden dort von rechts her die Seiaibytes der achten und neunten Position von RO 359 festgehalten. Die neunte Position enthält den Code der zuletzt gedrückten Taste, der vorher gleichfalls in der Zelle 0188 (Register 365) festgehalten war, wie es anhand von 31ock 403 in Fig. TIa beschrieben worden ist.
Anschließend wird eine Mikroanweisung AZAP ausgeführt, welche die Bits der Position 9 von RG auf Null setzt.
- 67 509828/0783
Kittels der Mikroanweisungen TAB und ROTB wird der Code der gedrückten T ste, der nach, dem Austausch der Semibytes A09 vorliegt, in das Register B02 überführt.
In dein behandelten Beispiel (Betätigung der Taste S6) lag im Register A09 das Byte 00000110 vor, so diß jetzt in Register B02 das Byte 0110 0000 vorhanden ist.
Durch die Mikroanweisung ÖRA wird mit den Inhalten der Register A02 und B02 die Oder-Funktion gebildet und das Ergebnis in das Register A02 überführt. Auf diese Weise wird in das erste Semibyte des Registers A02 der Binärcode der betätigten Taste und in das zweite Semibyte der unveränderte Inhalt der achten Position von RC 359 eingegeben.
Schließlich wird mittels der Mikroanweisung AMD der Binärcode der betätigten Taste in der neunten Position von RC 359 wieder hergestellt, während die achte Position unverändert wieder eingeschrieben wird. Diese Anweisungen werden kurz im Block 609 von Fig. 13 angegeben.
Für den Fall, daß die betätigte Taste die RUN-Taste 7a ist, wird ein Sprung zu der Adresse IGOTUX vorgenommen, bei der das Zeichen 0000 1001 mittels der Mikroanweisung CRTA (Block 6^0) in das Register A09 eingeschrieben wird. Dieses Zeichen entspricht der RUN-Taste und mittels eines nicht bedingten Sprungs SAI zu der Adresse IGOTUY (Block 609) wird die Aufzeichnung des Zeichens "1001" in der neunten Position von RC 359 vorgenommen, wie es bereits entsprechend für die anderen"Tasten beschrieben worden ist. In jedem Fall wird nach der Mikroanweisung AMD in Block 6Q9 mittels der Mikroanweisungen CRTB und ORE eine Kontrolle durchgeführt, ob der Inhalt des Registers A09 gleich dem Zeichen "06" ist, \tfelches die Taste S6 identifiziert (logische Entscheidung 611).
- 68' -
509828/078 3
Wenn dieses Ergebnis negativ ist, wird mittels der Mikroanweisungen GRTB, SEDI und SOT eine Kontrolle durchgeführt um festzustellen, ob der Inhalt des Registers A09 gleich oder größer als zwei ist, d.h., ob die Tasten SO oder S1 gedrückt sind oder die verbleibende eingeschaltete Taste S2 (logische Entscheidung 612).
Unter der Annahme, daß die gedruckte Taste SO oder S1 ist, enthält das Register A09 die Bytes 0000 0000 oder 0000 0001. Mittels der Mikroanweisungen MAD, CRTB und ANDB wird das Byte (CP) 313 aus der Adresse 00B6 herausgezogen und die beiden letzten signifikanten Bits, die dem Bedingungscode entsprechen, werden auf Full gesetzt.
Das auf diese Weise modifizierte Byte CP wird anschließend in das Register B02 eingegeben.
Anschließend wird mittels der Mikroanweisungen ORA und AMD das Byte (CP) 313 in die Zelle 00B6 eingeschrieben, wobei die letzten signifikanten Bits dieses Bytes 00 oder 01 enthalten, jejnachdem, ob die Taste SO oder S1 betätigt ist. Diese Operationen werden durch Block 613 wiedergegeben.
Wenn auf der anderen Seite die Taste S6 betätigt wurde (logische Entscheidung 611) oder die Taste S2 (logische Entscheidung 612) wird ein Sprung zu der Adresse IG0TU6 bzw. zu der Adresse IG0TU7 durchgeführt. In beiden Fällen wird die Mikroanweisung CRTA ausgeführt (Blöcke 614· und 615)· Sie überführt die Zeichen 0000 0010 bzw. 0000 0011 in das Register A09- Anschließend wird in beiden Fällen ein nicht bedingter Sprung zu der Adresse IG0TU8 ausgeführt, von wo aus diejenigen Mikroanweisungen, die schon im Zusammenhang mit Block 613 beschrieben wurden, ausgeführt werden.
Anschließend wird ein Sprung zu der Adresse IALFA ausgeführt um die Erkennung der nachfolgenden Anweisung mittels des Übersetzer-Mikroprogramms durchzuführen, wie es bereits erklärt worden ist.
5098 2 8/0783
also
Zuri Abschluß istMiargestellt worden, wie der dritte Funktio-3-block der Anweisung" YOP die Position 9 von RG 359 mit" dec Code der betätigten Taste versieht und wie es den Bedingungscode bei 00 setzt, wenn die Taste SO betätigt worden ist, bei 01 für die Taste S1, bei 02 für die Taste S6 und bei 03 für die Taste 32 und die RUN-Taste 7a.
Die Arbeitsweise der drei Funktionsblöcke der Anweisung YOP, die eben beschrieben wurde, wird symbolisch durch die Blöcke 420, 421 und 422 in Fig. 11c wiedergegeben.
Die Beschreibung des DBG-Programms soll nun anhand
der Fig. 11c wieder aufgenommen werden. Nach der Ausführung der Anweisung YOP wird der Bedingungscode mittels dreier "bedingter Sprunganweisungen BDO (logische Entscheidung 422, 423 und 424) analysiert.
Eiö Operationen, die zu den Tasten SO, S1 und S6 gehören, sollen, zunächst kurz gestreift und später ausführlich erläutert werden.
die Taste SO betätigt wurde, liegt GO - 0 vor, so daß ein Sprung zu der Adresse 17AE vorgenommen wird, bei der das Speiche rl esepr'ogramm aufgezeichnet ist, das die optische Anzeige derjenigen Anwei sung f-~aie der bereits durch die Anweisung YOP optisch angezeigten folgt, oder, für den Fall, daß die Bedienungsperson über das Tastenfeld eine Zahl eingegeben hat, wird diejenige Anweisung optisch dargestellt, die bei derjenigen Adresse festgehalten ist, die durch die eingegebene Zahl, vermehrt um den Inhalt von RB 310 angegeben wird.
MQTJi über das Tastenfeld eine Zahl eingegeben wurde und die 2ä£*6 31 betätigt worden ist (OG = 1), so wird ein Sprung zu der Adresse 17C4 ausgeführt, bei der ein Programm festgehalten ist, welches die Unterbrechung der Verarbeitung des
- 70 509828/078 3
zu korrigierenden Programmes "bei der Adresse von RAM 1, die durch die eingegebene Zahl, vergrößert um den Inhalt von EB 320, vorbereitet.
Wenn schließlich die Zahl für eine hexadezimale Basis (D-F) von 8 Zeichen eingegeben und die· Taste S6 betätigt worden ist (CG = 3)> so wird ein Sprung zu der Adresse 17EE ausgeführt, bei der ein Programm aufgezeichnet ist, welches bei der auf der Anzeige 6 optisch dargestellten Speicheradresse diejenige Anweisung oder Daten festhält, welche über das Tastenfeld eingegeben wurden und optisch den Inhalt des Feldes, das bei der um vier heraufgesetzten optisch angezeigten Adresse festgehalten ist,
wodurch es gestattet ist, in RAM 1 sequenziell einzuschreiben. Auf diese Weise kann jede Anweisung des zu korrigierenden Programmes modifiziert werden.
6.4 Programm zum Eingeben mit Magnetkarte (Block B2 von DBG)
Jetzt soll der Fall behandelt werden, bei dem die Taste S2 oder die RUIT-Taste 7a betätigt worden ist.
Mittels der Anweisung YBP2 wird das Basisregister (RB) 310 auf Null gesetzt und der Inhalt von Position 9 des Bedingungsregisters 359 mit der Konstanten "1101" mittels einer Anweisung MIG verglichen. Wie gesagt, ist in Position 9 des Bediiisungsregisters vorher der Binärcode der betätigten Taste eingespeichert worden. Der zu der RUN-Taste- gehörige Code ist "1001". Die Anweisung NIC setzt den Bedingungscode auf Null, wenn die Und-Funktion Null ergibt, setzt sie aber auf eins, wenn sich die Und-Funktion von Null unterscheidet. Wennsich 1001 (RUIT-Taste) in der Position 9 des Bedingungsregisters 359 befindet, so ist die Und-Funktion von Null verschieden, so
- 71 -
509828/078 3
- 7i -
daß CG = 1 ist. Wenn dagegen 0010 festgehalten ist (Taste 32) ist die Und-Funktion Null und GC » 0 (Block 426 von Pig. 11c).
Mittels der Anweisung FO (logische Entscheidung 427) wird eine Kontrolle durchgeführt, um festzustellen, ob CC =0. Wenn CC = 0, d.h. wenn die Taste S2 betätigt worden ist, wird die nachfolgende Anweisung abgeschnitten und mit der Anweisung TLD1 weiter gemacht, welche dem Programm "Einführung eines DBG-Programms von einer Magnetkarte und sofortige Ausführung" entspricht.
Wenn auf der anderen Seite CC = 1 ist, wird mittels der Anweisung BD ein Sprung zu der Adresse 180C durchgeführt, bei der ein Programm aufgezeichnet ist, welches die Ausführung des unterbrochenen Programms wieder aufnimmt, d.h. es überführt den Inhalt des Registers (OPSR) 301 in das Register (PSR) 300.
Im Falle der Betätigung der Taste S2 wird die Anweisung TLD, 1 ausgeführt, dazu die Adresse 018C in das Register (P1) 311 eingeschrieben und mittels der Anweisung SP2 die Adresse 00BE in das· Register (P2) 312.. Anschließend werden mittels der Anweisung MVC zwei Bytes aus 00BE zu der Adresse 018C überführt. Auf diese Weise wird in der zweiten Hälfte des Registers 367 (Fig. 9) die Adresse des Unterbrechungsprogramms, das im Register (IPSR) 302 aufgezeichnet ist, (Block 4-28 von Fig. 11c) festgehalten.
Die Anweisung AP2 wird anschließend ausgeführt und schreibt die Adresse 0150 in das Register (P2) 312 ein. Mittels der nachfolgenden Anweisung STIO wird der Inhalt der Magnetkarte 9 (Fig. 1b) in die Register 360 bis 367 überführt.
- 72 -
509828/0 78 3
.72. 2458851
Die Anweisung STIO kann als in'zwei Funktionsblocke unterteilt angenommen werden. Der erste Block setzt in das Register 360 acht Zeichen, welche die angewählte periphere Sinneit kennzeichnen, die Art der übertragung (Lesen oder Schreiben), die Adresse von RAM 1, bei der die Daten ein- oder ausgelesen werden sollen, sowie die Länge des von der überführung betroffenen Feldes (maximal 64 Bytes). Diese Zeichen v/erden durch die Kanallogik 45 benutzt, um die Überführung zu steuern (Block 429).
Der zweite Funktionsblock sorgt für die Überführung und die Kontrolle der Korrektheit der erhaltenen Daten in bekannter "./aise (Block 430), wobei der Zeiger P2 als Adressierer von RAK 1 benutzt wird. Anschließend wild die Anweisung LAG ausgeführt, welche den Start des aufgezeichneten Mikroprogramms in der Weise bewirkt .
Die erste Mikroanweisung dieses Mikroprogramms ist die Mikroanweisung MAD, welche in das Register A14 das Byte CP 313 überfährt, das bei der Adresse 00B6 vorhanden ist. Anschließend wird mittels der Mikroanweisungen TADI und SADI das 3it 03 von GP 313 getestet, welches, wie bereits dargestellt (Fig. 9a), angibt, ob die zu lesende Anweisung in RiIM 1 oder ROM 2 vorhanden ist. Diese Kontrolle ist notwendig, da die Anweisung LAG eine Länge von 4 Bytes hat,
so daß sie in zwei aufeinanderfolgenden Stufen gelesen werden muß. Während der ersten Stufe werden die beiden Bytes in die Register B14 und B15 überführt. Wie bereits in dem den Übersetzer betreffenden Kapitel behandelt worden ist, sind das die Bytes "AB" bzw. "88". Während der zweiten Stufe werden das dritte und vierte Byte, das sind "01" und "50"ι ausgelesen. In dem Falle eines DBG-Programms wird die Anweisung LAG in ROM 2 eingespeichert, woraufhin
- 73 -
509828/0783
es notwendig wird, das Register L02 mit der Programraadre.sse, die im Register LO7 (Fig. 8) vorhanden ist, zu versehen. Das wird mittels der Mikroanweisungen SLL und SAB bewirkt.
Schließlich werden mittels der Mikroanweisungen ROMA und TAB das dritte und vierte Byte der Anweisung - das ist "0150" in das Register L11 (Fig. 8) überführt. Pur den Fall, daß die Anweisung LAG zu einem Programm gehört, das sich in RAM 1 befindet, würde ein Sprung nach der Adresse IPSRO ausgeführt, so daß die Mikroanweisungen MAIP und MBI, die durch das Register LO? adressiert werden, ausgeführt würde. In jedem .Fall ist die Adresse "0150" in dem Register L11 festgehalten. Die Mikroanweisung SLL wird anschließend ausgeführt, wodurch die Adresse "0150" in den Programmadressierer L07 überführt wird. Anschließend wird mittels der Mikroanweisungen T3A und AMD das Byte, das in dem Register 314 vorhanden ist - das ist das Byte "83" - welches, im hexadezimalbiiiärea Code die Konfiguration "10001000" annimmt - in das Register (GP) 3^3 überführt. 3ine nicht bedingte Sprunganr veisur..3 vird dann zu der Adresse IALS1A von ROM 2 ausgeführt, wo die erste Mikroanweisung des Interpretations-Mikroprogr^rriTiS (Fig. 10a) vorhanden ist.
Die tirade aufgeführten Operationen sind symbolisch durch den Block 4-31 in Fig. 11c dargestellt. Zusammenfassend gesagt, befindet sich am Ende der Anweisung LAC das Byte 10001000 im Rerister (GP) 3^3 und die Adresse "0150" im Programm-Adressierer. ■ ■ " .
Das heiiiii, daß wenn der Interpretationsteil die logische Entscheidung 20? (Fig. 10a) erreicht, wird er nicht den Sprung nach IIXTE (Block 250) ausführen, da das Bit 05 des Bytes GP (10001000) sich im "O"-Zustand befindet. Wenn der Interpreta-
509 828/078 3 BAD ORIGINAL
tionstsil dann die logische Entscheidung 204 erreicht, wird er ciaG 3it 03 von GP im 1-Zustand finden, so daß er das Auslesen aus RAM 1 (Block 025) bei der durch das Register L07 angegebenen Adresse - das ist "0150" - ausführen wird.
Bei dieser Adresse ist durch die Anweisung STIO (Block 431) die erste Anweisung des Magnetkarten-Programms - wie bereits dargestellt - in den Registern 360 "bis 567 festgehalten. Die letzteren sind in Zellen von RAM 1 zwischen 0150 und 0-181? (Fig. 9) zugeteilt. Das Magnetkartenprogramm wird anschließend wie jedes andere in RAM 1 vorhandene Programm ausgeführt.
Es soll darauf hingewiesen werden, daß durch einfaches Setzen des Bytes "88" in das Register (GP) 313 es möglich ist, im Verlaufe der Ausführung den Programmträger zu wechseln. Es wurde tatsächlich ein Sprung ausgeführt vom Auslegen aus ROM 2, in dem die DBG-Programme aufgezeichnet sind, zum Auslesen von RAM 1(in dem das auf der Magnetkarte 9 aufgezeichnete Programm vorhanden ist.
O-*
Las Kcgnetkartenprogramm kann ein beliebiges DBG-Programm (mit einer maximalen Länge entsprechend 64 Bytes) sein, das sich von denjenigen in ROM 2 unterscheidet. Der Programmierer hat daher einen Satz von Magnetkarten zu seiner Verfügung, auf dein soviele DBG-Programme vorhanden sind, wie sie von ihva gebraucht werden. Das können sowohl Programme sein, die Susannen mit dem erfindungsgemäßen System geliefert werden oder auch Programme, die vom Programmierer selbst aufgestellt; wurden, um besondere Probleme zu lösen, die mit der von ihn benutzten Prograramart verbunden sind. Fehlerbefreiuu-jrprogramme, die beispielsweise für Kontenführungsprogramme £:-.;1f„chb sind, werden sich von solchen Fehlerbefreiungsprocrr..;~en unterscheiden, die zu wissenschaftlichen Problemen gcioren.
- 75 -5 0 9 8 2 8/0783
BADOFIiGlNAL
Es soll darauf hingewiesen werden, daß die auf den Magnetkarten vorhandenen Programme derart beschaffen sein müssen, daß sie beim Ende ihrer Ausführung diejenigen Parameter des Programms zur Verfügung stellen , welche anschließend aktiviert werden.
Ia einzelnen können drei Fälle auftreten:
a) Das Programm, in das nach dem DBG-Programm der Einstieg erfolgt, ist das vorher unterbrochene Programm (getestetes -Programm),
b) das Programm, in das der Einstieg erfolgt, ist ein anderes D3G-Programm und
c) das Programm, in das der Einstieg erfolgt, ist durch ein weiteres Magnetkartenprogramm festgelegt bzw. das Magnetkartenprogramm schließt die Fehlerbefreiung· ab.
In den Fallen a) und b) kann bei dem Ausführungsbeispiel das Magnetkartenprogramm nicht langer als 48 Bytes sein, um nicht die Register 366 und 367 zu belegen, welche - wie gesagt Parameter enthalten, die zusammen mit denjenigen, die im Register (OPSR) 301 vorhanden sind, für die Wiederaufnahme des unterbrochenen Programms notwendig sind. Dieses Programm kann das getestete Programm sein (Fall a)) oder das DBG-Programm (Fall b)).
Im Fall c) dagegen kann das Magnetkartenprogramm eine Länge von bis zu 64 Bytes haben, da die in den Registern 366 und 36? aufgezeichneten Daten nicht das folgende Programm bestimmen.
Fall c) tritt beispielsweise auf, wenn der Programmierer ein DBG-Programm von einer Länge von mehr als 64 Bytes benutzen. muß.
509828/0783 - 76 -
BAD ORIGINAL -
In diesem Fall muß der Programmierer auf einer Magnetkarte ein Programm mit der Länge von höchstens 64 Bytes aufstellen, welches die folgenden Funktionen ausführt:
1) Überführung einer Zone des Speichers RAM 1, die durch den Programmierer bestimmt wird, zu einem externen Datenträger, beispielsweise einem Magnetplattenspeicher,
2) Einführung eines Programms, das auf einem externen Speicher vorhanden ist (Magnetkarten oder Magnetband) in die soeben frei-gemachte Zone und
3) Setzen des Programm-Bedingungsbytes 313 mit dem Bit 05 von GP auf den 1-Pegel (Lesen aus RAM) und den Programmadressierer L07 mit der Adresse der ersten Anweisung des eingespeicherten Programms. Diese letzte Operation wird durch eine einzige Anweisung LAC ausgeführt.
Von jetzt ab führt das eingespeicherte Programm seine diagnostischen Funktionen in Bezug auf das Programm in den verbleibenden Teilen von RAM 1 durch. Auf diese Art und Weise ist es möglich, DBG-Programme von einiger Komplexität - und daher Länge - durchzuführen, ohne das zu testende in RAM 1 enthaltene Programm zu beeinflussen.
Es soll angenommen werden, daß das zu testende Programm und seine'Daten die freie Zone von RAM 1 vollständig einnehmen und daß es so nicht möglich ist, ein DBG-Programm selbst kleinster Größe einzugeben. In diesem Fall wäre es nicht möglich, ein DBG-Programm einzugeben, ohne nicht wenigstens teilweise das zu testende Programm zu zerstören und es wäre dann auch nicht möglich, diese beiden Programme abwechselnd in Funktion zu setzen. Infolgedessen wäre es notwendig - wie bereits in der Einleitung erwähnt - daß der Programmierer das
509828/0783
Programm auf einer Anlage testen müßte, deren Kapazität so groß ist, daß sie das zu testende Programm und die DBG-Prograrame gleichzeitig aufnehmen kann. ·
Mittels des erfindungsgemäßen Systems ist es aber möglich, durch einfaches Setzen des Umschalters 100 in die DBG-Position, Einführen einer Magnetkarte 9 in den Magnetkartenleser 9' und Betätigung der Taste S2 die Batenverarbeitungsanlage in die Fehlerbefreiungs-Stellung zu bringen und das auf der
in
Magnetkarte enthaltene Programm die Register 360 bis 367 bzw. 360 bis 365 einzuspeichern.
Diese Operation betrifft nicht die freie Speicherzone und infolgedesseir^Uas zu testende Programm. Von ,jetzt an wird wie dargestellt - das von der Magnetkarte eingegebene Programm aucgeführt.
Im einzelnen soll angenommen werden, daß das Magnetkartenprogramm einen Teil des Speicherinhalts, der das zu testende Programm betrifft, beispielsweise die zweite Hälfte, zu einem externen Träger überführt. Darüber hinaus soll angenommen werden, daß es in diese Zone ein DBG-Programm einführt, . welches in der Lage ist, die erste Hälfte des zu testenden Programmes, die sich in RAM 1 befindet, abzuwickeln. Durch Betätigung des Umschalters 100 kann man die beiden Programme abwechselnd arbeiten lassen. Das DBG-Programm führt dann die diagnostischen Verarbeitungsoperationen aus und liefert als Ergebnis, beispielsweise in ausgedruckter Form, die Fehler, die beider Aufstellung des getesteten Programms gemacht wurden. Das DBG-Programm ist darüber hinaus so aufgestellt, daß erkannt., wird, ob in RAM 1 sich keine weiteren Anweisungen des zu testenden Programms, die überprüft werden müssen, mehr befindet.
- 78 -
509828/0783
- 7a -
An dieser Stelle sorgt das DBG-Programm dafür, daß der kontrollierte und korrigierte Teil des zu testenden Programms dem externen Träger zugeführt wird, um an seiner Stelle die zweite Hälfte des zu testenden Programms einzuspeichern, die vorher dem externen Träger zugeführt worden war.
Die zweite Hälfte des zu testenden Programms wird anschließend überprüft und das Ergebnis dieser überprüfung wird entsprechend - wie eben erwähnt - ausgedruckt.
Anschließend ist der Programmierer in der Lage, die Anweisungen entsprechend der Überprüfung durch das DBG-Programm zu korrigieren und das korrigierte Programm wieder in RAM 1 einzugeben. Der Programmierer befiehlt anschließend die Ausführung des auf diese Weise korrigierten Programms. Aus dem Gesagten war bereits zu ersehen, wie der Programmierer unter Benutzung des erfindungsgemäßen Fehlerbefreiungsprogramms die Möglichkeit hat, selbst komplizierte Überprüfungen vorzunehmen, ohne das zu testende Programm zu beeinflussen.
Uie dargestellt, können bei dem erfindungsgemäßen DBG-System darüber hinaus die bereits in ROM 2 befindlichen DBG-Programme durch einfaches Betätigen des Umschalters 100 und einer der Tasten 102 (SO, S1, S6) abgerufen werden.
6.> Lesen RAM 1 Block BO (Taste SO)
Im einzelnen wird nach Beendigung der Eingabe über das Tastenfeld mit der Betätigung 'der Taste SO (logische Entscheidung A-?3, Fig. 1.1c) ein Sprung zu der Adresse 17AE ausgeführt. Bei dieser Adresse ist die Anweisung AP, 1 vorhanden, welche die Adresse 00C7 in das Register (P1) 31.1 eingibt. Anschließend wird eine Anweisung-YBP, 1 ausgeführt, welche die Adresse
- 79 509828/0783
00C7 in das Register (KB) 310 eingibt. Das Bit 02 des Bytes (BSD) 351 wird mittels der Anweisung NI (Block 435 in Fig. 11d) auf Null gesetzt. Anschließend wird mittels der Anweisungen YBP, 1 und SP, 1 das Basisregister (RB) 310 auf 0160 und das Register P1 auf 0010 (Block 436) gesetzt. Mittels der Anweisung CBI, 1 wird anschließend eine Kontrolle durchgeführt, um festzustellen, ob Daten in das Register 364 (logische Entscheidung-437) übertragen worden sind. Wenn Daten vom Tastenfeld eingegeben worden sind, wird ein Sprung zu der Adresse.1704 ausgeführt, andernfalls wird die Anweisung ARI durchgeführt, welche die Konstante 4 dem Inhalt des Registers 365 (Block 438) hinzuzählt. Wie bereits dargestellt, enthält dieses Register die relative Adresse des unterbrochenen Programms (Block 408 in Fig. Ha). Die auf diese Weise modifizierte Adresse wird anschließend mittels der Anweisung LR in das Register 362 überführt und ein nicht bedingter Sprung wird zu der Adresse 173E (Block 409 in Fig. 11a) ausgeführt. Wie bereits dargestellt, beginnt von Block 409 an die optische Anzeige der Anweisung, die bei der in das Register 362 eingegebenen Adresse vorhanden ist.
In diesem Fall werden die beiden Bytes, die der vorher dargestellten Anweisung folgen, optisch angezeigt. Daher können durch die Betätigung des Umschalters 100 und der Taste SO die Anweisungen des zu korrigierenden Programmes eine nach der anderen auf der Anzeigeeinheit 7 optisch dargestellt werden.
\lenn auf der anderen Seite die Betätigung der Taste SO die Eingabe einer Adresse (logische Entscheidung 437) vorangegangen ist, oder eine Eingabe vom Tastenfeld durch die Betätigung der Taste S1 (logische Entscheidung 424 in Fig. 11c) beendet worden ist, wird ein Sprung zu der Adresse 1704 ausgeführt. Der Inhalt des Registers 364, der die über das Tastenfeld eingegebene Adresse (Block 421 in Fig. 11c) enthält, wird komprimiert und in das Register 362 übertragen. Diese Operationen werden durch den Block 439 in Fig. 11e wiedergegeben.
509828/0783
. - 80 -
BAD ORIGINAL
Anschließend wird mittels der Anweisungen NIG und BD eine Überprüfung durchgeführt, um festzustellen, ob die betätigte Taste SO oder S1 war. Das wird durch die■Bildung der Und-Funktjion mit der Position 9 des Bedingungsregisters 3^-9, die vorher entsprechend der betätigten Taste (Fig. 13) eingegeben wurde, und der Konstanten 1101 (Block 44-0) bewerkstelligt. Darauf/hin werden die beschriebenen Operationen ausgeführt, beginnend mit Block 408 in Fig. 11a, das heißt, daß die Anweisung, deren Adresse ü"b>.-r · Tastenfeld 5 eingegeben wurde und nun im Register 362 (Block 439 in Fig. He) enthalten ist, optisch dargestellt wird. Zusammenfassend gesagt, wird, wenn eine Adresse über das Bstenfeld 5 eingegeben wurde und die Taste SO betätigt wird, die bei der eingegebenen Adresse enthaltene Anweisung optisch dargestellt.
6.6 STOP-Reservierungs-Biock Bi (Taste S1)
Wenn andererseits die Taste S1 betätigt wurde, wird das Register (RB) mittels der Anweisungen TLD, 2 und YBP auf 0158 gesetzt. Anschließend wird die Summe (AR) der Inhalte der Rogisoer 361 und 362 gebildet, deren Ergebnis in das Register 361 (Block 442) eingespeichert wird. Wie es bereits anhand von Block 415 in Fig. 11b erklärt worden.ist, enthält das Register 36i das Basisregister (RB) 320 des unterbrochenen Programms, während das Register 362 (Block 439) die relative Adresse, die über das Tastenfeld 5 eingegeben wurde. Deshalb wird mittels der beschriebenen Operationen durch den Block 442 in Register 361 die absolute Adresse des unterbrochenen Prcgramas eingeschrieben, die durch den Programmierer über das Tastenfeld ausgewählt wurde.
Ilittels einer Anweisung CVB wird die absolute Adresse aus der binären Form in die dezimale umkodiert und in das erste und zweite Byte des Registers 361 (Block 443) überführt.
509828/0783 . - 8» -
BAD ORIGINAL
Diese Adresse wird in das Register (is) 350 durch die Anweisungen SP,2; TLD; 1, YBP, 1; TLD, 1 (Block kkk) überführt. Mittels der Anweisung 0I-,AP2; YBP1; BD wird das Bit 02 des Bytes (BSD) 351 auf 1 eingesetzt und anschließend wird die Adresse φΛ6φ in das Register (RB) 310 eingegeben und ein nicht bedingter Sprung zu der Adresse 17BE (Block ^38 in Fig. 1Id) ausgeführt. Von jetzt an werden die Operationen, die bereits anhand des Blockes 438 (Fig. ITd) kO9 und der folgenden (Fig.11a, 11b und 11c) beschrieben worden sind ausgeführt, so daß die vorher optisch angezeigte Anweisung auf der Anzeigeeinheit 6 verbleibt. Es ist dargestellt worden, daß wenn der Programmierer eine relative Adresse über das Tastenfeld 5 eingibt und anschließend die Taste S1 betätigt, die absolute Adresse, die der eingegebenen entspricht, automatisch in das Register (IS) 350 eingeschrieben .und das Bit 02 von BSD 351 in den binären M1"-Zustand gesetzt wird. Wie bereits beschrieben, werden diese Daten vom Interpretations-Mikroprogramm benutzt, um am Anfang der Phase ALFA jeder Mikrοanweisung zu prüfen, ob die Adresse der fortgeschrittenen Anweisung gleich der reservierten ist (logische Entscheidungen 258 und 262 in Fig. 10b).
Nach dem Reservieren der STOP-Adresse setzt der Programmierer den Umschalter 100 zurück in seine Normalposition und betätigt die RUN-Taste 7a oder einen Rückschalter. Die Verarbeitung des korrigierten und vorher unterbrochenen Programms wird damit wieder aufgenommen, beginnend von der im Anzeigeteil 6 optisch angezeigten Anweisung.
Das Interpretations-Programm beendet daher die Verarbeitung und optische Anzeige der Anweisung, wenn die reservierte Adresse dieselbe ist, wie die der auszuführenden Anweisung.
Die günstige Verwendbarkeit des DBG-Programms für die "Reservierung einer Programm-Stop-Adresse" wird dann offensichtlich, bei dem ein Programm von einem bestimmten Punkt an korrigiert werden soll.
- 82-
509828/0783
In diesem Fall ist es nützlich, die Verarbeitungsoperationen direkt vor dem Anweisungsblock, in dem ein Fehler vermutet wird, anzuhalten.
6.7 Einschreiben in RAM 1-Block B6 (Taste S6)
Wenn nach dem Eingeben von acht hexadezimalen Zeichen der Programmierer die Taste S6 (logische Entscheidung 425 in Fig. 11c) betatigt,führt das DBG-Programm einen Sprung zum Block 446 in Fig. 11f aus.
Von dieser Adresse auszugehend wird ein "Einschreiben in RAM 1-Programm" aufgezeichnet und die acht hexadezimalen Zeichen werden als Modifizierung des Inhaltes von RAM 1 angesehen, wie jetzt erläutert werden soll.
Die erste bei der Adresse 17EE aufgezeichnete Anweisung ist eine Anweisung AP, 2, welche den Zeiger (P2) 312 auf das vierte Byte des. Registers 364 setzt, während die nachfolgende Anweisung TCP den Zeiger (P1) 311 auf das erste Byte des Register 364 setzt. Wie es schon anhand von Block 421 (Fig. 11c) gesehen wurde, werden die über das Tastenfeld eingegebenen Zeichen im Register 364 aufgezeichnet.
Die Anweisung YTG, welche die eingeführten Zeichen, die im Register 364 vorliegen, komprimiert und transcodiert, wird anschließend ausgeführt. Diese Anweisungen werden symbolisch durch den Block 446 in Fig. 11f wiedergegeben. Anschließend wird mittels der Anweisungen TLD, 2, YBP, 2 und TRD, 1 der Inhalt; des Register 362 in das Register (P1) 311 überführt, welches,wie anhand von Block 420 in Fig. 11c gesehen wurde, die Adresse derjenigen Anweisung oder Daten ist, die auf der Anzeige 6 vorliegt. Das Register (P2) 312 wird anschließend
- 83 509828/0783
mittels einer Anweisung -TL, 2 (Block 447 in Fig· 11f) auf Null gesetzt. Der Inhalt des Registers 364 wird mittels der Anweisungen YBP, 2; AP, 2 und MVG in das Register des Speichers RAM 1, der durch das Register (P1) 311 (Block 448). adressiert wurde, überführt. Das Register (RB) 310 wird anschließend auf den Wert 0160 (Block 449) gesetzt. Anschließend wird ein Sprung zu der Adresse 17BC (Block 438 in Fig. 11d) ausgeführt, woraufhin die Anweisung oder die Daten, die der modifizierten Anweisung folgen, optisch angezeigt werden, wie es vorher beschrieben wurde.
Es ist dargestellt worden, wie es möglich ist,, den Inhalt der auf der Anzeigeeinheit fest vorhandenen Anweisung durch die Eingabe von acht Zeichen über das Tastenfeld 5 und die Betätigung der Taste S6 zu verändern.
6.8 Schrittweise Programmausführung
Schließlich betätigt die Bedienungsperson die RIM-Taste oder einen Druckschalter des Bedienungsfeldes 7 (logische Entscheidung 427 in Fig. 11c), woraufhin - wie gesagt - ein Sprung zu der Adresse 180G ausgeführt wird. Die Anweisungen TLD, 2, TLD, 1 und MVG werden deshalb ausgeführt (Block 450 in Fig. 11g) um in den Zellen CA und CB die beiden Bytes des Registers (RG) 359, die vorher in das Register 367 (siehe Block 403 in. 11a) überführt wurden, wieder-herzustellen»
Anschließend wird mittels der Anweisungen AP, 2; AP, 1 und MVC (Block 451), das Tasteneinschaltbyte, das vorher in die Zelle 018A (Block 404 in Fig. 11a) überführt worden ist, im Register (AB) 370 wieder hergestellt.
Mittels der Anweisungen SP, 2; SP, 1 und MVG (Block 452) wird der Inhalt des Arbeitsregisters 352, der vorher in das Re-
- Qh-509828/0783
- 8k -
gister 566 (Block 401 in Fig. Ha) überführt wurde, ebenfalls wieder-hergestellt.
Schließlich wird die Anweisung YPS ausgeführt, welche den Inhalt des Registers (OPSR) 301 im Register (PSR) 300 wiederherstellt und den Inhalt des Registers (IR) 327 dem Programmadressierer L07 (Block 452) zuführt. Auf diese Weise wird diejenige Anweisung des zu testenden Programms, die der optisch angezeigten folgt, gelesen. Im einzelnen gilt für das Interpretations-Programm:
1) Ausführung des Sprunges zu der symbolischen Adresse IINTE (logische Entscheidung 202 und Block 250, Fig. 10a und b), insoweit als bei den Bytes CP 313 und PI 314 das Bit 05 sich stets im 1-Zustand befindet, da der Umschalter 100 sich noch in seiner DBG-Position befindet.
2) Da das Bit 01 von .BSD sich auf dem Null-Pegel befindet (entsprechend dem Normalzustand) wird ein Sprung zu der Adresse IINTE1 (logische Entscheidung 257 und Block 265 von Fig. 10b) ausgeführt, das Bit bO1 von BSD auf eins gesetzt und schließlich die Ausführung der Anweisung durch den Sprung nach IALFAR (Block 265) fortgesetzt.
3) Am Ende der Anweisung führt der Interpretationsteil die Operationen, die unter 1) erläutert sind mit der nachfolgenden Anweisung aus und die logische Entscheidung 257 folgt daraufhin wie unter 2) dargestellt. Das Bit 01· von BSD wird darüber hinaus auf Null gesetzt, wie es stets zu Null gemacht wird, bevor ein DBG-Programm ausgeführt wird.
4) Wie' bereits dargestellt (Fig. 10b und c) fährt die Anlage fort, das DBG-Programm auszuführen und die gerade ausgeführte Anweisung wird folglich optisch dargestellt.
5 0 9828/0783 ~5~
Es ist ersichtlich gewesen, dass, wenn der Programmierer den Umschalter 100 in die DBG-Position setzt und die RUN-Taste 7a betätigt, die optisch dargestellte-Anweisung ausgeführt wird. Jedesmal, wenn die RUN-Taste betätigt ist, wird der Programmzähler um vier Einheiten heraufgesetzt, wie es mit Bezug auf den Interpretationsteil erwähnt worden ist, und die Anlage führt die Anweisung aus, die bei dieser Adresse aufgezeichnet ist. ■ .
Mittels der wiederholten Betätigung der RUN-Taste ist es damit möglich, die Ausführung einer Anweisung und.die optische Darstellung der nachfolgenden Anweisung in einem zu testenden Programmblock zu befehlen. Diese abwechselnde Folge der Ausführung einer Anweisung und der optischen Darstellung der nächsten Anweisung wird "schrittweise" Ausführung genannt und die Nützlichkeit bei der Fehlerbefreiung eines Programmes ist offensichtlich.
7. Abschließende Bemerkungen und Beispiele
Eine abschließende Beschreibung der dem Programmierer sich bei der Perfektionierung eines Programmes durch das erfindungsgemäße Fehlerbefreiungssystem sich bietenden Möglichkeiten soll jetzt anhand von Pig. 14 beschrieben werden.
ITorraalerweise gibt der Programmierer das zu testende Programm in die Datenverarbeitungsanlage ein (Block 700) und befiehlt die Ausführung.
Wenn er'einen Fehler bemerkt, setzt er den Umschalter 100 in
die DBG-Position (logische Entscheidung 701) und hält auf
diese «reise die Ausführung des zu testenden Programms an,
woraufhin auf der Anzeigeeinheit die optische Anzeige der-
- 86 50 9 828/0783
jenigen. Anweisung erscheint, die im Moment der Unterbrechung nicht mehr ausgeführt wird (Block 702). Die Anlage kann darüber hinaus in den Fehlerbefreiungs-Betriebszustand auch dann übergehen, wenn eine STOP-Adresse der Verarbeitungsoperationen, die vorher festgelegt wurde, erkannt worden ist. In diesem Fall verhält sich die Anlage so, als ob der Umschalter 100 betätigt worden wäre und auch die Tasten SO bis S6 behalten ihre bei der DBG-Operation beschriebene Bedeutung bei.
An dieser Stelle schaltet das DBG-Programm die Tasten SO, S1, S2 und S6 ein und begibt sich in eine Warteposition für die Dateneingabe über das Tastenfeld (Block 703)· Entsprechend der betätigten Taste (logische Entscheidung 704, 705) führt die Anlage das entsprechende DBG-Programm aus, das in ROM 2 enthalten ist.
Zum Ende des DBG-Programms, das zu der entsprechenden Taste SO, S1, SG und der EUN-TasteVgehört, gelangt der Prozessor zu Block 701 zurück, um die Ausführung eines weiteren DBG-Programms abzurufen.
Wenn andererseits die Bedienungsperson mittels der Taste S2 die Ausführung eines auf einer Magnetkarte (Block 706) gespeicherten Programms befohlen hat, wird-die Wiederaufnahme durch eben dieses Magnetkartenprogramm gesteuert. Im einzelnen ist es möglich, die Wiederaufnahme bei der logischen Entscheidung 701 (getestetes Programm oder DBG-Programme) oder bei der logischen Entscheidung 702 - und dabei direkt" D3G-Programm - vorzunehmen.
Das auf einer Magnetkarte aufgezeichnete Programm eröffnet deni Programmierer die Möglichkeit, andere DBG-Programme, die auf anderen Trägern aufgezeichnet sind, einzuschalten, wodurch dem Programmierer alle erwunschbaren Möglichkeiten, des Wiedereinstiegs gegeben sind.
- 87 -
509828/0783
Ss sollen Jetzt zwei einfache Beispiele für die Benutzung des erfindungsgemäßen Fehlerbefreiungssystems gegeben werden.
Beispiel 1 ·
Es soll angenommen werden, daß der Programmierer einen Fehler im Programm suchen muß. Er kann beispielsweise das Programm in zwei Blöcke mit einer bestimmten Anzahl von Anweisungen unterteilen und die falsche Anweisung innerhalb der Grenzen dieser Blöcke suchen. In diesem Fall wurde er in der folgenden Art vorgehen:
Er setzt den Umschalter 100 in die DBG-Position und die Anweisung, die auf die Unterbrechung folgt, wird daraufhin optischdargestellt.
Er gibt über das Tastenfeld die relative Adresse derjenigen Anweisung ein, bei der das Programm anhalten soll und betätigt die Taste S1 (Blöcke 710 und 711).
Er setzt den Umschalter 100 zurück in seine Normalposxtion und betätigt die RUN-Taste.
Das Tesbprogramm wird daraufhin bis zur reservierten Adresse weiter ausgeführt. Das zu testende Programm hält bei dieser Adresse an und die bei der reservierten Adresse aufgezeichnete Anweisung wird optisch dargestellt (Block 702). Die Ausführung des Programms bis zu der reservierten Adresse deutet daraufhin, daß in diesem Block keine Formalfehler vorhanden sind. Es soll also angenommen werden, daß in dem zu testenden Programm ein Fehler nicht vorliegt. Der Programmierer reserviert in der vorher beschriebenen Weise die Adresse des folgenden Blocks, setzt den Umschalter 100 zurück in seine Normalposition und betätigt die RUN-Taste 7a.
509 8 28/078 3
Sn noil nun angenommen werden, daß der Programmierer einen Prc~ranimierfehler im zweiten Block findet und daß er den Wunsch hat, die zu korrigierende Anweisung zu identifizieren. Er gi"bt die Initialadresse des Blocks über das Tastenfeld ein und betätigt die Taste SO (Blöcke 712 und 713). Das DBG-Frogramm sorgt für die optische Anzeige der Adresse und der entsprechenden Anweisung auf der Anzeigeeinheit und kehrt folglich zu den Blöcken 702 und 703 zurück. An dieser Stelle betätigt der Programmierer die RIJR-Taste, nachdem er die in diesem Block vorhandenen Fehler beseitigt hat, wodurch das Testprogramm wieder an der Stelle aufgenommen wird, an der ep unterbrochen wurde. Auf diese Weise kann der Programmierer einen Block, in dem er einen Fehler vermutet, Anweisung für Anweisung durchgehen.
Wenn er feststellt, daß eine optisch dargestellte Anweisung falsch ist, betätigt er nicht die RUIT-Taste, sondern gibt über das Tastenfeld die richtige Anweisung ein und betätigt dann die Taste S6. Auf diese Art und Weise wird durch das D3C—Programm die falsche Anweisung bei der optisch dargestellten Adresse durch die über das Tastenfeld eingegebene ersetzt.
Auf diese V/eise hat der Programmierer die Möglichkeit, alle Anweisungen des Programms zu kontrollieren und diejenigen Berichtigungen auszuführen, welche er für notwendig hält.
BeisOJel 2
Ss soll im folgenden angenommen werden, daß das zu verbessernde Programm alle verfügbaren Speicherplätze einnimmt.
Darüber hinaus soll angenommen werden, daß nach Ausführung aller möglichen DBG-Operationen der in ROM 2 vorhandenen Programme der Programmierer noch nicht alle Fehler beseitigen konnte.
5098 28/0783
- 89 -
BAD ORfGiNAL
Aus dem Gesagten ist es offensichtlich, daß das zu testende Programm nicht wieder aufgenommen werden kann und der Programmierer deshalb das Programm noch einmal durchgehen muß.
Zu diesem Zweck ist es für ihn nützlich, den Inhalt von RAM 1 in tabellarischer Form ausgedruckt zu erhalten. Dann kann der Programmierer durch eine Analyse diese Ergebnisse seinen Weg zurück zu den falschen Anweisungen finden. Um den Inhalt des Speichers auszudrucken, ist es nun aber notwendig, daß ein geeignetes DBG-Programm die Ausführung des Drückens überwacht. Da dieses Programm nicht unter denjenigen vorhanden ist, die in SOM 2 aufgezeichnet sind, kann der Programmierer eine Magnetkarte benutzen, auf der dieses Programm festgehalten ist.
Um den Inhalt des Speichers ausgedruckt zu erhalten, muß der Programmierer folgendermaßen vorgehen:
Er führt eine Magnetkarte in den Leser 9' ein.
Er setzt den Umschalter 100 in die DBG-Position.'

Er betätigt die Taste S2.
wie bereits dargestellt, wird hierdurch das auf der Magnetkarte vorhandene Programm in die Register 360 bis 367 von ZRM überführt und sofort ausgeführt.
Es ist sichergestellt, daß die Register 360 bis 367 nicht ausschließlich für DBG-Programme reserviert sind, sondern während der normalen Arbeitsweise dazu dienen, Zwischenergebnisse einer Anzahl von Anweisungen aufzunehmen.
Es soll darüber hinaus daraufhin gewiesen werden, daß diese Register 360 bis 367 auf jeden Fall in· jedem beliebigen Rech-
-90 509828/0783
BAD ORIGINAL .
Λ,-jr vorhanden sind, da es stets notwendig ist, bei einigen Abweisungen Zwischenergebnisse zu speichern (wie beispielsweise bei Multiplikation- und Divisionsanweisungen).
Ss geht aus dem Gesagten hervor, wie die Benutzung von ZHIl es gestattet, jedes auf einer Magnetkarte gespeicherte Programm einzuspeichern und auszuführen, ohne daß signifikante Parameter des zu testenden Programms betroffen sind.
Die Vorteile dieser Möglichkeiten leiten sich nicht nur daraus ab, daß DBG-Programme auf einer Magnetkarte aufgezeichnat ist, die prinzipiell nur begrenzten Raum aufweist, sonder.i haben ihr e Ursache in erster Linie darin, daß das Programia in der Lage ist, eine Speicherzone freizumachen, ohne daß deren Inhalt vernichtet wird, und darin, daß ein DBG-Pr-ogranm größerer Länge und Komplexität in dieser Zone gespeichert werden kann.
Daraus geht weiter geht hervor, daß unter Benutzung des erfinäur-gsTjemäßen Fehlerbefreiungsprogramms der Programmierer vollständig unabhängig ist, was das Aufstellen und die Perfektionierung von neuen oder die Modifizierung von bestehenden Programmen angeht. ,
Las erfindungsgemäße System gibt dem Programmierer eine große Anzahl von neuen Möglichkeiten. Diese hängen auch von der Komplexität des zu behandelnden Problems ab, der Zahl verfügbarer DBG-Programme und schließlich auch von den Fähigkeiten des Programmierers.
Ls ist selbstverständlich, daß die Veränderung, der Ersatz oder das Hinzufügen von Teilen bei dem beschriebenen Progrannverbesserungssystem vorgenommen werden kann, ohne den Bereich der Erfindung zu verlassen.
- 91 -
5 0 9 8 2 8/0783
BAD ORIGINAL
Neben Magnetkarten können die externen Datenträger für Fehlerbefreiungsprogramme, die dem Programmierer zur Verfügung stehen, Magnetkarten, Lochkarten usw. sein. Die einzige Bedingung ist, daß die Zahl der auf dem Datenträger aufgezeichneten Zeichen die Zahl der in ZRM zur Verfügung stehenden Bytes nicht.übersteigt.
Die in RGM 2 vorhandenen und zuvor beschriebenen DBG-Programme können sowohl in Bezug auf ihre Zahl als auch auf ihren Inhalt "- entsprechend der in ROM 2 verfügbaren Zone- und den Bedürfnissen der Datenverarbeitungsanlage abweichen.
Die Register 36O bis 367 von ZRM in RAM 1, Welche die DBG-Programme, welche auf einem externen Träger aufgezeichnet sind, während der DBG-Operation aufnehmen, können auch in anderer Weise als in Fig. 9 dargestellt angeordnet sein. Genauer gesagt, können sie jede beliebige Zelle innerhalb von ZRM einnehmen, vorausgesetzt, daß ihr Inhalt nicht wichtig ist für die Anweisungen, die sich darin befunden haben. Darüber hinaus brauchen die Register innerhalb ZRM nicht aufeinanderfolgend angeordnet zu sein, sondern können separate Gruppen bildfen. In diesem Fall muß der Programmierer diese Register während des Lesens der Magnetkarte richtig adressieren.
Schließlich können noch die DBG-Programme in ROM 2 und in der Zone von RAM 1 (Register 36O bis 367), die zur Aufnahme anderer "DBG-Programme, die auf externen Trägern (beispielsweise Magnetkarten) aufgezeichnet sind, vorgesehen ist, andersartig angeordnet sein. Genauer gesagt, können sie sich in einer Zone von RAM 1 befinden, die ausschließlich zur Aufnahme von DBG-Programmen vorgesehen ist, oder in einem, dritten Speicher der Zentraleinheit 3t die nur DBG-Prοgramme enthält.
- 92 -
5 0 9 8 2 8/0783
Abschließend soll klargestellt werden, daß die Erkennung der äußeren Bedingungen, welche die DBG-Programme betreffen (Umschalter 100 und Tasten 102) und das nachfolgende Setzen der Register von ZRM, welche die genannten Bedingungen aufnehmen soll, auf viele andere Arten als beschrieben vorgenommen werden kann.
Patentansprüche
- 93 -
Chr./MP - 25 68k
509828/0783

Claims (1)

  1. ■ . - 93 Pat entansprüche
    ( 1.)Elektronische Datenverarbeitungsanlage mit Einrichtung zur Fehlerbefreiung von Rechenprogrammen sowie einem ersten Speicher zur Aufnahme der Anweisungen und Daten der Rechenprogramme, einer Zentraleinheit zum .Verarbeiten der Programme, einem Schaltmittel zum wahlweisen Einleiten einer ersten Betriebsweise der Datenverarbeitungsanlage zur Ausführung der Rechenprogramme und einer zweiten Betriebsweise zu deren Fehlerbefreiung, einem Tastenfeld zur Eingabe von Informationen in den ersten Speicher, die sich auf die Rechenprogramme während der ersten Betriebsweise beziehen gekennzeichnet durch Mittel (PI 31^), die durch das Schaltmittel (Umschalter 100) so steuerbar sind, daß sie die Zentraleinheit (CU 3) beeinflussen, die Verarbeitung der Rechenprogramme zu unterbrechen, um die zweite Betriebsweise einzuleiten und die Eingabe von Informationen, die ein.besonderes Fehlerbefreiungsprogramm betreffen, ebenfalls über das Tastenfeld (5) zu ermöglichen.
    2. Datenverarbeitungsanlage nach Anspruch T mit einer Anzeigeeinheit (6) zur Darstellung von Informationen, die sich auf die Rechenprogramme während der ersten Betriebsweise beziehen, dadurch gekennzeichnet, daß das Schaltmittel (Umschalter IOO) die Zentraleinheit (CU 3) veranlaßt, die Anzeigeeinheit (6) während der zweiten Betriebsweise dem Fehlerbefreiungsprogramm zuzuordnen.
    509828/078 3.
    - 9k -
    3· Datenverarbeitungsanlage nach Anspruch 2, dadurch gekenneichnet , daß das Schaltmittel (Umschalter 100) während der zweiten Betriebsweise die Zentraleinheit (CU 3) veranlaßt, der Anzeigeeinheit (6) die Adresse der jeweils nächsten anzuführenden Anweisungen des Rechenprogramms, das von Fehlern befreit werden soll, und die codierte Information, die bei dieser Adresse im ersten Speicher (RAM 1) enthalten ist, zuzuführen.
    k, Datenverarbeitungsanlage nach Anspruch 3 mit einem Speicheradressenregister zum Festhalten der absoluten Adresse der nächsten auszuführenden Anweisung und einem Basisregister zum Festhalten der Basisadresse des von Fehlern zu befreienden Rechenprogramms, dadurch gekennzeichnet, daß die Zentraleinheit (CU 3) durch das Schaltmittel (Umschalter IOO) so gesteuert wird, daß die relative Adresse der nächsten auszuführenden Anweisung durch Subtraktion des Inhalts des Basisregisters (RB 32O) vom Inhalt des Speicheradressenregisters (Lu 7) errechnet und der Anzeigeeinheit (6) zugeführt wird,
    5. Datenverarbeitungsanlage nach Anspruch k mit einem Bedingungsprogrammregister zum Festhalten der wesentlichen Ergebnisse vorher avsgeführter Anweisungen, dadurch gekennzeichnet , daß das Schaltmittel (Umschalter IOO) die Zentraleinheit (CU 3) veranlaßt, während des zweiten Betriebszustandes der Anzeigeeinheit (6) den Inhalt des Programmbedingungsregisters (CP 3^3) zuzuführen.
    6. Datenverarbeitungsanlage nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet , - daß
    - 95 -
    509828/0783
    ■-■ 95 -
    das Fehlerbefreiungsprogramm in eine Anzahl von Blöcken (B100, BO, B1, B2, Bö) unterteilt ist und das Tastenfeld (5) eine Anzahl von Tasten (SO, S1, S2, S6) enthält, die während des weiteren Betriebszustandes durch das Schaltmittel (Umschalter 100 ) so beeinflußt werden, daß sie wahlweise die Verarbeitung der eingegebenen Information durch denjenigen Fehlerbefreiungsprogrammblock (ΒΙΟΟ,ΒΟ, BI, B2, b6) steuern, der der betätigten Taste aus der Anzahl von Tasten (SO, S1, S2, S6) zugeordnet ist.
    7· Datenverarbeitungsanlage nach einem der Ansprüche 1,2 oder 6, die eine periphere Einheit einschließt zur Eingabe von Informationen von einem externen Datenträger in die Zentraleinheit, gekennzeichnet durch einen zweiten Speicher (Register 36Ο bis 367) zum Festhalten der auf dem Datenträger (Magnetkarte 9) aufgezeichneten Informationen mittels einer vorbestimmten, im Tastenfeld (5) enthaltenen Taste(S2), um die Zentraleinheit (CU 3) zu veranlassen, das von dem Datenträger (Magnetkarte 9) ausgelesene Programm in den zweiten Speicher (Register 36Ο bis 367) zu überführen und das in diesem Speicher vorhandene Programm zu starten,
    8. Datenverarbeitungsanlage nach Anspruch 7» dadurch gekennzeichnet , daß der zweite Speicher (Register 36Ο bis 367) in dem ersten Speicher (RAM 1) enthalten ist«
    9· Datenverarbeitungsanlage nach Anspruch 8, dadurch gekennzeichnet , daß die Zentraleinheit (CU 3) Daten, die für das Rechenprogramm während der ersten Betriebs· weise nicht relevant sind am Ende jeder Anweisung im zweiten Speicher (Register 36Ο bis 367) festhält.
    - 96 -
    5098-28/07 8 3
    10. Datenverarbeitungsanlage n ch Anspruch 9, dadurch gekennzeichnet , daß die periphere Einheit aus einem Magnetkartenleser (91) und der externen Datenträger aus einer Magnetkarte (9) besteht,
    11. Datenverarbeitungsanlage nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, daß das Schaltmittel (Umschalter IOO) wahlweise ein erstes Signal (Bit 05 von PI 31*0 mit einem ersten logischen Zustand, der der ersten Betriebsweise zugeordnet ist, und einem zweiten logischen Zustand, der der zweiten Betriebsweise zugeordnet ist erzeugt, und daß die durch das Schaltmittel (Umschalter IOO) gesteuerten Mittel (PI 314 in Abhängigkeit von dem zweiten logischen Zustand des ersten Signals (Bit 05 von PI 31*0 die erste Betriebsweise unterbrechen und die zweite Betriebsweise einleiten,
    12. Datenverarbeitungsanlage nach Anspruch 11, dadurch gekennzeichnet , daß die durch die Schaltmittel (Umschalter IOO) gesteuerten Mittel enthalten:
    ein .erstes Register (PI 31*0 des ersten Speichers (RAM i) zum Festhalten des ersten logischen Signals (Bit 05 von PI 31*0.
    ein zweites Register (CP 313) des ersten Speichers RAM 1) zum Pesthalten eines zweiten Signals (Bit 05 von CP 313)» daß das erste Signal (Bit 05 von Pl) ansteuert, wobei die Zentraleinheit (CU 3) zum Einleiten der zweiten Betriebsweise sowohl vom zweiten logischen Zustand des ersten Signals (Bit 05 von Pl) als auch vom zweiten Signal (Bit 05 von CP) gesteuert wird.
    - 97 -
    509 8 2 8/0783
    13. Datenverarbeitungsanlage nach einem der Ansprüche 4 bis 12 mit einem dritten Speicher (ROM 2) zum Festhalten, der zu den Anweisungen gehörenden Mikroprogramme, dadurch gekennzeichnet, daß die gesteuerten Mittel (PI 314) ein drittes Register (AI 334) des ersten Speichers (RAM 1) zum Festhalten eines dritten Signals (Bit 02 von AI 334) mit einem ersten logischen Zustand, der dem ersten Speicher (RAM 1) zugeordnet ist und einem zweiten logischen Zustand, der dem dritten Speicher (ROS 2) zugeordnet ist, wobei die Zentraleinheit (CU 3) durch den ersten und zweiten logischen Zustand des dritten Signals (Bit 02 von AI 33*0 gesteuert wird zum Eingeben der Adresse des ersten (RAM 1) und des dritten (ROM 2) Speichers der nächsten auszuführenden Anweisung in das Speicheradressenregister (L07) und eines vierten Signals (Bit 03 von GP ) mit einem ersten und einem zweiten logischen Zustand, der dem ersten bzw. dritten Speicher (RAM 1 bzw« ROM 2) zugeordnet ist, in das zweite Register (CP 313).
    14. Datenverarbeitungsanlage nach Anspruch 13» dadurch gekennzeichnet , daß die Zentraleinheit (cU 3) durch den ersten und zweiten logischen Zustand des vierten Signals (Bit 03 von CP) zum Lesen der nächsten auszuführenden Anweisung im ersten bzw. dritten Speicher (RAM 1 bzw. ROM 2) gesteuert wird.
    15.Datenverarbeitungsanlage nach Anspruch 14, dadurch gekennzeichnet , daß das Fehlerbefreiungsprogramm in einer vorbestimmten Zone (b in Fig. 9) des dritten Speichers (ROM 2) aufgezeichnet ist und daß die Zentraleinheit (CU 3) durch den zweiten logischen Zustand des dritten Signals (Bit 02=0 von PI 334) zum Eingeben der Anfangsadresse der vorbestimmten Zone (B in Fig. 9) in das Speicheradressenregister (L07) bzw. des zweiten
    50 9 8 28/0783
    - 98 -
    logischen Zustandsdes vierten Signals (Bit 03 von CP) in das zweite Register (CP 313) gesteuert wird.
    16. Datenverarbeitungsanlage nach Anspruch 15, gekennzeichnet durch ein viertes Register (RC 359i Position 9) des ersten Speichers (RAM 1) zum Festhalten von Signalkombinationen, die den Tasten (SO, S1, S2, S6) zugeordnet sind, wobei die Zentraleinheit (CU 3) durch die Signalkombinationen angesteuert wird, um die entsprechenden Blöcke (BO, B1, B2, b6) auszuwählen.
    17· Datenverarbeitungsanlage nach Anspruch 16, dadurch gekennzeichnet , daß die Zentraleinheit (CU 3) durch die Signalkombinationen gesteuert wird, um wahlweise in das Speicheradressenregister (lO 7) die Adresse derjenigen Blöcke (BO, B1, B2, B6) einzugeben, die der jeweiligen Signalkombination zugeordnet sind«
    509828/0783
    Leerseite
DE19742458651 1973-12-28 1974-12-09 Elektronische datenverarbeitungsanlage mit einrichtung zur fehlerbefreiung von rechenprogrammen Granted DE2458651A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT70879/73A IT1000643B (it) 1973-12-28 1973-12-28 Calcolatore elettronico con appa recchiatura per la messa a punto dei programmi operativi

Publications (2)

Publication Number Publication Date
DE2458651A1 true DE2458651A1 (de) 1975-07-10
DE2458651C2 DE2458651C2 (de) 1987-03-12

Family

ID=11314444

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19742458651 Granted DE2458651A1 (de) 1973-12-28 1974-12-09 Elektronische datenverarbeitungsanlage mit einrichtung zur fehlerbefreiung von rechenprogrammen

Country Status (9)

Country Link
JP (1) JPS5722137B2 (de)
AR (1) AR208682A1 (de)
BE (1) BE822844A (de)
CA (1) CA1032273A (de)
DE (1) DE2458651A1 (de)
ES (1) ES433381A1 (de)
FR (1) FR2256476B1 (de)
GB (1) GB1480520A (de)
IT (1) IT1000643B (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2644431A1 (de) * 1975-09-30 1977-04-07 Olivetti & Co Spa Datenendstation mit einer anordnung zum anschalten und initialisieren der endstation
DE2912657A1 (de) * 1979-03-30 1980-10-09 Olympia Werke Ag Datenverarbeitendes geraet

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5580153A (en) * 1978-12-14 1980-06-17 Toshiba Corp Program processor
JPS55128641A (en) 1979-03-23 1980-10-04 Nissan Motor Co Ltd Controlling system for vehicle
USRE31582E (en) * 1979-03-23 1984-05-08 Nissan Motor Company, Limited Automatic control system for method and apparatus for checking devices of an automotive vehicle in use with a microcomputer
DE3038367C2 (de) * 1979-10-13 1994-06-23 Canon Kk Elektrofotografisches Gerät
JPS59133610A (ja) * 1983-01-19 1984-08-01 Omron Tateisi Electronics Co プログラマブルコントロ−ラ
JPH01137018U (de) * 1988-03-12 1989-09-19

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3415981A (en) * 1967-10-10 1968-12-10 Rca Corp Electronic computer with program debugging facility

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3415981A (en) * 1967-10-10 1968-12-10 Rca Corp Electronic computer with program debugging facility

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DE-Z.: Elektronische Rechenanlagen, H. 6, 1968, S. 291-296 *
US-Z.: IBM Technical Disclosure Bulletin, Dezember 1973, S. 2322-2329 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2644431A1 (de) * 1975-09-30 1977-04-07 Olivetti & Co Spa Datenendstation mit einer anordnung zum anschalten und initialisieren der endstation
DE2912657A1 (de) * 1979-03-30 1980-10-09 Olympia Werke Ag Datenverarbeitendes geraet

Also Published As

Publication number Publication date
JPS5722137B2 (de) 1982-05-11
FR2256476A1 (de) 1975-07-25
CA1032273A (en) 1978-05-30
AR208682A1 (es) 1977-02-28
BE822844A (fr) 1975-04-01
IT1000643B (it) 1976-04-10
DE2458651C2 (de) 1987-03-12
AU7651774A (en) 1976-06-17
GB1480520A (en) 1977-07-20
JPS5099445A (de) 1975-08-07
ES433381A1 (es) 1976-12-16
FR2256476B1 (de) 1979-03-16

Similar Documents

Publication Publication Date Title
DE2540824C2 (de) Auf verschiedene Ausbaustufen veränderbare Abrechnungsmaschine
DE2353421C3 (de) Elektronischer Rechner
DE2318069C2 (de) Mikroprogrammierte Rechenanlage mit Erweiterung von Steuerfunktionen mittels festverdrahteter logischer Matrix
DE2847934A1 (de) Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher
DE2452214A1 (de) Mikroprozessor mit unmittelbarer und indirekter adressierung
DE3047251A1 (de) Rechner
DE1931966B2 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE2951191A1 (de) Elektronisches woerterbuch
DE2540823C2 (de) Elektronische Datenverarbeitungsanlage
DE1215964B (de) Programmwerk fuer Rechenmaschinen
DE3013070C2 (de) Schaltungsanordnung zur Bearbeitung von aus mehreren peripheren Geräten herangeführten Anforderungssignalen innerhalb einer datenverarbeitenden Einrichtung
DE2601242A1 (de) Elektronenrechner mit programmspeicherung
DE2458651A1 (de) Elektronische datenverarbeitungsanlage mit einrichtung zur fehlerbefreiung von rechenprogrammen
DE2538978C2 (de)
DE2753650C2 (de) Zeithaltende Einrichtung mit einem Register zum Speichern von Zeitzähldaten
DE2245284A1 (de) Datenverarbeitungsanlage
DE2362238A1 (de) Elektronische datenverarbeitungsanordnung
DE2658950A1 (de) Mikroprogrammierte verarbeitungseinheit sowie verfahren zur organisation derselben
DE2428020A1 (de) Elektronische datenverarbeitungsanlage mit unabhaengigen funktionseinheiten fuer das gleichzeitige ausfuehren verschiedener operationen an denselben daten
DE1549420A1 (de) Programmvorrichtung fuer einen elektronischen Rechner
DE2248962A1 (de) Verfahren bzw. einrichtung zum betrieb eines vielzweckrechners
DE2264184C3 (de) Elektrischer Tischrechner
DE2840904C2 (de)
DE3104881A1 (de) "programmierbarer rechner"
DE2952072A1 (de) Einrichtung zur verarbeitung binaer codierter dezimalzahlen

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee