DE3031964A1 - Rechnersystem, bei dem sich der programmspeicher zum durchlaufen eignet, wobei einem befehl nicht zugeordnete daten einzeln detektiert werden - Google Patents

Rechnersystem, bei dem sich der programmspeicher zum durchlaufen eignet, wobei einem befehl nicht zugeordnete daten einzeln detektiert werden

Info

Publication number
DE3031964A1
DE3031964A1 DE19803031964 DE3031964A DE3031964A1 DE 3031964 A1 DE3031964 A1 DE 3031964A1 DE 19803031964 DE19803031964 DE 19803031964 DE 3031964 A DE3031964 A DE 3031964A DE 3031964 A1 DE3031964 A1 DE 3031964A1
Authority
DE
Germany
Prior art keywords
address
command
signal
computer
program memory
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.)
Withdrawn
Application number
DE19803031964
Other languages
English (en)
Inventor
Berend Theodorus Jan Eindhoven Bruinshorst
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.)
Koninklijke Philips NV
Original Assignee
Philips Gloeilampenfabrieken NV
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 Philips Gloeilampenfabrieken NV filed Critical Philips Gloeilampenfabrieken NV
Publication of DE3031964A1 publication Critical patent/DE3031964A1/de
Withdrawn 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)
  • Calculators And Similar Devices (AREA)

Description

K.V. Philips' Glosilampenfabrieken, Eindhovenf": - ':
PHN 9555 ^-γ-- 10-6-1980
3031364
"Rechnersystem, bei dem sich der Programmspeicher zum Durchlaufen eignet, wobei einem Befehl nicht zugeordnete Daten einzeln detektiert werden."
BEREICH DER ERFINDUNG.
Die Erfindung betrifft ein Rechnersystem mit a. einem Programmspeicher mit einer Reihenfolge von Adressstellen zum Speichern von Maschinencodes, b. einem Tastenfeld,
c. einer Darstellungseinrichtung für zumindest eine Zeichenzeile ,
d. einem Prozessor, der zumindest enthält:
d1. ein Adressregister für den Programmspeicher mit einem Erhöhungseingang,
d2. ein Befehlsregister und weiteren Speicherelementen mit einer vorgegebenen Gesamtlänge zum Speichern eines aus dem Programmspeicher ausgelesenen Befehls mit einer maximalen Länge dieser vorangegebenen Länge, d3. einen an das Befehlsregister angeschlossenen ersten Befehlsdecoder,
d4. ein Ausführungselement zum Durchführen einer Datenbearbeitung unter der Steuerung eines Signals des ersten Befehlsdecoders,
die alle durch Informationsverbindungen für Daten- und Steuersignale verbunden sind.
Die Darstellungseinrichtung kann einen Drucker, eine Kathodenstrahlröhre oder ein Darstellungselement mit Plasmalichtquellen für eine oder mehrere Zeichenzeilen enthalten. Der Prozessor kann eine Arithmetikeinheit und weitere Anordnungen zum Verarbeiten und TJebertragen (routing) von Daten enthalten. Programme erreichen das Rechnersystem häufig als "Quellenprogramme11 beispielsweise über das Tastenfeld. Im Quellenprogramm enthält ein (Quellen-)Befehl eine ihn symbolisierende Gruppe beispielsweise von vier Zeichen, weiter oft einen weiteren Hinweis, wie den Namen eines oder mehrerer Register, aus dem bzw. denen eine Information für den auszuführenden Befehl her-
130012/0728
PHN 9555 #^'-5- 10-6-1980
ausgelesen werden muss, oder in das bzw. die das Ergebnis der Bearbeitung zu speichern ist, den Wert eines zu verwendenden Parameters oder eine weitere Information. Diese verleiht dem Quellenbefehl eine leichte Erkennbarkeit für den Programmierer. Ein Quellenbefehl ist durch die zugeordnete Zeilennummer seiner zeilenweise Darstellung adressier— bar, und auf diese Weise ist eine Programmänderung möglich. Der Nachteil der erwähnten Ausgestaltung ist die grosse Redundanz, weil beispielsweise manchmal bis zu 20 alphanumerischen Zeichen benötigt sein können, um einen einzigen Befehl darzustellen. Ueber eine Uebersetzungseinrichtung (Assembler) wird deswegen das Quellenprogramm in den sogenannten Objektcode umgewandelt. Dabei werden symbolische Adressen (Zeilennummern) in die eigentlichen Adressen des Programmspeichers umgesetzt. Der Assembler kann ununterbrochen im Rechnersystem vorhanden sein. Er kann auch lediglich zum einmaligen Uebersetzen des Quellenprogramms angeschlossen werden, so dass er kein notwendige Element der Erfindung ist.
Der erwähnte Objektcode enthält eine Reihenfolge von Rechnerbefehlen. Ein Rechnerbefehl enthält einen Befehlsteil oder Rechnercode, wodurch der Rechnerbefehl gekennzeichnet ist. Jeder verschiedene Rechnercode ist gleichsam durch eine andere Nummer symbolisiert. Eine derartige Nummer ist in einer Gruppe beispielsweise von acht Binärziffern enthalten. Weiter kann der Rechnerbefehl
IN
neben der erwähnten Nummer wieder eine Dateninformation oder einen Hinweis auf eine Speicheradresse enthalten, an der Sonderdaten gespeichert sind. Diese Sonderdaten sind beispielsweise ein Text, ein Unterprogramm und vorkommendenfalls Daten oder Adressen. So kann der Objektcode manchmal wesentlich kompakter als das Quellenprogramm sein und erfordert zur Speicherung weniger Speicherraum. Nachstehend wird angenommen, dass das Rechnerprogramm für nähere Verwendung bereits im Programmspeicher vorhanden ist.
Es ist.in vielen Fällen notwendig, dass das Rechnerprogramm für den Programmierer zugriffsbereit ist, beispielsweise zur Aenderung auf bestimmte Weise oder zum
130012/0728
PHN 9555 y* Qf - 10-6-1980
Entnehmen bestimmter Informationen, jedoch ohne dass das Programm auch durchgeführt wird. Nun enthält ein Rechnerprogramm, u.a. für dessen Ausführung, neben den Befehlen selbst (mit den in den Befehlen erhaltenen weiteren Informationen) auch ausserhalb der eigentlichen Befehle angeordnete Information, wie Text (Kommentar oder Titel), Adressen (beispielsweise Anfangsadressen einer Datenmenge oder Sprungadressen) und Dateninformationen. Sie werden bei der Durchführung des Rechnerprogramms anders als die Rechnerbefehle behandelt, weil der letzte Befehl für eine solche Menge anderer Informationen immer ein Verzweigungsbefehl ist, wobei also auf eine spezifische Adresse (oder mehrere Adressen) im Speicher verwiesen wird; beim Anrufen einer derartigen Adresse ist der Rechner also schon darauf voreingestellt, die aus dem Programmspeicher ankommende Information auf entsprechende ¥eise zu behandeln. Beim Entwerfen eines Programms ist es jedoch häufig vorteilhaft, den Programmspeicher direkt zu adressieren, wobei z.B. die Adressen nacheinander durchlaufen werden. Dabei besteht Vorkommendenfalls die Möglichkeit, dass ein Nichtbefehl decodiert wird, was unzulässig ist. Es sei noch daran erinnert, dass im Quellenprogramm dieses Problem nicht auftaucht, weil die Adressierung dort mit Hilfe der Zeilennummer erfolgen kann.
DARSTELLUNG DER ERFINDUNG.
Der Erfindung liegt die Aufgabe zugrunde, in einem Rechnersystem der eingangs erwähnten Art einfache Mittel zu realisieren, die die erwähnten, einem Rechnerbefehl nicht zugeordneten Daten nicht vom Befehlsdecoder wie einen durchzuführenden Rechnerbefehl decodieren lassen, so dass sie, insbesondere in der Entwurfsphase eines Programms, auf andere Weise für den Programmierer ansprechbar
♦ f
sind, und dass zum anderen zum Decodieren eines durchzuführenden Befehlscodes das Adressregister des Programm-Speichers auch immer fehlerfrei auf die Adresse, beispielsweise auf die Befehlsteiladresse eines Rechnerbefehls, eingestellt ist, wodurch die Notwendigkeit der dauerhaften Anwesenheit des Quellenprogramms in einem
130012/0728
PHN 9555 Λ^-7-- 10-6-1980
Speicher grosser Kapazität entfällt. Die Aufgabe wird erfindungsgemäss dadurch, gelöst, dass weiter vorgesehen sind
d5. ein mit dem Befehlsregister verbindbarer zweiter Befehlsdecoder zum Zuführen eines Aktivierungssignals unter der Steuerung eines vorgegebenen Rechnerbefehlsvorrats an einen Aktivierungseingang eines
d6. Adressabstanddetektors der einen Adressabstand mit einem Wertbereich detektiert, dessen Obergrenze zumindest den maximalen Inhalt eines Befehls enthält, und der mit ersten Mitteln zum Empfangen eines dem betreffenden Rechnercode aus dem Befehlsvorrat zugeordneten einzelnen Signals eines ersten Adressabstandes im Programmspeicher und zum anschliessenden Erzeugen eines ersten Steuersignals und mit zweiten Mitteln versehen ist, die mit einem nach dem erwähnten Rechnercode zurückgelegten relativen Adressabstand im Programmspeicher gleichen Schritt halten, beim Erreichen des erwähnten Adressabstands ein sperrendes Signal erzeugen und das erste Steuersignal beenden, wobei das erste Steuersignal den Prozessor für nach dem erwähnten einzelnen Signal aus dem Programmspeicher ankommende Informationen in eine nicht aktive Betriebsart steuert. Ein derartiger Adressabstandsdetektor kann ein kleiner Zähler sein, und das Aktivierungssignal kann durch eine einfache Decodierung aus einem oder mehreren belegten Rechnercodes abgeleitet werden. So enthält nunmehr das Rechnerprogramm eine Reihenfolge von Informationen, beispielsweise von Informationsbytes, wobei keine weiteren Massnahmen als das Hinzusetzen dieser belegten Rechnercodes erforderlich sind, wodurch angegeben wird, dass sich ein Informationsteil auf einen Befehlsteil oder auf einen Nichtbefehlsteil bezieht. Auch jetzt bleibt das Rechnerprogramm also sehr kompakt notiert. Durch den erfindungsgemässen Zusatz darf das Rechnerprogramm gleichsam Pseudo-
befehle enthalten, deren Länge bis zu sehr grossen Höchstwerten reichen darf und die somit, wenn sie nicht über den zugeordneten Pseudobefehlsteil erreicht werden, nie als ein "echter" Rechnerbefehl decodiert werden. Die dazu
130012/0728
PHN 9555 y~ S- 10-6-1980
r 3031354
benötigte zusätzliche Speicherkapazität ist jedoch nur gering.
Die Behandlung eines Befehls kennt einige Phasen: 1) der Befehl wird aus dem Speicher ausgelesen,
2) der Befehlsteil wird decodiert;
3) es ist dadurch bekannt, was die ganze Information des Befehls umfasst;
h) der Befehl wird durchgeführt (a) oder als Zeichen (b) dargestellt oder nach der Rückübersetzung in einen Quellenbefehl als Zeichen (c) dargestellt oder modifiziert (d);
5) der Befehl wird gegebenenfalls an einer anderen Adresse in den Speicher zurückgeschrieben.
■ Für die Bearbeitung in einer "Nichtbefehls"-Betriebsart unterbleiben also die erwähnten Elemente 2)j 3), 4) immer. Modifizieren kann unter der Steuerung eines spezifischen Elements aus dem vorgegebenen Rechnerbefehlsvorrat auf spezifische ¥eise für die innerhalb eines normalen Befehls enthaltenen Informationen sowie für die nicht in einem derartigen normalen Befehl enthaltenen Informationen erfolgen. Je nach der Steuerbetriebsart, in der das Programm durchlaufen wird, wird das System unter Punkt 4) für die Operationen a), b), c) oder d) wählen.
Es ist vorteilhaft, wenn ein FIFO-Pufferspeicher mit einem Eingang, der mit einem Ausgang des Programmspeichers verbunden ist, und mit einem Ladeeingang vorhanden ist, der pro Adresse des Programmspeichers das erste Steuersignal empfängt. So kann eine beträchtliche Informationsmenge aus dem Programmspeicher schnell bezogen werden, was beispielsweise für gemeinsame Verschiebung sehr vorteilhaft sein kann. Eine andere Anwendung eines derartigen Pufferspeichers kann darin bestehen, dass eine mögliche vorläufige Detektion eines Elements aus dem vorgegebenen Rechnerbefehlsvorrat ungültig gemacht wird, wenn es sich bei näherer Betrachtung z.B. um ein Datenzeichen handeln würde. So etwas kann auftreten, wenn in den Rechner ein erwähnter Pseudobefehl irgendwo "in der Mitte" eintritt. Der FIFO-Pufferspeicher kann als ein spezifischer Baustein
130012/0728
PHN 9555 £^-3- 10-6-198,
3S O 31 9 S
vorhanden sein. Es ist weiter möglich, einen FIFO-Pufferspeicher im Programmspeicher mit Hilfe einer Anfangsadresse (pointer) und einer (laufenden) Endadresse, die in zwei Registerstellungen gespeichert sind, zu realisieren.
Es ist vorteilhaft, wenn der zweite Befehlsdecoder mit einem ersten Signalausgang versehen ist, der unter der Steuerung eines zum vorgegebenen Rechnerbefehlsvorrat gehörenden ersten spezifischen Rechnercodes in Zusammenarbeit mit dem ersten Steuersignal ein aus dem Programmspeicher ausgelesenes Wort als eine Adressinformation identifiziert. So können in einer Aufbereitungsbetriebsart (Editor) des Programms alle detektierten Adressen aufbereitet werden, beispielsweise um einen festen Adressabstand geändert werden, wenn ein Programmteil über den gleichen Adressabstand in einer Verschiebungsbearbeitung verschoben wird.
Es ist vorteilhaft, wenn der zweite Befehlsdecoder mit einem zweiten Signalausgang versehen ist, der unter der Steuerung eines zum vorgegebenen Rechnerbefehlsvorrat gehörenden zweiten spezifischen Rechnercodes in Zusammenarbeit mit dem ersten Steuersignal ein aus dem Programmspeicher ausgelesenes Wort als eine Dateninformation identifiziert. Bei einer Darstellungsbaarbeitung werden so die Daten nicht als Befehl decodiert, sondern
^5 als Dateninformationen abgebildet, während sie andererseits nicht der bereits beschriebenen Adressbearbeitung unterworfen werden.
Es ist vorteilhaft, wenn der zweite Befehlsdecoder mit einem dritten Signalausgang versehen ist, der unter der Steuerung eines zum vorgegebenen Rechnerbefehlsvorrat gehörenden dritten spezifischen Rechnercodes in Zusammenarbeit mit dem ersten Steuersignal ein aus dem Programmspeicher ausgelesenes Wort als eine Textinformation identifiziert. Bei der erwähnten Darstellungsbearbeitung werden
die Textinformationen auch nicht als Befehl decodiert oder als Adresse bearbeitet. Die Textdarstellung kann vorteilhaft in alphanumerischen Zeichen erfolgen, die Darstellung von Dateninformationen oft besser als Hexadezimal-
130012/0728
9555 Ύ" "ΊΟ" 10-6-1980
zeichen.
Es ist vorteilhaft, -wenn der zweite Befehls decoder mit einem vierten Signalausgang versehen ist, der unter der Steuerung eines zum vorgegebenen Rechnerbefehls vorrat gehörenden vierten spezifischen Rechnercodes in Zusammenarbeit mit dem ersten Steuersignal ein aus dem Programmspeicher ausgelesenes Wort als eine Titelinformation identifiziert. So kann jeweils leicht das Auftreten eines Titels detektiert werden, so dass beispielsweise ein Inhaltsverzeignis eines Programmspeichers dargestellt oder ein Titel als Kommentar benutzt werden kann.
Es ist vorteilhaft, wenn das sperrende Signal als ein erstes Stoppsignal für das Adressregister arbeitet und dass das Tastenfeld mit vierten Mitteln (z.B. Leertaste) versehen ist, die mit Hilfe eines zweiten Steuersignals das erste Stoppsignal unwirksam machen. So kann jeweils eine folgende Informationsmenge (normaler Rechnerbefehl oder Pseudorechnerbefehl) aufgerufen werden, beispielsweise zum Darstellen auf einer Kathodenstrahlröhre, wonach der Programmierer genügend Zeit für eine manchmal komplizierte Entscheidung nehmen kann (beispielsweise für eine Mofiifizierung oder eine Verschiebung). In einem einfachen Pail kann beispielsweise jeder (Pseudo-)Befehl auf einer neuen Zeile abgebildet werden; in einer komplizierteren Betriebsart kann (jedoch nur für die Darstellung) jeder Rechnerbefehl in den zugeordneten Quellenbefehl rückübersetzt werden.
Es ist vorteilhaft, wenn das Tastenfeld mit fünften Mitteln versehen ist, die mit Hilfe eines dritten Steuersignals das erste Stoppsignal ständig unwirksam machen, und dass Adressvergleichsmittel vorgesehen sind, die beim Erreichen einer Endadresse durch die Adressregister das dritte Steuersignal beenden und ein zweites Stoppsignal für das Adressregister erzeugen. So kann ein
^5 Sektor des Programms bearbeitet werden, z.B. auf gleiche Weise dargestellt wie oben beschrieben. Eine andere Betriebsart ist, dass für eine Verschiebung des Programmteils sämtliche Adressen entsprechend aufbereitet werden.
130012/0728
PHN 9555 p—A^- 10_6,
3IfI0196 A
BESCHREIBUNG DER AUSFUEiIRUNGSBEISPIELE.
Die Erfindung wird nachstehend an Hand der
Zeichnung näher erläutert. Insbesondere wird die Erfindung an Hand eines bekannten Mikroprozessors und eines dafür erhältlichen Entwicklungssystems beschrieben. Schi"esslich werden einige vorteilhafte Betriebsarten eines erfindungsgemäss erweiterten Rechnersystems erläutert. Es zeigen
Fig. 1 ein Blockschaltbild eines bekannten Mikroprozessors ,
Fig. 2 ein erfindungsgemäss erweitertes Rechnersystem,
Fig. 3 weitere Einzelheiten der Erweiterung,
Fig. 4a, 4b zwei Zeitdiagramme, Fig. 5 ein Beispielprogramm für die Verwendung in einem erfindungsgemässen Rechnersystem,
Fig. 6 eine zweite Darstellung dieses Programms,
Fig. 7 ein Flussdiagramm einer Betriebsart zum Identifizieren der aufgerufenen Adressen, Fig. 8 ein Flussdiagramm einer Betriebsart zum Darstellen eines Programmteils nach der Adressreihenfolge,
Fig. 9&> 9t>> 9C Flussdiagramme einer Betriebsart zum Aufbereiten der in einem Programmteil auftretenden Adressen mit einem vorgegebenen Verschiebungsabstand, Fig. 10a, 10b Flussdiagramme einer Betriebsart zum Abbilden eines Sektors des Programms.
Die Erfindung ist in einem Rechnersystem beliebiger Grosse anwendbar. Der Einfachheit halber wird die Erfindung im Zusammenhang mit einem Mikroprozessorsystem beschrieben. Fig. 1 zeigt ein Blockschaltbild eines bekannten Mikroprozessors, insbesondere des bipolaren Mikroprozessors "Signetics 265O", der im gleichnamigen Buch dargestellt wird, das der Hersteller Signetics Corporation, 811 East Arques AV. Sunnyvale, CaI, 1975, veröffentlichte, insbesondere in Fig. 1. Diese Figur bezweckt die Bildung eines Begriffsrahmens für die nachstehend im Zusammenhang mit diesem Mikroprozessor zu beschreibende Verwirklichung der Erfindung. In der Schaltung sind durch Ziffern die 8-Bit-Datenwege und die 13-Bit- und 15-Bit-Adresswege
130012/0728
PHN 9555 ^-ή%~ 10-6-1980
identifiziert. Die mit "1" oder "x" angegebenen Verbindungen sind Teile des Steuerbusses. Die übrigen Leitungen dieses Steuerbusses sind der Einfachheit halber nicht angegeben. Die Verbindung 200 ist ein 8-Bit-Zweirichtungs-Datenbuss mit anschliessendem Register 202. Die ankommende Leitung 204 ist an das 8-Bit-Befehlsregister 206, an das 8-Bit-Halteregister 208 und an einen 8-Bit-Eingang des AdressZählers 210 angeschlossen. Letzterer arbeitet über eine Breite von 13 Bits. Auf der Leitung 214 kann ein Unterbrechersignal von aussen erscheinen (Unterbrechungsanforder ung) , die.Leitung 216 dient für ein Unterbrechungsfreigabesignal (Unterbrechungsquitierung). Weiter enthält der Mikroprozessor einen hier nicht dargestellten Anschluss zum Empfangen eines Pausensignals, das den Mikroprozessor am Ende des laufenden Befehls stoppen lassen kann. Es kann die Datenverarbeitung für unbestimmte Zeit anhalten lassen und wird für die Verwirklichung eines Direktzugriffs benutzt (direct memory access oder DMA). Im Zusammenhang mit den Leitungen 214 und 216 enthält der Block 212 die TJnterbrecherlogik. Dieser Block kann weiter noch ein Signal zur Decoder- und Steuerlogik im Block 218 steuern. Die Leitungen 220 sind die Eingabe/Ausgabesteuerleitungen. Die Signale auf diesen Leitungen arbeiten mit der Logik 222 und mit dem Block 218 zusammen. Die Leitung 224 ist ein externer Taktimpulsleitung, deren Taktimpuls in der zeittaktgenerierenden Logik 226 zu sekundären Taktsignalen für den Block 218 verarbeitet wird. Die vom Block 218 ausgehenden Steuerleitungen zu den weiteren Teilen der Schaltung sind nicht angegeben. Ein zweiter, 13 Bits breiter Eingang des Adresszählers 210 ist mit dem Adressbuss 228 verbunden, dessen externe Verbindung sich nur zum Aussenden von Signalen eignet. Der Ausgang des Adresszählers 210 ist mit dem 15-Bit-Adress-Operandenregister 230 verbunden; dies gibt also die Adresse an, an der ein Operand oder Dateninformationen gespeichert sind. Der Ausgang des Registers 230 ist mit dem Befehlsadressregister 232 sowie mit dem Ausgangesteuerelement 23^ verbunden: So ist die Adresse signalisierbar, an der ein Befehl gespeichert ist. Nor-
130012/0728
PHN 95*>5 ν&~~Λ%~ 10-6-1980
3031Ü6A
malerweise gelangt so die Operandenadresse an das Element 234. Nur bei einer Verzweigungsoperation nach einer Subroutine gelangt die aktuelle Adresse zum Subroutinen-Rückkehradressstapel 236. Durch ein "Rückkehr"-Signal kann eine Adresse aus dem Element 236 erneut aufgerufen werden. Der Stapel hat eine Kapazität von 8 Wörtern von je 15 Bits. Ihre Adresswahl erfolgt mit dem Stapelzeiger 238. Schliesisltch ist die ankommende Leitung 204 noch an einen Datenanschlusr. der ALU-Einheit 24θ angeschlossen, die eine Vielzahl von 8 Bitbreiten Bearbeitungen durchführen kann. Die Steuerung wird neben den Signalen der Einheit 218 vom Inhalt des Programmstatuswortregisters 242 versorgt, das eine Kapazität von 2x8 Bits hat. Ein 8 Bits breites Ergebnis der Bearbeitung im Element 240 kann über die Leitung 244 einem Registerstapel zugeführt werden, der das sogenannte Nullregister (Ro) 246 sowie eine auswählbare Hälfte des weiteren Stapels 248 mit 2x3 Registern enthält. Die Wahl zwischen den Hälften wird vom Bit RS aus dem Programmstatuswort gesteuert, die weitere Auswahl erfolgt durch Signale aus der Einheit 218. Der Ausgang des Nullregisters 246 ist mit der ALU-Einheit 24θ und weiter mit dem Multiplexer 250 verbunden. Der Ausgang des weiteren Stapels 248 ist ebenfalls mit dem Multiplexer 250 verbunden. Die abgehende Leitung des Multiplexers ist mit der ALU-Einheit 24θ mit dem Adresszähler 210 (um als relative Adresse oder Indexinformation arbeiten zu können) und mit dem an den Datenbus 200 angeschlossenen Register 202 verbunden. Schliesslich enthält der Block 25OA Logik für die Betriebsanzeige und mögliche Verzweigungen. Dieser Block ist an die ALU-Einheit 24θ angeschlossen und kann unter Umständen ein Steuersignal zur Steuer- und Decoderlogik 218 aussenden. Für die mit diesem Mikroprozessor zu verwirklichende Funktion und für weitere technische Einzelheiten wird im allgemeinen auf das erwähnte Buch des Herstellers verwiesen. Nach aussen ist dieser Mikroprozessor als ein DIP-Modul mit 4θ Anschlussstiften versehen.
In Fig. 2 ist ein erfindungsgemässes erweitertes Rechnersystem dargestellt. Das System enthält einen Pro-
130012/0728
PHN 9555 vr"~ /In 10-6-1980
" ιψ~ 303Ί964
zessor $Z, einen Speiclier ^h und ein E/A-Unter sys tem 6θ. Letzteres kann ein Tastenfeld, eine Druckeinrichtung sowie eine Kathodenstrahlröhrenabbildungseinrichtung enthalten. Der Speicher $h enthält das Programm zum Steuern des Prozessors 52, so dass er mehrere Bearbeitungen durchführen kann. Er kann ein einzelner Modul sein, aber vorkommendenfalls kann er auch mit dem Prozessor 52 auf dem gleichen Halbleitersubstrat angebracht sein. Zum anderen kann der Prozessor 52 ein Signetics-"265O"-Mikroprozessor sein. Die erwähnten Elemente werden durch eine Zweirichtungsdatenbus leitung 50 und durch den Einrichtungsadressbus 58 verbunden. Wenn die Schalter 64 und 66 geschlossen und die Schalter 62 und 68 geöffnet sind, ist ein herkömmliches Mikroprozessorsystem vorhanden, das nicht weiter beschrieben wird. ¥eiter ist ein Zusatzelement 56 vorgesehen, das im geschlossenen Zustand der Schalter 62 und 68 mit dem Speicher $k und mit dem E/A-Untersystem 6O Daten austauschen kann. Die Wirkung dieses Zusatzelements wird nachstehend in Einzelheiten erläutert. Insbesondere ist es hiermit möglich, den Speicher ^k- zn adressieren, die ausgelesenen Befehle und weitere Daten zu empfangen und dabei die Befehle nicht, wie es der Prozessor 52 machen wurde, durchzufuhren, wobei also von den Befehlen selbst gesteuerte Ve^zweigungsbearbeitungen durchgeführt werden wurden, sondern die Befehle in der gleichen Reihenfolge zu behandeln, wie sie in den Speicher 5k eingeschrieben sind, und sie dabei keinesfalls durchzuführen. Insbesondere werden keine Verzweigungs- oder Sprungbearbeitungen ausgeführt. Die Art der dennoch ausgeführten Behandlung wird näher erläutert. Nach der Behandlung kann der Befehl zum Speicher 54 zurückgeführt oder dem E/A-Untersystem 6O weitergeleitet werden. Die Bedienung der Schalter 62 ... 68 erfolgt vom Tastenfeld aus, dass ein Teil des E/A-Untersystems 6O ist: Insbesondere ist immer nur ein Schalterpaar der beiden Paare 64/66 und 62/68 geschlossen.
In Fig. 3 is* die Erweiterungsschaltung 56 nach Fig. 2 dargestellt. Diese Schaltung stellt eine mit dem Mikroprozessor nach Fig. 1 zum Teil übereinstimmende Organi-
130012/0728
PHN 9555 y^ -/jh- 10-6-19
84 ^
sation dar, und daher wird bereits auf die früher erwähnte Dokumentation dieses Mikroprozessors verwiesen. Insbesondere sind in der Figur die Datenleitung 50, der Schalter 68 sowie die Register 205 (entsprechend 206) und 207 (entsprechend 208) dargestellt. Das Register 205 erhält immer wieder das erste Byte (8 Bits) eines Befehls, der hier den Befehlsteil enthält. Das Halteregister 207 wird zum Zwischenspeichern weiterer Berfehlsinformationen und partieller absoluter Adressen bei Mehrbyte-Befehlen (also mehr als 8 Bits) benutzt. Im Gegensatz zur Situation in Pig. 1 sind hier die Register 205, 207 sowie 256 (siehe weiter unten) alle für Zweirichtungsverkehr an die Datenbusleitung 50 angeschlossen. ¥eiter ist die Adressleitung 228 angegeben, durch die die Adressregister 252 und 253 (eines zum Lesen und eines zum Schreiben) für den Speicher $k geladen werden können. Die eigentliche Adressierung erfolgt dann wieder über den Schalter 62 und die Adressbusleitung 58· Der Speicher ^h hat eine Wortlänge von 8 Bits und eine Adresskapazität von höchstens 15 Bits. Er kann das Programm des Mikroprozessors 52 im Objektcode enthalten, wobei also jede Wortstelle eine Kapazität von zwei Hexadezimalzeichen hat. Die Bildung der Adresse auf der Leitung 228 kann auf entsprechende Weise erfolgen, z.B. durch hanbetätigte Zufuhr mit Hilfe des Tastenfelds des E/A-Untersystems oder durch das Auslesen eines Registers oder einer Speicherstelle .
Letzteres kann auf gleiche Weise wie die Elemente 230...236 in Fig. 1 organisiert sein. Die an sich herkömmlichen Verbindungen zum Einspeichern der Register 252 und 253 sind der Einfachheit halber nicht dargestellt. Weiter kann das Adressregister 252 durch einen Inkrementbildungsimpuls auf der Leitung 264 bzw. das Adressregister 253 durch einen Inkrementierungsimpuls auf der Leitung 265 erhöht werden. Entsprechende Verbindungen sind vorgesehen, um diese Register durch einen Dekrementierungsimpuls zu erniedrigen.
Ein Lese-Schreib-Steuersignal bzw. ein Freigabesignal für den Speicher 5k erscheint noch auf der gegebenenfalls mehrfachen Leitung 272. Weiter enthält die Schaltung nach Fig. 3 ein drittes Register 256, das auch mit der Datenleitung
130012/0728 original inspected
PIiN 9555 VT~A(9~ 10-6-1980
50 verbunden ist. Dieses Register kann dadurch, virtuell sein, dass es faktisch, im Blockelement 258 enthalten ist, in dem die weitere Bearbeitung erfolgt, wie nachstehend näher erläutert wird. Diese Weiterverarbeitung kann mit Schaltelementen erfolgen, die für einen grossen Teil den datenverarbeitenden Elementen in Fig. 1 gleichartig sind, z.B. ein Adresszähler (210), Decoder- und Steuerlogik (218) und der in Fig. 1 der Kürze halber nicht angegebene Bus für Steuersignale. Ein Teil der Steuerlogik ist weiterhin bereits in der Figur angegeben. Faktisch, kann das Element 56 ein nur einigermassen abgewandelter Mikroprozessor vom Typ des Elements 52 sein, also z.B. ein Signetics "265Ο" dem einige Erweiterungen hinzugefügt sind, wie noch, näher zu beschreiben ist, und bei dem andere Funktionen nicht realisiert sind, weil das eigentliche Programm nicht durchgeführt werden darf und insbesondere Verzweigungsbearbeitungen nicht durchgeführt zu werden brauchen (sie können selbstverständlich im Element 52 durchgeführt werden). Im Element 56 wird insbesondere der Programmspeicher 54 in einer laufenden Adressensequenz durchlaufen, wobei Anfangsund Endadressen immer von aussen her zugeführt werden, insbesondere vom Tastenfeld im E/A-Untersystem 60 aus. In einer anderen AusfUhrungsform kann ein einziges Element die Teile 52 und 56 zusammen ersetzen, wobei in diesem Element je nach der Steuerbetriebsart (siehe weiter unten) bestimmte Teile ausgeschaltet sind.
Zunächst werden diejenigen Teile beschrieben,
die sich auch bereits in der Anordnung nach Fig. 1 befinden. Als erster wird der Lesevorgang aus dem Speicher 54 beschrieben: Das Element 266 ist die Start/Stopp-Steuerlogik. Am Eingang 268 erscheint bei jedem Speicherzyklus des Programmspeichers .54 ein Taktimpuls, der aus dem Primärtaktimpuls auf der Leitung 224 in Fig. 1 abgeleitet wird. Weiter erscheint ein "folgendes" Signal am Anschluss 270, wenn die Ausführung des nächsten Rechnerbefehls gestartet werden muss. Anschliessend ist das Element 266 wirksam, das Taktimpulse auf den Leitungen 264 und 274 erzeugt. Wie erwähnt wurde, arbeitet der Taktimpuls auf der Leitung 264
,30012/0728 ORiG|NAL |NSpECTED
PHN9555
als ein Inkrementierungssignal. Das Element 276 ist ein Zweibitbinärzähler, den das Signal am Anschluss 270 in die Nullstellung zurückbringt. Für diesen Zähler arbeitet das Signal auf der Leitung 274 als Inkrementierungssignal.
Dieses Signal wird auch, insofern im benutzten Speicheraufbau erforderlich, der Leitung 272 über eine nicht angegebene Verbindung als Lesesteuersignal zugeführt. Das Element 278 ist ein Binär-nach-1:3-Decoder. Wenn der Zähler 276 die Stellung "1" erreicht, erscheint ein "1" Impuls am Ausgang 280. Dieser Impuls gelangt dls Ladeimpuls zum Register 205· Auf entsprechende Weise erzeugen die Stellungen "2" und "3" des Zählers 276 Ladesteuerimpulse zu den Registern 207 und 256 über die Leitungen 282 und 284.
Das Element 260 ist ein Teil des Festwertspeichers für die Steuerung und gibt für jeden Befehl dessen Länge an. Es gibt für jeden Befehl (Byte im Register 2O6) an: 1, 2 oder 3 auf der 2-Bit-Leitung 2Ö2, solange das Register 205 den betreffenden Befehlsteil enthält. Das Element 286 ist ein Zweibitkomparator für den Stand des Zählers 276 und das Signal auf der Leitung 262. Das Gleichheitssignal erscheint auf der Leitung 288, und wenn es · einen aus dem Befehlsvorrat des Signetics-2650-Mikroprozessors bekannten Befehl betrifft, werden dadurch die Taktimpulsfolgen auf den Leitungen 264 und 274 gestoppt.
Das Signal auf der Leitung 288 kann noch zum Starten der weiteren Bearbeitungen im Block 258 benutzt werden (nicht dargestellt): Sofern angebracht, ist der betreffende Befehl in den Registern 205, 207 und 256 vollständig verfügbar. In dieser Ausführung jedoch bewirkt das Signal auf der Leitung 288 in Zusammenarbeit mit dem Fehlen (siehe weiter unten) eines Signals auf der Leitung 292 ein Bereitschaftssignal auf der Leitung 294, das im Block 258 oder in anderen Teilen des Rechnersystems wirksam werden kann. Zur Verwirklichung der Erweiterung nach der Er-
findung sind einige weitere Teile vorgesehen. Am Ausgang des Registers 205 ist ein weiterer Decoderteil 290 vorgesehen. Dieses Element spricht auf die bisher im Befehlsvorrat des Signetics-2650-Mikroprozessors nicht definierten
d-z, -:.- ... . :-■ 130012/0728
PIIN 9555 Λ5Τ^-ή%- 10-6-1980
Re eimer c ο de signals C4 (IIOOOIOO) bis C7 (1 10001 1i) an, die man zusammen als (i10001xx) angeben kann, worin χ eine beliebige Information angibt. Die Ausgangsleitung 291 ist vierfach, und eine jede der vier Leitungen ist dazu belegt, die Detektion eines der vier erwähnten Rechnercodesignale zu signalisieren. Das Element 293 ist ein Wählelement, das unter der Steuerung eines ¥ählsignals am Steuereingang 295 eine oder mehrere der erwähnten Rechnercodedetektionen durchlässt und ein Signal auf der Leitung 292 erzeugt. Fenn das Element 293 dazu eingestellt ist, alle vier erwähnten Rechnercodes zu detektieren, entspricht das Signal auf der Leitung 292 der ODER-Punkction des mehrfachen Signals auf der Leitung 291. Für die Steuerung des Elements 266, das den Auslesezyklus steuert, wird diese ODER-Funktion benötigt. Auf entsprechende Feise kann an einem anderen Ausgang 297 des Elements 293 eine andere Wahl der erwähnten vier Rechnercodes detektiert werden. Die erwähnten vier Rechnercodes arbeiten immer als Zwei-Byte-Befehle, und dadurch wird also neben dem Register 205 auch das Register 207 geladen, jedoch nicht das Register 256. Weiter wird nunmehr unter der Steuerung des Signals auf der Leitung 288 (aber jetzt ist wohl ein Signal auf der Leitung 292 vorhanden) kein Signal "fertig" auf der Leitung 29^-, sondern eine neue Taktimpulsfolge auf der Leitung 296 gebildet, die für den 8-Bit-Zähler 298 und für den 256-Byte-FIFO-Pufferspeieher 3OO bestimmt ist. Dies kann leicht durch Umschalten der früher auf der Leitung 27^· erscheinenden Taktimpulsfolge erfolgen.
Diese Impulse arbeiten für den Zähler 298 als Ijücrementbildungssignale und werden nötigenfalls über eine nicht - angegebene Verbindung als Lese/Schreibsteuersignale der Leitung 272 zugeführt. Der Anschluss 270 ist auch mit dem Rückstelleingang des 8-Bit-Zählers 298 und mit dem des FIFO-Pufferspeichers 3OO verbunden. Die Zählimpulse auf der Leitung 296 werden auch dem FIFO-Speicher 300 zugeführt. Der Stand des Zählers 298 gelangt an den 8-Bit-Komparator 302. Dieser Komparator empfängt weiter noch den Inhalt des Registers 207· Für die Dauer der Ungleichheit wird also
130012/0728
PHN 9555 lfr—sfg~ 10-6-1980
immer noch, jeweils ein folgendes Wort aus dem Programmspeicher $k ausgelesen und über die 8-Bit Leitung 50 dem FIFO-Pufferspeicher 3OO zum Einschreiben unter der Aktivierung von den Taktimpulsen auf der Leitung 296 zugeführt.
Venn im Element 302 Gleichheit detektiert wird, gelangt ein Signal, z.B. ein "!"-Impuls, zur Leitung 3O4. Die Koexistenz zwischen diesem Impuls und dem Signal auf der Leitung 292 das die früher erwähnten Rechnercodesignale C4...C7 indiziert, wird im Steuerelement 266 in ein "fertig"· Signal auf der Leitung 294 umgesetzt. Insofern sie noch nicht verwendet wurde, ist die aus dem Programmspeicher ausgelesene Information in der Auslesereihenfolge im FIFO-Pufferspeicher 300 vorhanden. Die Leitungen 306 dienen zum Zuführen eines AusIeseimpulses zum FIFO-Pufferspeicher bzw. eines Rückstellimpulses, wodurch die Informationen im Pufferspeicher gelöscht werden. Die ausgelesene Information aus dem Pufferspeicher 300 wird auf der Leitung für Weiterverwendung im Blockelement 258 verfügbar. Der FIFO-Puff erspeicher· 300 kann nach bekannten Techniken aufgebaut sein, Bausteinen mit dieser Funktion stehen zur Verfügung. Der Programmspeicher ^h kann ein PROM-Speicher sein, der die weiter unten zu erläuternde Listbetriebsart durchführen kann. Er kann auch ein RAM-Speicher (mit wahlfreiem Zugriff) sein, bei dem dann sowohl Lesen als auch Schreiben möglich ist. Die Adressen zum Schreiben befinden sich dabei im Adressregister 253, das wie das Register geladen wird. Die einzuschreibenden Informationen werden auf entsprechende Weise von den Registern 205, 207 und und vom FIFO-Pufferspeicher 300 geliefert. Die Anschlüsse dieser Elemente auf der Datenleitung 50 sind dazu zweiseitig aktiv. Am Anschluss 269 kann ein Lese/Schreibsteuersignal erscheinen, das die Inkrementbildung der Adressregister 253/25^ auswählt und weiter die Richtung der Datenübertragung auf der Datenleitung 5O· Eine Schreiboperation im Programmspeicher $k wird zum grösseren Teil wie eine Leseoperation durchgeführt: Zunächst erscheint wieder ein Rückstellsignal am Anschluss 270, anschliessend werden die Register 205 und 207 unter der Steuerung des
130012/0728
PHN 9555 rp>~-2.0~ 10-6-1980
Wählsignals des Elements 278 ausgelesen, und dann wird nacheinander der Inhalt des FIFO-Speichers 3OO abgeleitet. Wieder bewirkt die detektierte Gleichheit des Elements ein Stoppsignal, wenn nur eine einzige Datenmenge verschoben wird. Diese Gleichheit kann jedoch auch ein neues Lesesignal für den Speicher $K an der vom Register 252 angegebenen Adresse aktivieren.
Die Bedeutung der beschriebenen Erweiterung liegt also darin, dass in einem Programm mit den darin gegebenenfalls eingefügten Adressen, dem Text, den Dateninformationen und Titeln der Adresszähler (die Adresszähler) das Programm in der normalen Reihenfolge der Adressen abtasten kann (können), während zum anderen völlige Sicherheit darüber besteht, dass:
a. einerseits die Information, die dem Register 205 zugeführt wird,immer ein Befehlscode (mit dem Befehlsteil) entweder von einem bisher üblichen, gegebenenfalls auszuführenden Befehl oder von einem Pseudobefehl ist, der weitere Informationen enthält;
b. und zum anderen bei allen Befehlscodes, der bekannten sowie der neu eingeführten Pseudobefehle, stets das erste Bit dem Register 205 zugeführt wird, so dass sie auf geeignete Weise decodiert werden können.
Zur Erörterung der beschriebenen Leseoperation im Programmspeicher zeigen zunächst die Fig. 4a, 4b ein Zeitdiagramm. In Fig. 4a ist das Diagramm für einen normalen Rechnerbefehl von drei Bytes dargestellt. Am Anfang zeigt das Adressregister auf das Befehlsteilbyte des betreffenden Befehls. Nach dem Startimpuls auf der Leitung 270 erhalten die Leitungen 264 und 27^- je drei Taktimpulse (untereinander zeitverschoben). Anschliessend erscheinen schnell nacheinander das "gleich"-Signal auf der Leitung 288 und das "fertig"-Signal auf der Leitung 294. Danach zeigt das Adressregister auf das Befehlsteilbyte des folgenden Befehls. Die Signale auf den Leitungen 288 und 294 können spätestens beim Startimpuls auf der Leitung 270 zum Starten eines neuen Zyklus beendet werden.
In Fig. 4b ist das Diagramm für einen "direkt-
130012/0728
PHN 9555 i£T-J4' 10-6-1980
durchlass"-Rechnerbefehl dargestellt, der also nach zwei Bytes das "gleich"-Signal auf der Leitung 288 erzeugt. Kurz zuvor ist dabei jedoch das Signal auf der Leitung 292 hoch geworden, so dass anschliessend die Taktimpulse auf der Leitung 296 erscheinen. Angenommen wurde, dass nach vier durchgelassenen Bytes das "gleich"-Signal auf der Leitung JOk erscheint. Zusammen mit dem hohen Signal auf der Leitung 292 bildet es dann schnell das "fertig"-Signal auf der Leitung 29^·. Auch dann zeigt das Adressregister auf das Befehlsteilbyte des folgenden Befehls. In Fig. 5 ist in diesem Fall ein Beispielprogramm zur Verwendung in einer erfindungsgemässen Anordnung wie es in einer bestimmten Betriebsart ("List") abgedruckt bzw. abgebildet werden kann, dargestellt. Die erste Spalte mit dem Anfang 2500 zeigt die Adressen in Hexadezimalziffern im Programmspeicher. Die zweite Spalte mit dem Anfang C7 zeigt den Befehlsteil der Befehle jeweils als zwei Hexadezimalzeichen, also als ein 8-Bit-Byte. Die dritte Spalte mit dem Anfang 0F und die vierte Spalte mit dem Anfang 40 zeigen die jeweils einem Rechnerbefehl zugeordneten weiteren Informationen z.B. Adressen oder Daten. Die fünfte Spalte mit dem Anfang "program»example" zeigt den Befehl als eine ihn symbolisierende Zeichengruppe oder andere Daten, wie sie beim Auswerten des Befehls gebildet werden. Die Zeile 1 enthält den "neuen" Befehlsteil C7, die Zeile 19 enthält den neuen Befehlsteil Gh, die Zeile 20 den neuen Befehlsteil C5 und die Zeile 21 den neuen Befehlsteil C6. Dabei sind nach dem Adressabstandssignal (0F, 06, 04 bzw. 0a) die weiteren Informationen des Titels, der Adresse, der Daten und des Textes abgedruckt. Die Bedeutung der bekannten Befehle kann im Buch "Signetics Microprocessor 265O" nachgeschlagen werden, das bereits erwähnt wurde. Die weitere Struktur der Fig. k wird weiter unten erläutert. In Fig. 6 ist der Inhalt des Programmspeichers dargestellt, wie er zum Neuformieren der Informationen in Fig. 5 erforderlich ist. Es sei noch darauf hingewiesen, dass in Fig. 6 ein sehr grosser Teil des Platzes durch die nicht einem durchzuführenden Rechnerbefehl zugeordnete
130012/0728 BAD 0RIGINAL
PHN 9555 19<- 22- 10-6-1980
Information belegt wird. Die Bezeichnung C^-hC in Fig. ist zum Darstellen der Information dieser Figur erforderlich.
In der Schaltung nach Fig. 3 spricht der Befehlsdecoder 290 auf die Rechnercodes C4...C7 an, das Signal auf der Leitung 292 gibt also an, dass die Information 11OOO1XX erhalten wurde, wobei die X-Signale einen beliebigen Wert besitzen. Hierbei geben diese Rechnercodes folgenden Programminhalt an:
C4 (IIOOOIOO): dem Adressabstandbyte-folgt eine vom Inhalt des Adressabstandsbytes bestimmte Bytemenge (Speicherstellen) mit Adressinformationen, wobei in diesem Ausfuhrungsbeispiel zwei Bytes zusammen eine Adresse bilden. C5 (IIOOOIOI): .dem Adres s abs tandbyte folgt eine vom Inhalt des Adressabstandsbytes bestimmte Byteanzahl von Dateninformationen, wobei eine jede Dateninformation aus einem Byte besteht,
C6 (IIOOOIIO): dem Adressabstandsbyte folgt eine vom Inhalt des Adressabstandsbytes bestimmte Menge von Zeichen z.B.
in ASCII-Codes codierten Zeichen ausgedruckter Text. Insbesondere ist ein ASCII-Text-Byte (dies sind Grossbuchstaben, Ziffern und ein beschränkter Vorrat weiterer Zeichen zur Abbildung ) dadurch erkennbar, dass ihr Wert zwischen 20 (OOIOOOOO) und 5F (OIOIIIII) liegt.
Zwischen 0 (00000000) und 20 liegen dagegen Steuerzeichen und zwischen 5F und FF (1IIIIIII) liegen wieder andere Zeichen, die hier nicht zum Abbilden erforderlich sind, insbesondere die Kleinbuchstaben.
C7 (IIOOOIII): dem Adressabstandsbyte folgt eine vom Inhalt des Adressabstandsbytes bestimmte Zeichenbytemenge, die zusammen einen Titel bilden. Es können die gleichen ASCII-Zeichen wie oben sein; nur die Funktion eines Titels ist verschieden (siehe weiter unten). BETRIEBSARTEN DES RECHNERSYSTEMS
3^ In Kurzfassung werden nachstehend einige Probleme
beim Entwerfen eines Programms, ein bekanntes Entwurfsystem und schliesslich einige erfindungsgemässe Betriebsarten beschrieben. Das Programm ist als Quellenprogramm
130012/0728
PHN 9555 90^-"^ 10-6-1980
3031364
mit Hilfe eines Tastenfelds konzipiert, das alphanumerische Tasten und Funktionstasten enthält, z.B. "Wagenrücklauf", "Zeilenvorschub" und "Zwischenraum". Das Programm enthält Quellenbefehle, die aus einer symbolisierenden Zeichengruppe (Befehl Mnemotechnik) und aus weiteren Daten bestehen, z.B. einer Anrufadresse oder dem Wert eines Parameters. Weiter enthält das Quellenprogramm Texterläuterungen, Titel (z.B. von Subroutinen), Adressen und Dateninformationen (nicht immer sind alle Informationsarten vorhanden). Das Quellenprogramm ist bei der Darstellung sehr übersichtlich und Korrekturen sind also in mancherlei Hinsicht leicht ausführbar. Das Quellenprogramm wird mit einem Uebersetzerelement (Assembler) übersetzt, das um einen Festwertspeicher aufgebaut ist. Das so entstehende Rechnerprogramm kann überprüft werden. Es kann für die Steuerung einer technischen Vorrichtung, z.B. für ein digitales Messgerät, für eine Produktionsmaschine oder für eine Maschine zum Verarbeiten finanzieller Daten, z.B. für solche Maschinen, die einen Mikroprozessor enthalten, bestimmt sein. Ein Entwicklungssystem für derartige Programme ist z.B. das Signetics "Twin"-System, das im Buch "Operators Guide", veröffentlicht von der Signetics Corp., 811 East Arques Av., Sunnyvale, CaI., 1976, Dokument Nr. TW O9OO3OOO, weiter in den zugeordneten Veröffentlichungen "TWIN System Reference Manual"(No. TW O9OO4OOO), die die physikalischen Strukturen des Rechnersystems beschreiben, und in "265O Twin assembly language manual", welche Veröffentlichung den Aufbau des Uebersetzersystems und seine Verwendung beschreibt (TW O9OO5OOO), beschrieben ist. Das Aufbereiten des Programms, insbesondere das Problem der "unerkennbaren" Nichtbefehlsteile im Rechnerprogramm wird hier mit Hilfe eines doppelten Signetics— 2650-Mikroprozessors gelöst. Von diesen zwei Mikroprozessoren führt der erste das eigentliche Rechnerprogramm aus und
3^ der zweite steriert den ersten Mikroprozessor. Dies erfolgt in einem sogenannten Ablaufüberwachungsverfahren, bei den jeder Rechnerbefehl also auf einen folgenden Rechnerbefehl hinweist (ohne zusätzliche Massnahmen in einem
130012/0728
PHN 9555 2-T" "**"-* 10-6-1980
Rechnerbefehl ist es der, der in der direkt nachfolgenden Speicheradresse gespeichert ist). Auf diese Weise wird nie ein "Nichtbefehls"-Teil des Rechnerprogramms erreicht, veil dessen Anfang immer direkt ein "Verzweigungs"-Befehl vorangeht. Bei diesem Ablaufüberwachungsverfahren wird jeder Rechnerbefehl in den zugeordneten Quellenbefehl mit Hilfe eines Rückübersetzungselements (disassembler) rückübersetzt. ¥enn ein Verzweigungsbefehl auftritt, spezifiziert er die Verzweigungsadresse und wird auch die Verzweigungsoperation durchgeführt. Man bekommt so bei der Verwendung dieses Ablaufüberwachungsverfahrens ein Bild der Wirkung eines Programms, aber gar nicht der Art, auf der dieses Programm (Befehle und weitere Informationen) in den Speicher eingeschrieben ist. Diese letzte Organisation lässt sich im bekannten System nur an Hand eines Quellenprogramms feststellen, für das wie bereits erwähnt eine viel grössere Speicherraummenge erforderlich ist. Erfindungsgemäss braucht man nicht über dieses Quellenprogramm zu verfügen. Weiter werden bei der Einführung der erfindungsgemässen Erweiterungen einige Betriebsarten möglich, die auf eine noch andere Weise das Programm hantierbar machen, also es unter Verwendung des Quellenprogramms möglich wäre.
In Fig. 7a und 7b sind Flussdiagramme einer Betriebsart zum Identifizieren angerufener Adressen dargestellt; so wird die Frage beantwortet: Ruft dieser Rechnerbefelil eine Subroutine an,und wenn so, welche ? Der anrufende Befehl befindet sich in der Schaltung nach Fig.3 dabei in den Registern 205» 207 und gegebenenfalls 256.
In der Schaltung nach Fig. 1 können es die entsprechenden Register 206, 208 und 202 sein. Es sei weiter angenommen, dass der Rechner gestoppt ist. Es gibt für eine Anrufadresse zwei Möglichkeiten. Sie kann eine absolute Adresse sein, die die letzten zwei Bytes eines Dreibytebefehls füllt. Sie kann auch eine relative Adresse sein, die das letzte Byte des Zweibyte-Befehls füllt. Wenn sie eine relative Adresse ist, rekonstruiert der Rechner zunächst auf bekannte Weise die absolute Anrufadresse mit dem
130012/0728
PHN 9555 £2<-~ 25 — 10-6-1980
Adresszähler 210 bzw. mit einem entsprechenden, nicht dargestellten Element in der Schaltung nach Fig. 3· In Fig. Ja. und 7b sind Flussdiagramme der erforderlichen Subroutine dargestellt, die dabei angerufen wird und deren Elemente üblich sind. In ihrer Gesamtheit und zusammen mit der Tatsache, dass jedem Titel im Rechnerprogramm der Rechnercode CJ plus ein Adressabstandsbyte vorangeht, bietet diese Subroutine eine bequemes Hilfsmittel zum Yiederfinden des Titels, mit dem die angerufene Programmadresse verknüpft ist. Es wird jetzt angenommen, dass Titel eine beschränkte Länge haben, z.B. höchstens 20 Zeichen. ¥eiter sein angenommen, dass beim Anrufen einer Subroutine mit Titel (also nicht beispielsweise einer Adresse der bis dann durchgeführten (Sub—)Routine oder eines Datenzeichens) immer eine der ersten (z.B. der ersten 1θ) Adressen am Ende des Subroutinentitels angerufen wird. Die Beschränkung auf zehn ist nur praktischer Art. Zunächst wird in Fig. Ja. im Block 102 (nach dem Start im Block 100) detektiert, dass es sich um einen Befehl mit Anrufadresse handelt. Wenn dies nicht so sein sollte, wird auf den folgenden Befehl weitergeschaltet. Im Block wird dabei nötigenfalls die absolute Anrufadresse berechnet und danach um einen festen Voreinstellwert herabgesetzt: Er sind im obigen Fall z.B. zumindest (20 + 10 = 30) Adressen, und die resultierende Adresse wird in das Adressregister eingeführt, das analog dem Adressregister 252 in Fig. 1 inkrementiert wird. Phyiskalisch kann es dasselbe Register sein, wobei die alte Adresse gerettet wird. Anschliessend wird in Fig. 7b der FIFO-Pufferspeicher 300 auf Null zurückgestellt, so dass keine alte Information mehr relevant ist (Block 109). Darauf wird im Block jeweils um eine Einheit erhöht, während im Element 293 in Fig. 3 die Auswahl aus s chlies such beim Befehlsteil "C7" erfolgt. Dies geschieht deshalb, weil es nicht von vornherein bekannt sein kann, an welcher Stelle der betreffende "Pseudo"-Befehlsteil C7, der den Anfang des Titels angibt, gespeichert ist (Block 112). Im Block 11^ wird detektiert, ob die aktuelle Adresse grosser als die Anrufadresse ist
13001 2/0728
PHN 9555 22-"— 26- 10-6-1980
(von der ursprünglich, ausgegangen wurde). ¥enn dem so ist, wird die Subroutine über den Block 128 verlassen. Wenn der Code C7 vorgefunden wird, erfolgt im Block 115 das Einlesen der Abstandsinformation in das Register 207. Im Block 118 wird (die aktuelle Adresse plus das Adressabstands byte) mit der Anrufadresse verglichen. ¥enn letztere kleiner ist, ist der "C7"-Code wahrscheinlich ein Datencode aus einem vorangehenden Programmabschnitt: Dabei geht der Rechner zum Block 110 zurück. Sonst wird im Block 119 der FIFO-Pufferspeicher auf Null zurückgestellt. Es kann grundsätzlich vorkommen, dass zwei Titel gefunden werden, und dabei ist nur der letzte dieser zwei (oder gegebenenfalls drei) relevant. Anschliessend wird im Block 122 überprüft, ob es sich um ein ASCXI-Zeichen handelt. Wenn das nicht so ist, hat sich ein Fehler eingeschlichen, z.B.
dadurch, dass sich der C7-Code auf ein Datenzeichen bezog: Dabei wird auch der Pufferspeicher wieder zurückgestellt, so dass beim Verlassen der Subroutine nie und wichtige Informationen im Pufferspeicher vorhanden sind. Wenn es sich tatsächlich um ein ASCII-Zeichen zum Abbilden handelte, wird der Block 124 geprüft, ob die Endadresse schon erreicht ist. Wenn das "gleich"-Signal auf der Leitung 3O4 noch nicht erschienen ist, wird im Block 126 das betreffende Zeichen in den FIFO-Pufferspeicher eingeschrieben. Wenn der Block 128 "fertig" erreicht ist, wird der Inhalt des FIFO-Pufferspeichers einem alphanumerischen Zeichengenerator zugeführt und gelangt weiter zur Kathodenstrahlröhrenabbildungsanordnung oder zum Drucker. Beim obigen Verfahren kann der Durchlauf schneller gemacht werden, wenn man gewiss ist, dass höchstens ein Titel vorhanden ist: Dabei ist der "ja"-Ausgang des Blocks 124 ebenfalls an den Block 128 angeschlossen, und der Block 119 kann entfallen.
In Fig. 8 ist ein Flussdiagramm einer Betriebsart zum Darstellen eines Programmabschnitts nach der Adressreihenfolge dargestellt und insbesondere zum Abfassen eines Inhaltsverzeichnisses der Subroutinen (Titel und Anfangsadresse), die in das Programm aufgenommen sind. Nach dem Anfang im Block 14O wird im Block 142 die erste
130012/0728
PHN 9555 ^lr —ί?^- 10-6-1980
Adresse eines Programms angerufen und die aktuelle Adresse daran angeglichen. Weiter wird die letzte Adresse angegeben, sie ist die Adresse des Befehlsteilsbytes direkt nach dem letzten Befehl. Im Block 144 wird überprüft, ob die letzte Adresse immer noch grosser als die aktuelle Adresse ist. ¥enn dem nicht so ist, wird der Block 146 (ENDE) erreicht. Anschliessend wird im Block 148 der Adresszähler gestartet (Anschluss 217 in Fig. 3) und ein vollständiger Befehl von 1, 2 oder 3 Bytes ausgelesen. Im Block 15O wird geprüft, ob es sich um einen der vier Befehlsteile C4...C7 handelt. Wenn dem nicht so ist, wird der Block 144 wieder erreicht. Wenn es sich tatsächlich um einen Pseudo-Befehlsteil handelt, wird im Block 152 der FIFO-Pufferspeicher auf Null zurückgestellt und das Adressabstandsbyte aus dem Register 207 aktiviert. Darauf werden im Block 153 genau so viel Datenbytes aus dem Programmspeicher ausgelesen, wie das Adressabstandsbyte angibt, und sie werden in den FIFO-Pufferspeicher eingeschrieben. Darauf wird im Block 154 detektiert, ob es den Befehlteils C7 betrifft. In diesem Fall wird im Block 155 die aktuelle Adresse (die erste Adresse nach dem Titel, deren Information in den FIFO-Pufferspeicher eingeschrieben ist) dargestellt und tabelliert. Darauf wird im Block 156 der Inhalt des FIFO-Pufferspeichers dargestellt und geht das Abbildungsgerät auf eine neue Zeile weiter. Beim Erreichen des Blocks 146 sind alle Subroutinentitel mit ihren Startadressen dargestellt (z.B. von einem Drucker). Wenn es sich um einen Bildschirm mit einer Kapazität einer beschränkten Zeilenanzahl handelt, kann der Ausgang des Blocks 156 das beim Mikroprozessor 265O beschriebene Pausesignal realisieren. Dies kann beispielsweise durch das Erregen der Leertaste am Tastenfeld manuell unwirksam gemacht werden. Eine weitere Betriebsart zum Darstellen höchstens einer vorgegebenen Zeilenanzahl des Bildschirms in einem Bild wird hier der Kürze halber nicht beschrieben.
Fig. 9a> 9b, 9c sind Flussdiagramme eines Verfahrens zum Aufbereiten der in einem Programmabschnitt auftretenden Adressen über einen vorgegebenen Verschiebungs-
130012/0728
PHN 9555 ^C 2&- 10-6-1980
3031364
abstand und zum Verschieben des betreffenden Programmabschnitts über den gleichen Verschiebungsabstand zusammen damit dargestellt. Es wird davon ausgegangen, dass diese Verschiebung keine Schwierigkeiten ergibt, sowohl aus technologischen (das Ziel ist ein Lese/Schreibspeicher) als auch aus organisatorischen Gründen (der Speicherteil, in dem die Verschiebung erfolgt, ist frei). Nachstehend werden einige Abwandlungen für spezifische Fälle beschrieben. Nach dem Start im Block 16o wird im Block 1Ö2 die Ursprungsadresse (dort fängt der Programmabschnitt an) in das Lese-Adressregister (252 in Fig. 3) eingeschrieben und die Endadresse des betreffenden Programmabschnitts zum späteren Vergleich ausgegeben. Xm Block l64 wird dabei die Zieladresse (dort fängt der Speicherteil an, in den der Prgrammabschnitt eingeschrieben werden soll) in das Schreibadressregister (253 in Fig. 3) eingeschrieben. Im Block wird festgestellt, ob der Inhalt des Lese-ldressregisters (also die aktuelle Adresse) gleich der Endadresse ist. Im Block 167 wird der nächste Befehl von 1, 2 oder 3 Bytes ausgelesen. Im Block 168 wird detektiert, ob es sich um einen Befehl mit einer relativen Anrufadresse handelt (er ist ein 2-Byte-Befehl). ¥enn dem so ist, wird die Fig. 92 über den Block 163 verlassen. Im Block 170 wird detektiert, ob das Befehlsteilbyte den Wert C4 hat. Wenn das so ist, wird die Fig. 9a über den Block 169 verlassen. Im Block
171 wird detektiert, ob es sich um einen Befehl mit einer absoluten Anrufadresse handelt. Im Block 172 wird detektiert, ob diese Anrufadresse zwischen der Ursprungsadresse und der Endadresse liegt. Nur wenn dem so ist, wird die Anrufadresse im Block 173 um den Unterschied zwischen der Ursprungsadresse und der Zieladresse geändert. Dieser Unterschied kann positiv oder negativ sein. Anschliessend wird im Block 174 der Befehl ohne weitere Aenderungen auf die Zieladresse übertragen, und das System kehrt zum Block 166 zurück. Der Block 174 wird auch vom Block 171 aus (es handelt sich um einen Befehl ohne Adresse) oder vom Block
172 aus (die Adresse weist auf eine Speicherstelle ausserhalb des zu übertragenden Programmabschnitts hin) erreicht.
130012/0728
PHN 9555 2^r ^9- 10-6-1980
3031064
Die Uebertragung eines Pseudo—Befehls mit dem Befehlsteil C5» C6 oder C7 kann eine Anzahl von Zyklen erfordern, wie in Fig. Sh für einen C4-Befehl beschrieben ist, aber diese Pseudobefehle werden auf* ihre Zieladresse ungeändert übertragen. Schliesslich wird die Subroutine in Fig. 9a...c über den Block 165 verlassen. Der Kürze halber ist dies hier forgelassen (Block I88, 192 in Fig. 9b).
Die Fig. 9b wird über den Block 169 erreicht. Im Block 184 wird detektiert, ob die betreffende Adresse zwischen der Ursprungsadresse und der Endadresse liegt (vgl. 172). Im Block I86 wird die Anrufadresse
aufbereitet . Im Block I88 wird die Information übertragen (zwei Bytes Information). Im Block I92 wird detektiert, ob der Adressabstand (Element 302) erreicht ist.
Solange dies nicht der Fall ist, wird der Zyklus der Fig. 9b jeweils durchlaufen. Schliesslich erfolgt der Ausgang über den Block 19^5 und der Block 166 wird wieder erreicht. Die Subroutine nach Fig. 9h kann auch dadurch realisiert werden, dass zunächst der ganze Inhalt des Pseudobefehls mit dem Befehlsteil C4 in den FIFO-Pufferspeicher eingeschrieben wird und die so verfügbaren Adressen nacheinander aufbereitet und erneut in die FIFO-Pufferspeicher eingeschrieben werden. ¥enn die vollständige Adressreihe bearbeitet ist, stehen sie in der entsprechenden Reihenfolge am Ausgang des FIFO-Pufferspeichers zur Verfügung. Wenn sie nach dem Aufbereiten zur Verfügung stehen, wird die Information des FIFO-Pufferspeichers auf die Zieladresse dadurch übertragen, dass noch der Block 17^· durchlaufen wird.
Fig. 9c wird über den Block I63 erreicht. Im Block 175 wird dieAxxruf adresse als die. Summe der aktuellen Adresse und des Befehlsbytes bestimmt, das die relativen Adressdaten enthält. Im Block 176 wird detektiert, ob die Anrufadresse zwischen der Ursprungsadresse und der End-
3^ adresse liegt. Es sei nun als Erweiterung angenommen, dass nur ein Teil des Programms verschoben wird. Dabei können auch bestimmte Adressen ausserhalb dieses Programmabschnitts aufbereitet werden müssen. Deshald wird in beiden
130012/0728
PHN 9555 ?^30- 10-6-1980
Blöcken I77a und 177b detektiert, ob die aktuelle Adresse zwischen der Ursprungsadresse und der Endadresse liegt. ¥enn beide Adressen (berechnete Adresse und aktuelle Adresse) innerhalb oder beide Adressen ausserhalb von dem zu übertragenden Programmabschnitt liegen, braucht eine relative Adresse nicht geändert zu werden, und über den Block 178 wird der Block 17k in Fig. 9a erreicht. ¥enn eine der erwähnten Adressen innerhalb und eine der erwähnten Adressen ausserhalb von dem zu übertragenden Programmabschnitt liegt, wird der Block 179 erreicht. Hier wird die Anrufadresse um den Unterschied zwischen der Ursprungsadresse und der Zieladresse geändert (Block 173 in Fig. 9a). Anschliessend wird im Block 18O die (absolute) Anrufadresse um die aktuelle Adresse herabgesetzt. Jm Block I8I wird detektiert, ob die sich ergebende relative Adresse innerhalb der dafür gesetzten Grenzen liegt. Für ein 8-Bit-Byte können diese Grenzen bei Hh 63 liegen (dieses Byte enthält dabei sechs Adressbits, ein Vorzeichenbit und ein sogenanntes "indirekt"-Bit), wobei auch -64 noch zulässig ist (siehe das erwähnte Buch über den "265O"-Mikroprozessor). Fenn dies in Ordnung ist, wird über den Block 182 die Fig. 9a wieder erreicht (Block 17^-)· Wenn der relative Adressabstand nich einwandfrei ist, wird im Block 183 der Befehl in der ursprünglichen Form dargestellt, also unter Erwähnung der dafür gültigen aktuellen Adresse und der ursprünglichen relativen Adresse. Der Programmierer kann dabei später eingreifen, denn die dargestellte Information bildet eine Signalisierung des Fehlers. Eine Möglichkeit zur Korrektur liegt darin, dass der Befehl mit relativen Anrufadresse in einen Befehl mit absoluter Anrufadresse geändert wird, wofür ein zusätzliches Adressbyte erforderlich ist. Dabei muss der ganze übertragene Teil vom Programmierer angepasst werden. Nach dem Block 183 ist der ungeänderte Befehl also wieder verfügbar, und über den Block I90 wird wieder das Schema nach Fig. 9a erreicht.
Obiger Vorgang arbeitet auch gut, wenn eine Ueberlappung zwischen dem ursprünglichen Programmabschnitt
130012/0728
PHN 9555 2S^- £4- 10-6-1980
und dem verschobenen Programmabschnitt besteht, es sei denn, dass dabei auf niedrigere Adressen übertragen wird. Wenn dabei auf höhere Adressen übertragen werden muss, erfolgt der Vor.gang in zwei Schritten: Zunächst wird die Adresse aufbereitet, und erst wenn das ganze Programm aufbereitet ist, wird es übertragen, wobei an der Hinterseite angefangen wird, während die Adresszähler Dekreraentbildungsimpulse erhalten. Wie oben beschrieben kann auch ein (vollständiges) Programm aus einem PROM-Speicher auf einem RAM-Speicher übertragen werden und dort operationeil sein.
In Fig. 10a und 10b sind Flussdiagramme einer Betriebsart zum Darstellen eines Sektors eines Rechnerprogramms dargestellt. So entsteht aus dem Rechnerprogramm das als Beispiel in Fig. 6 dargestellt ist, ein für einen Programmierer viel besseres Bild, das in Fig. 5 dargestellt ist. Nach dem Anfang im Block 310, wobei ebenfalls die erste und die letzte Adresse des darzustellenden Sektors angegeben werden, wird im Block 33^ die aktuelle Adresse der ersten Adresse angeglichen. Im Block 336 wird detektiert, ob die aktuelle Adress zumindest gleich gross ist wie die letzte Adresse. Wenn dem so ist, wird die Subroutine über den Block 338 "Ende" verlassen. Solange dies nicht der Fall ist, wird im Block 312 die aktuelle Leseadresse des Programmspeichers in ein Zwischenregister eingeschrieben, und ausserdem wird der an der aktuellen Adresse anfangende Befehl von 1, 2 oder 3 Bytes aus dem Programmspeicher ausgelesen und in den weiteren Zwischenregisterraum geschrieben (es können die Register 205, 207, 256 sein). Im Block 316 wird detektiert, ob der Befehlsteil den Wert C7 hat. Wenn dem so ist, wird im Block 318 eine neue Druckseite aktiviert (angenommen sei, dass das Darstellungselement ein Drucker ist). Anschliessend wird im Block 320 die letzte in das erwähnte Zwischenregister eingeschriebene Befehlsteiladresse ausgegeben und dargestellt, welchem Vorgang eine Tabellierung folgt. Anschliessend wird im Block 322 der früher ausgelesene Befehl aus dem weiteren Zwischenregisterraum dargestellt (im Rechnercode) und es folgt wiederum eine Tabellierung.
130012/0728
PHN 9555 2<y~ 32- 10-6-1980
3031954
Im Block 324 wird detektiert, ob der Befehlsteil einerseits den ¥ert C4, C$ hat (110001Ox) oder zum anderen den ¥ert C6, C7 (110001Ix) oder schliesslich einen anderen ¥ert als (i10001xx) hat. Im Falle C6, C7 (Text bzw. Titel) wird im Block 326 ein ASCII-Rückübersetzungselement aktiviert. Im Falle Ch...CJ wird dabei im Block 33O das nächste Byte aus dem Programmspeicher ausgelesen und dargestellt. Bei C4 wird ein Byte in zwei Hexadezimalzeichen umgewandelt, während jeweils nach dem zweiten, vierten use. Byte eine Leerstelle folgt. Bei C5 wird ein Byte in zwei Hexadezimalzeichen umgewandelt, während jedem Byte eine Leerstelle folgt. In den Fällen C6, C7 wird jedes Byte in ein alphanumerisches Zeichen umgewandelt, wobei Leerstellen auch in den Programmspeicher eingeschrieben, sein müssen. Danach wird im Block 328 detektiert, ob der Adressabstand erreicht ist (vergleiche z.B. Block 118 in Fig. 7b). Solange dies nicht der Fall ist, wird im Block 33O jeweils das nächste Byte aus dem Programmspeicher behandelt. Wenn der Adressabstand erreicht ist, wird im Block 332 eine Leerzeile
2^ dargestellt, der Drucker geht zum Beginn der jetzt wieder folgenden neuen Zeile und danach geht das System zum Block 336.
¥enn sich der Block 324 auf einen anderen Code als (110001xx) bezieht, wird im Block 34O ein Rücküber-Setzungselement (disassembler) für den Rechnerbefehl aktiviert, der Befehl wird in den Quellencode rückübersetzt und dargestellt. Es folgt dann eine Tabellierung. Im Block 342 wird detektiert, ob es sich um einen Befehl mit einer Adresse handelt. Diese Detektierung erfolgt an Hand des immer noch verfügbaren Befehls teils. Ist dies der Fall, wird im Block 344 detektiert, ob es sich um eine relative Adresse handelt. ¥enn dies der Fall ist, wird im Block 246 aus der relativen Adresse und der aktuellen Adresse (die erste Adresse am Ende des aktuellen Befehls) die absolute Adresse berechnet. Im Block 348 wird die jetzt gefundene absolute Adresse dargestellt, gegebenenfalls zusammen mit einem folgenden Element: a) mit einem Sternchen, das angibt, dass es sich um eine
130012/0728
9555 3£T ^S3>- -6-ΐ98θ
J U J ! b ο A.
indirekte Adresse handel,
b) mit einer Angabe eines Indexregisters und einer Angabe einer zusätzlichen Inkrementbildung oder Dekrementbildung (beispielsweise 254θ + x3 +'■ 1 auf der fünften Textzeile der Fig. 5).
Dies erfolgt völlig auf Grund der bekannten Struktur des Befehlsvorrats des 2650-Signetics-Mikroprozessors.
Der Adresse folgt wieder eine Tabellierung. Darauf wird im Block 35Ο detektiert, ob die betreffende absolute Adresse auf eine Subroutine hinweist, indem der zugeordnete Titel aufgesucht (wenn möglich) und dargestellt wird, und es folgt im Block 352 eine Detektierung, ob es sich um einen Verzweigungsbefehl handelt. Wenn dies der Fall ist, folgt die Darstellung einer Leerzeile (Block 353)· Dies verbessert die Uebersichtlichkeit der Darstellung. Anschliessend folgt im Block 35^ die Ruckkehr des Druckers zu einer neuen Zeile, und der Block 33^ wird wiederum erreicht.
¥enn im Block 3^2 detektiert wird, dass es sich nicht um einen Befehl mit einer Adresse handelt, wird detektiert (im Block 356), ob es sich um einen Befehl mit einer Dateninformation handelt. Wenn dies der Fall ist, wird im Block 358 zunächst tabelliert, und darauf werden
2^ die Daten binärkodiert dargestellt. Anschliessend wird immer der Block 35^· wieder erreicht.
Das Programm der Fig. 5 ist als Vorführungsprogramm eingetragen; es enthält keine syntaktischen Fehler; es erfüllt an sich keine Nutzfunktion. Aus der Fig. 6 ist ersichtlich, wie kurzgefasst die Bezeichnung im Rechnercode ist: Es betrifft weniger als die Hälfte des Speicherraums, und der Rest wird mit zusätzlichen Daten gefüllt.
In obiger Beschreibung ist die Erfindung an Hand einer einfachen und vorteilhaften Realisierung mit Hilfe eines Signetics-2650-Mikroprozessors erläutert. Auch andere Prozessoren sind verwendbar. Insbesondere beschränkt sich die Erfindung nicht auf Befehle mit variabler Länge.
130012/0728
yf-2>l4-~ 10-6-1980
Fig. 7a: 100 - Start
102 - Befehl mit Anrufadresse 104 - Xiihalt des AdressZählers festhalten 106 - Anrufadreise minus Voreinstellung berechnen und Adresszähler füllen
Fig. 7b: 109 - FXFO-Pufferspeicher rückstellen 110 - Schritt um eine Adresse 112 - haben Daten den ¥ert C7?
114 - ist aktuelle Adresse grosser als Anrufadresse?
115 - folgendes Infornationsbyte lesen
118 - Endadresse = aktuelle Adresse plus letztes
gelesenes Byte grosser als Anrufadresse?
119 - FIFO-Pufferspeicher rückstellen 120 - folgendes Datenbyte lesen
122 - ASCII-Zeichen?
124 - aktuelle Adresse)· Endadresse?
126 - Datenbyte zum FIFO-Pufferspeicher 128 - Ende
Fig. 8: 14O - Anfang
142 - erste Adresse eines Programms anrufen und Adresse des letzten Befehlsbytes angeben (Endadresse)
T 44 - ist aktuelle Adresse ^ Endadresse? 146 - Ende
148 - Adresszähler starten und einen Befehl aus dem Programmspeicher auslesen
150 - ist Befehlsteil 11OOO1XX ?
152 - Adressabstandsbyte aktivieren und FIFO-Pufferspeicher zurückstellen
!S3 - genau so viele Datenbytes, wie das Adressabstandsbyte angibt, auslesen und sie in den FIFO-Pufferspeicher einschreiben
154 - ist Befehlsteil C7 ?
155 - aktuelle Adresse darstellen und tabellieren
156 - Inhalt des FIFO-Pufferspeichers darstellen
und nach einer neuen Zeile gehen Fig. 9a: 160 - Anfang; I65 - Ende
130012/0728
PHN 9555 y^ -25- 10-6-1980
162 - Ursprungsadresse in das Leseadressregister einschreiben und Endadresse aufholen
■\Sh - Zieladresse in das Schreibadressregister einschreiben
166 - Inhalt Leseadressregister = Endadresse ?
167 - folgenden Befehl lesen
168 - ist er ein Befehl mit relativer Anruf-
adresse?
170 - hat Befehlsteilbyte den Vert C4?
177 - ist er ein Befehl mit absoluter Anruf
adresse?
172 - Anrufadresse zwischen Ursprungsadresse und
Endadresse
173 - Anrufadresse um den Unterschied zwischen Ursprungsadresse und Zieladresse ändern
17^ - Information übertragen Fig. 9b: 184 - Anrufadresse zwischen Ursprungsadresse
und Endadresse?
186 - Anrufadresse um den Unterschied zwischen Ursprungsadresse und Zieladresse ändern
188 - Information übertragen 192 - Adressabstand (302) erreicht? Fig. 9c: 175 - Anrufadresse wird aktuelle Adresse plus relatives Adressbyte
176 - Anrufadresse zwischen Ursprungsadresse und
Endadresse?
177a = 177b - aktuelle Adresse zwischen Ursprungsadresse und Endadresse?
179 - Anrufadresse um den Unterschied zwischen Ursprungsadresse und Bestimmungsadresse
ändern
180 - Anrufadresse um die aktuelle Adresse her
absetzen
181 - liegt die relative Adresse zwischen gesetzten Grenzen?
I83 - alten Befehl darstellen Fig. 10a: 310 - Anfang
- aktuelle Adresse wird erste Adresse
130012/0728
PHN 9555 3^-" 3&- 10-6-1980
336 - aktuelle Adresse ^. letzte Adresse?
338 - Ende
312 - aktuelle Adresse im Zwischenregister Zwischenspeichern und aktuellen Befehl lesen 316 - ist Befehlsteil C7?
318 - neue Abdruckseite aktivieren
320 - zwischeng-espeicherte Adresse darstellen
und tabellieren
322 - aktuellen Befehl darstellen und tabellieren 324 - ist Befehlsteil C4, C5, C6, C7?
326 - ASCII-Rückübersetzungselement aktivieren 33O - nächstes Byte lese und darstellen 328 - ist Adressabstand erreicht? 332 - Leerzeile darstellen und nach einer neuen Zeile gehen
Fig. 10b: 3^0 - Rückübersetzungselement aktivieren; übersetzten Befehl darstellen und tabellieren 3^2 - Befehl mit Adresse?
344 - ist Adresse relative Adresse? 3^6 - absolute Adresse berechnen
3^8 - absolute Adresse darstellen und tabellieren 35O - Titel der Subroutine detektieren und darstellen
352 - ist er ein Verzweigungsbefehl? 353 - Leerzeile darstellen
356 - Befehl mit Dateninformation? 358 - Binärdaten tabellieren und darstellen - nach einer neuen Zeile gehen.
130012/0728

Claims (1)

  1. PHN 9555 3K 10-6-1980
    PATENTANSPRUECHE:
    r\\ Rechnersystem mit
    a. einem Programmspeicher mit einer Folge von Adressstellen zum Speichern von Rechnercodes;
    b. einem Tastenfeld;
    c. einer Darstellungseinrichtung für zumindest eine Zeichenzeile ;
    d. einem Prozessor, der zumindest enthält:
    d1. ein Adressregister für den Programmspeicher mit einem Inkrementbildungseingang; d2. ein Befehlsregister (205) und weitere Speicherelemente (207> 256) zusammen mit einer vorgegebenen /
    Länge zum Speichern eines aus dem Programmspeicher ausgelesenen Befehls mit dem Maximum dieser vorgegebenen Länge; ^- d3. einen an das Befehlsregister angeschlossenen ersten Befehlsdecoder;
    äh. ein Ausführungselement zum Ausführen einer Informationsbearbeitung unter der'Steuerung eines Signals des ersten Befehlsdecoders
    die alle durch Informationsverbindungen "für Daten- und Steuersignale verbunden sind,
    dadurch gekennzeichnet, dass weiter vorgesehen sind
    d5- ein mit dem Befehlsregister verbindbarer zweiter Befehlsdecoder (290) der unter der Steuerung eines vorgegebenen Rechnerbefehlsvorrats (1IOOOIXX) ein Aktivierungssignal einem Aktivierungseingang eines
    d6. Adressabstandsdetektors (298, 302) zuführt, der einen Adressabstand mit einem Vählbereich detektiert, dessen Obergrenze zumindest den maximalen Inhalt eines Befehls enthält, und der mit ersten Mitteln (209),die ein dem betreffenden Rechnercode aus dem erwähnten Vorrat von Rechnerbefehlen zugeordnetes, einzelnes Signal eines ersten Adressabstands im Programmspeicher empfangen und dabei ein erstes Steuersignal (296) erzeugen, und mit zweiten
    130012/0728
    PHN 9555 3^-"*?- 10-6-1980
    Mitteln (298) zum Aktualisieren eines nacla dem erwähnten Rechnercode zurückgelegten relativen Adressabstands im Programmspeicher zum Erzeugen eines sperrenden Signals (304) und zum Beenden des erwähnten ersten Steuersignals versehen ist, wobei das erste Steuersignal den Prozessor für nach dem einzelnen Signal aus dem Programmspeicher ankommende Informationen in eine nicht aktive Betriebsart steuert.
    2. Rechnersystem nach Anspruch 1, dadurch gekennzeichnet, dass ein FIFO-Pufferspeicher (300) mit einem Eingang, der mit einem Ausgang des Programmspeichers verbunden ist, und mit einem Ladeeingang versehen ist, der pro Adresse des Programmspeichers das erste Steuersignal empfängt.
    3. Rechnersystem nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der zweite Befehlsdecoder mit einem ersten Signalausgang versehen ist, der unter der Steuerung eines zum vorgegebenen Rechnerbefehlsvorrat gehörenden ersten spezifischen Rechnercodes (C4, 11000100) in Zusammenarbeit mit dem ersten Steuersignal ein aus dem Programmspeicher ausgelesenes ¥ort als eine Adressinformation identifiziert.
    4. Rechnersystem nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der zweite Befehlsdecoder mit einem zweiten Signalausgang versehen ist, der unter der Steuerung eines zum vorgegebenen Rechnerbefehlsvorrat gehörenden zweiten spezifischen Rechnercodes (C5, 11000101) in Zusammenarbeit mit dem ersten Steuersignal ein aus dem Programmspeicher ausgelesenes Wort als eine Dateninforma-
    3^ tion identifiziert.
    5. Rechnersystem nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der zweite Befehlsdecoder mit einem dritten Signalausgang versehen ist, der unter der Steuerung eines zum vorgegebenen Rechnerbefehlsvorrat gehörenden dritten spezifischen Rechnercodes (C6, 11000110) in Zusammenarbeit mit dem ersten Steuersignal ein aus dem Programmspeicher ausgelesenes ¥ort als eine Textinformation identifiziert.
    . 130012/0728
    PHN 9555 2^* 3 - 10-6-1980
    6. Rechnersystem nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der zweite Befehlsdecoder mit einem vierten Signalausgang versehen ist, der unter der Steuerung eines zum vorgegebenen Rechnerbefehlsvorrat gehörenden vierten spezifischen Rechnercodes (C7, 11000111) in Zusammenarbeit mit dem erwähnten ersten Steuersignal ein aus dem Programmspeicher ausgelesenes Wort als eine Titelinformation identifiziert.
    7. Rechnersystem nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass das sperrende Signal (3O4) als ein erstes Stoppsignal (29^-) für das Adressregister arbeitet und dass das Tastenfeld mit vierten Mitteln (z.B. Leertaste) versehen ist, die mit Hilfe eines zweiten Steuersignals (270) das erste Stoppsignal unwirksam machen.
    8. Rechnersystem nach Anspruch 7} dadurch gekennzeichnet, dass das Tastenfeld mit fünften Mitteln versehen ist, die mit Hilfe eines dritten Steuersignals das erste Stoppsignal ständig unwirksam machen, und dass Adress-Vergleichsmittel vorgesehen sind, die beim Erreichen einer Endadresse durch das Adressregister das dritte Steuersignal beenden und ein zweites Stoppsignal für das Adressregister erzeugen.
    130012/0728
DE19803031964 1979-08-27 1980-08-25 Rechnersystem, bei dem sich der programmspeicher zum durchlaufen eignet, wobei einem befehl nicht zugeordnete daten einzeln detektiert werden Withdrawn DE3031964A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
NL7906416A NL7906416A (nl) 1979-08-27 1979-08-27 Rekenmachinesysteem, waarbij het programmageheugen geschikt is om doorlopen te worden waarbij niet tot een instruktie behorende gegevens apart gedetekteerd worden.

Publications (1)

Publication Number Publication Date
DE3031964A1 true DE3031964A1 (de) 1981-03-19

Family

ID=19833731

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19803031964 Withdrawn DE3031964A1 (de) 1979-08-27 1980-08-25 Rechnersystem, bei dem sich der programmspeicher zum durchlaufen eignet, wobei einem befehl nicht zugeordnete daten einzeln detektiert werden

Country Status (6)

Country Link
US (1) US4376977A (de)
JP (1) JPS5635249A (de)
DE (1) DE3031964A1 (de)
FR (1) FR2464521A1 (de)
GB (1) GB2057731B (de)
NL (1) NL7906416A (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4541045A (en) * 1981-09-21 1985-09-10 Racal-Milgo, Inc. Microprocessor architecture employing efficient operand and instruction addressing
JPS5938870A (ja) * 1982-08-30 1984-03-02 Sharp Corp 電子式計算機
JPS62229343A (ja) * 1986-03-29 1987-10-08 Toshiba Corp プログラム・カウンタ表示方式
US5535331A (en) * 1987-09-04 1996-07-09 Texas Instruments Incorporated Processor condition sensing circuits, systems and methods
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US7493607B2 (en) * 2002-07-09 2009-02-17 Bluerisc Inc. Statically speculative compilation and execution
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US20070294181A1 (en) * 2006-05-22 2007-12-20 Saurabh Chheda Flexible digital rights management with secure snippets
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US20080154379A1 (en) * 2006-12-22 2008-06-26 Musculoskeletal Transplant Foundation Interbody fusion hybrid graft
US10333696B2 (en) 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency
US11070373B2 (en) * 2018-02-21 2021-07-20 Ebay Inc. Masked key hopping

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3893084A (en) * 1973-05-01 1975-07-01 Digital Equipment Corp Memory access control system
US4089059A (en) * 1975-07-21 1978-05-09 Hewlett-Packard Company Programmable calculator employing a read-write memory having a movable boundary between program and data storage sections thereof
US4180854A (en) * 1977-09-29 1979-12-25 Hewlett-Packard Company Programmable calculator having string variable editing capability
US4231087A (en) * 1978-10-18 1980-10-28 Bell Telephone Laboratories, Incorporated Microprocessor support system

Also Published As

Publication number Publication date
GB2057731A (en) 1981-04-01
FR2464521A1 (fr) 1981-03-06
GB2057731B (en) 1983-06-22
US4376977A (en) 1983-03-15
NL7906416A (nl) 1981-03-03
FR2464521B1 (de) 1982-11-26
JPS5635249A (en) 1981-04-07

Similar Documents

Publication Publication Date Title
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE1901228C3 (de) Datenverarbeitungsanlage mit Einrichtungen zur Wiederholung von Operationen bei Auftreten eines Fehlers
DE3126878C2 (de) Mikroprogramm-Steuerschaltung zum Ausführen eines aus einem Steuerspeicher in einem Quellenregister aufgenommenen Mikrobefehls
DE2417795C2 (de) Datenverarbeitungsanlage
DE2339636C2 (de) Einrichtung zur Adressierung eines schreibbaren Mikroprogrammspeichers
DE3151745A1 (de) Multitasking-datenverarbeitungsanlage
DE2360303C2 (de) Datenverarbeitungsanlage mit Adreßübersetzung für Ein-/Ausgabekanäle
DE3031964A1 (de) Rechnersystem, bei dem sich der programmspeicher zum durchlaufen eignet, wobei einem befehl nicht zugeordnete daten einzeln detektiert werden
DE1524225B2 (de) Verfahren zum betriebe einer redigier- und wiedergabeeinrichtung
DE2355993B2 (de) Programmierbare datenverarbeitungsanlage
DE2847934A1 (de) Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher
DE1275800B (de) Steuerwerk fuer datenverarbeitende Maschinen
DE3121445A1 (de) Programmiereinrichtung
DE2318069A1 (de) Rechnersteuersystem unter verwendung von mikroprogrammierung und statisch/dynamischer erweiterung von steuerfunktionen mittels festverdrahteter logischer matrix
DE1499206C3 (de) Rechenanlage
DE2429067C3 (de) Speicherschaltung
DE1774682A1 (de) Einrichtung zur sichtbaren Datenwiedergabe
DE3043653A1 (de) Datenverarbeitungsanlage
DE2926351A1 (de) Look-ahead-speicheradressen- steuereinrichtung
DE2063195C2 (de) Verfahren und Einrichtung zur Operationssteuerung einer Anzahl von externen Datenspeichern
DE2246863C3 (de) Einrichtung zur Protokollierung des Programmablaufs in einer Datenverarbeitungsanlage
DE2458525B2 (de) Speicheranordnung mit Haupt- und Pufferspeicher
DE2245284A1 (de) Datenverarbeitungsanlage
DE2835110A1 (de) Schneller echtzeit-rechneremulator
DE1499224C3 (de) Datenverarbeitungsanlage mit Kellerspeichereinrichtungen

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8139 Disposal/non-payment of the annual fee