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 werdenInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program 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
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
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>- 1Ο-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
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 ?
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
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
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)
- PHN 9555 3K 10-6-1980PATENTANSPRUECHE:r\\ Rechnersystem mita. 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 sindd5- ein mit dem Befehlsregister verbindbarer zweiter Befehlsdecoder (290) der unter der Steuerung eines vorgegebenen Rechnerbefehlsvorrats (1IOOOIXX) ein Aktivierungssignal einem Aktivierungseingang einesd6. 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 zweiten130012/0728PHN 9555 3^-"*?- 10-6-1980Mitteln (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/0728PHN 9555 2^* 3 - 10-6-19806. 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
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)
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)
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 |
-
1979
- 1979-08-27 NL NL7906416A patent/NL7906416A/nl not_active Application Discontinuation
-
1980
- 1980-08-15 US US06/178,646 patent/US4376977A/en not_active Expired - Lifetime
- 1980-08-22 FR FR8018382A patent/FR2464521A1/fr active Granted
- 1980-08-22 GB GB8027474A patent/GB2057731B/en not_active Expired
- 1980-08-25 DE DE19803031964 patent/DE3031964A1/de not_active Withdrawn
- 1980-08-27 JP JP11716380A patent/JPS5635249A/ja active Pending
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 |