DE3321131A1 - Selbstlernende rechenmaschine - Google Patents
Selbstlernende rechenmaschineInfo
- Publication number
- DE3321131A1 DE3321131A1 DE19833321131 DE3321131A DE3321131A1 DE 3321131 A1 DE3321131 A1 DE 3321131A1 DE 19833321131 DE19833321131 DE 19833321131 DE 3321131 A DE3321131 A DE 3321131A DE 3321131 A1 DE3321131 A1 DE 3321131A1
- Authority
- DE
- Germany
- Prior art keywords
- file
- ics
- processor
- interrupt
- program
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Es wird ein Rechner und ein System zur Integration von Software mit Hardware offenbart, das als "Integrations-Control-System - ICS" bezeichnet wird. Hierbei handelt es sich um ein automatisches Verfahren zum Formatisieren eines maschinenunabhängigen Programmschreibens in einer hochentwickelten Programmsprache, um einem Prozessor ein System zu geben, ohne daß eine genaue Kenntnis des Assemblers, der Linker-Erfordernisse oder der Sprach-Interface-Erfordernisse nötig ist. ICS gibt hierbei die Minimalerfordernisse selbst vor. Das ICS-System läßt sich in einem besonderen Speicher, zugreifbar für jede beliebige Computer-Konfiguration, ablegen. Hieraus wird automatisch der Ablauf des Integrationssystems aufgebaut. Durch Verwendung hochentwickelter Weisungen ist das Entwicklungssystem wesentlich schneller und kontrolliert sich selbst auf Fehler. Selbst Fehler, die sich sonst erst im Betrieb bemerkbar machen, werden ausgeschaltet. Es entsteht ein sofort exekutierbares Modul, das in herkömmlicher Weise abgelegt, beispielsweise in PROM, eingebrannt werden kann.
Description
Die vorliegende Erfindung bezieht sich auf einen Digitalrechner, in denen sich der Funktionsablauf entsprechend einer Datei, die von der Maschine selbst während des Ablaufs gewonnen wird, ändert und auf ein Verfahren, die von Schnittstellen zwischen Software und Hardware verfügbar macht. Insbesondere bezieht sich die Erfindung auf ein System zum sofortigen Überführen von Hardware/Software-Schnittstellen-Spezifikationen in einen spezifischen für den Mikroprozessor durchführbaren Code und in Befehle für das Linker/Ladesystem einer ausgewählten Zusammenstellung von Hardware.
Zu Computern zusammengesetzte und für eine beliebige Benutzung verfügbar gemachte Geräte bestehen im wesentlichen aus mechanischen und elektrischen, d.h. schaltungstechnischen Komponenten, die mit dem in diesen Hardwarekomponenten eingegeben oder eingespeicherten Programmkomponenten zusammenwirken. Die Aufgabe, für den Hardware-Anteil und den Softwareanteil geeignete und passende Verknüpfungen vorzusehen, war schon immer ein sehr schwieriges und zeitraubend zu lösendes Problem. Das System der vorliegenden Erfindung macht es dem Entwickler eines aus bestimmten Hardwareteilen zusammengesetzten Computergerätes möglich, eine Schnittstelle zwischen Hardware und Software in einer hochentwickelten Sprache in einer zusammenwirkenden Weise zu spezifizieren. Dieses System überführt dann diese Spezifizierungen in einen vom Computergerät verarbeitbaren Code, der so akzeptiert wird, wie
andere Befehle von einem Programm-Linking-Ladesystem ebenfalls aufgenommen werden. Auf diese Weise kann ein Entwicklungsprozeß, der sonst bis zu mehreren Tagen oder gar Wochen dauern würde, auf Minuten reduziert werden.
Bei Verwendung einer hochentwickelten Sprache, wie beispielsweise PASCAL, ist das System von der eigentlichen Art der Maschinensprache oder der aufgesetzten Interpreter unabhängig. Auf PASCAL basierende Programme brauchen im wesentlichen nicht verändert zu werden, ungeachtet des Verfahrens oder der Maschinenkonfiguration, auf welcher sie benutzt werden. Jedoch gibt es mit dem herkömmlichen PASCAL keinen direkten Weg zur Spezifizierung von zubehörabhängigen Anforderungen wie beispielsweise Unterbrechungsvektoren, Wiederanlaufroutinen oder der Speicherkonfiguration.
Es könnte eine breit angelegte Maschinensprache oder eine Assemblerroutine entwickelt werden, um das PASCAL-Programm mit der Prototyp-Hardware zu verbinden und eine Linker-Befehlsdatei, um die Speicherkonfiguration zu spezifizieren. Hierfür wäre es nötig, sehr detailliert auf die Eigentümlichkeiten des spezifischen Assemblers, den Linker und die PASCAL-Schnittstellen-Erfordernisse einzugehen. Die Erfahrung zeigt, daß dieser Weg einer Anpassung sehr zeitraubend ist und da so viele Einzelschritte dicht an der Maschinensprache, d.h. auf niedrigem Niveau vollzogen werden müssen, sind auf dem Weg Fehler unvermeidlich und es entsteht wiederum nur eine Einzellösung. Nach dem Stand der Technik gibt es keine Systeme, die die Linker-Befehle und die die konfigurationsabhängigen Befehlsdateien automatisch erzeugen.
Es wäre wünschenswert, über ein System verfügen zu können, das für die Konfiguration eines Programms auf einen Prototyp eine Liste aller zu spezifizierenden Schritte bereithält - vom Namen des übersetzten Zielprogramms bis zu der Adresse, wo das Programm mit der Durchführung beginnt, und das dann, basierend auf den Antworten die Konfigurations-Ziel-Datei erzeugt und Linker-Befehle, die für die Konfiguration des Prototyps benötigt werden.
Wenn in einem solchen System die zu vollziehenden Schritte von einer hochentwickelten Sprache gesteuert ablaufen würden, könnte der Prototyp schneller und mit weniger Fehlern beschrieben werden, außerdem könnten durch das System selbst die Gültigkeit der gemachten Angaben sofort überprüft werden und so Fehler vermieden werden, die sonst erst später festgestellt werden könnten. Die vorliegende Erfindung steht unter der Aufgabe, ein solches Entwicklungssystem in Verbindung mit einer bestimmten Hardware verfügbar zu machen. Die Lösung geht im wesentlichen aus den vorangestellten Ansprüchen hervor.
In Übereinstimmung mit der zeichnerisch dargestellten Ausführungsform befreit das hier offenbarte Integrations-Controll-System (ICS) den Entwickler von zu Computern zusammengesetzten Geräten und Einzelheiten sowohl davon, hunderte bis tausende Schritte in dem computereigenen Code zu entwerfen und danach fehlerfrei zu machen und/oder optimieren zu müssen als auch davon, sich mit immer komplizierter werdenden Linker- und/oder Ladesystemen, die Dutzende von speziellen Befehlen in einer speziellen Linker-Befehl-Sprache erfordern, vertraut zu machen.
Die vorliegende Erfindung macht ein Verfahren und ein System verfügbar, womit ein Programm mit einer Sprache von hohem Niveau mit den Hardware-Grenzen eines ausgewählten
Prototyp-Prozessors integriert werden kann. Dies wird durch Zusammenwirken von dem Entwickler automatisch bewerkstelligt, um eine Quellendatei zu erhalten, welche alles an Software, Hardware und Unterbrecher-Konfigurations-Spezifikationen für einen ausgewählten Prototyp-Prozessor umfaßt. Das System enthält auch die Verarbeitung der zuvor erzeugten Quellendatei zur Erzeugung einer Linker-Befehl-Datei und einer Konfigurations-Ziel-Datei.
Die Linker-Befehl-Datei steuert den Verbindungsprozeß des Programms in der hochentwickelten Sprache mit der Konfigurations-Ziel-Datei zur Erzeugung eines vom Prototyp-Prozessor durchführbaren Lademoduls. Wenn es gefordert wird, können während des Verbindens ausgewählte Routinen aus dem Laufzeit-Befehls-Vorrat ("run-time" library) der hochentwickelten Sprache ebenfalls eingeschlossen werden.
Das Zusammenwirken mit dem Entwickler umfaßt das Reagieren des Entwicklers auf notwendige Eingaben in bezug auf die Software und die Prototyp-Prozessor-Hardware sowie auf Unterbrechnungs-("interrupt")Spezifikationen, und dann wird in Erwiderung dieser Eingaben eine Quellendatei erzeugt.
Die zuvor erwähnte Konfigurations-Ziel-Datei umfaßt Unterbrechervektoren, Unterbrecher-Dienst-Routinen, eine Rückstellroutine und eine Programm-Initialisierungs-Routine für den Prototyp-Prozessor.
Weitere Einzelheiten, Merkmale und Vorteile ergeben sich aus der folgenden Beschreibung des in der Zeichnung und den Tabellen wiedergegebenen Ausführungsbeispieles.
In der Zeichnung zeigen:
Fig. 1 ein Flußdiagramm des Integrierungs-Steuersystems gemäß der vorliegenden Erfindung und
Fig. 2 ein vereinfachtes Blockschaltbild eines mit einer Computerkonfiguration verbundenen Terminals, mit dem die vorliegende Erfindung ausgeführt werden kann.
Wenn bei der Erzeugung eines geräteunabhängigen Programms eine hochentwickelte Sprache, wie beispielsweise PASCAL benutzt wird, kann der vom Computer erzeugte Code nicht direkt ausgeführt werden. Die geeigneten Codes im Laufzeit-Befehls-Vorrat müssen mit dem zusammengefaßten ("compiled") Code verbunden ("gelinkt") werden. In Abhängigkeit von den Hardware- und Software-Anforderungen des Prototyp-Prozessor-Systems, muß dieses für das Programm initialisiert werden. Der "Linker" muß eine Anweisung erhalten, wo der erzeugte Code im Speicher des Prototyp-Prozessor-Systems abgespeichert werden soll.
Das Software/Hardware-Integrations-Steuersystem der vorliegenden Erfindung funktioniert im allgemeinen gemäß dem in Fig. 1 dargestellten Flußdiagramm. Ein Block 2 symbolisiert die durch den Entwerfer interaktiv benutzte Spezifikationen der Hardware, der Software und der Unterbrechungskonfigurationen ("interrupt") des Prototyps in Erwiderung auf Anstöße des Prompters oder Editors gemäß Block 4. Diese Spezifikationen werden dann vom Prompter 4 zur Erzeugung der Integrations-Quellen-Datei aus Block 6 verwendet. Die Quellendatei von Block 6 wird vom Prozessor, Block 8, verarbeitet und erzeugt die Linker-Steuer-Datei, Block 12 und die Konfigurations-Ziel-Datei, Block 10.
Die PASCAL-Ziel-Datei gemäß Block 14, die mit dem Prototyp-Prozessor-System zulaufende Software, zusammen mit dem PASCAL-Laufzeit-Unterstützungs-Befehlsvorrat gemäß Block 16, die Konfigurations-Ziel-Datei, Block 10 und der Linker-Steuer-Datei, Block 14 sind mit einem Linker 18 verbunden. Im Linker 18 ist die Konfigurations-Ziel-Datei mit den PASCAL-Ziel-Dateien und dem Laufzeit-Unterstützungs-Befehlsvorrat verbunden. Unter der Steuerung durch die Linker-Steuerungs-Datei erzeugt der Linker 18 eine Lade-Datei, Block 20, welche vom Prototyp-Prozessor-System, das in Erwiderung auf den Prompter 4 spezifiziert wird, ausgeführt werden kann.
Die Konfigurations-Ziel-Datei, Block 10 enthält Unterbrecher-Vektoren, Unterbrecher-Service-Routinen, eine Rückstellroutine und Programm-Initialisierungs-Routine für das spezifizierte Prototyp-Prozessor-System. Die Linker-Steuerungs-Datei, Block 12, die für das besondere Prototyp-Prozessor-System erzeugt wurde, verbindet den PASCAL-Ziel-Code, Block 14, die Konfigurations-Ziel-Datei, Block 10 und den geeigneten Laufzeit-Unterstützungs-Befehlsvorrat miteinander. Die Linker-Steuerungs-Datei, Block 12 ordnet auch den Ziel-Code entsprechend Speicher-Layout des Prototyp-Prozessor-Systems wie er in Erwiderung auf den Prompter 4 spezifiziert wird.
Damit das ICS funktionieren kann, müssen die Grundwerte von verschiedenen Prototyp-Prozessor-Systemen als Arbeitsparameter enthalten sein. Diese Parameter enthalten solche Informationen wie beispielsweise die maximale Speichergröße und Konfigurationen, Unterbrecherverfahren usw. Bei der nachfolgenden Beschreibung werden Beispiele eines ICS-Systems abgehandelt, welche Schnittstellen bei einem PASCAL-Sprachen-Programm mit jedem der folgenden Mikroprozessoren bilden können: 8086, 8086/8087, 8088 und 8088/8087.
Bevor der vom Computer erzeugte PASCAL-Ziel-Code, Block 14, ausgeführt werden kann, muß er durch einen vom ICS erzeugten Konfigurations-Ziel-Code, Block 10, ergänzt werden. Wenn dem Entwerfer die Einzelheiten des Prototyp-Prozessor-Systems bereits bekannt sind, kann er sogar bevor er mit dem Programmieren in PASCAL beginnt, eine ICS-Integrations-Quellen-Datei, Block 6, erzeugen und verarbeiten. Tatsächlich verschafft die ICS-Integrations-Quellen-Datei eine knappe, von Menschen lesbare Beschreibung der Hardware/Software-Schnittstelle und diese kann sogleich als Programmierdokument benutzt werden.
Es ist jedoch wahrscheinlich, daß die Software parallellaufend mit der Hardware entwickelt werden wird und daß Teile des Programms vor der Entwicklung des ganzen Programms getestet werden. Bei den Testversuchen an den Programmteilen im Emulationsmodus können die Standard-ICS-Konfigurations-Ziel-Datei und die Linker-Steuer-Datei benutzt werden. Wenn dem Programm Unterbrecher-Verarbeitungsroutinen hinzugefügt werden und es zu dem Prototyp-Prozessor-System zugeführt wird, erzeugt sich eine ICS-Integrations-Quellen-Datei, Block 6 und/oder sie wird so abgeändert, daß sie auf die wechselnde Umgebung des Programms paßt.
Wenn das ICS-System eingeleitet ist, fragt der Prompter 4 beim Benutzer die Information über die Konfiguration des Prototyp-Prozessor-Systems ab. In der folgenden Tabelle 1 ist eine typische Zusammenstellung von Promptern, Benutzerantworten und einem Kommentarfeld dargestellt, die eine typische Integrations-Quellen-Datei gemäß Block 6 bildet.
Tabelle 1
Der ICS-Prompter gemäß Block 4 ist ein interaktives Programm, das die Integrations-Quellen-Datei erzeugt. Der Prompter 4 fragt die Information über das Prototyp-Prozessor-System, Ziel-Dateien und Unterbrecher-Konfiguration ab und baut die Datei gemäß den Antworten auf.
Wenn das ICS-System angesprochen wird, schaltet sich der Prozessor 4 von selbst ein und läßt auf dem Display ein Menu von Möglichkeiten zur Auswahl erscheinen. Im "Frage-Modus" beginnt der Prompter 4 mit der Fragestellung und dem Aufbau der Integrations-Quellen-Datei. Unmittelbar nachdem die ICS angesprochen worden ist, erzeugt der Prozessor 4 zuerst eine Fehler-Integrations-Quellen-Datei wie sie in der nachstehenden Tabelle 3 dargestellt ist und modifiziert sie danach gemäß den Spezifikationen des Entwerfers.
Wie zuvor beschrieben wurde, dient die Integrations-Quellen-Datei auf den Prozessor 8 zur Erzeugung der Linker-Befehls-Datei, Block 12, und der Konfigurations-Ziel-Datei, Block 10. Die Tabelle 2 ist eine typische Linker-Befehls-Datei, wie sie von der Integrations-Quellen-Datei aus Tabelle 1
erzeugt werden würde.
Tabelle 2
Tabelle 3
Wenn der ICS-Prozessor 8 mit dem Lesen der Integrations-Quellen-Datei gemäß Block 8 fertig ist, spricht er den Assembler des residierenden Computers an, damit dieser die Konfiguration gemäß Block 10 erzeugt. Das Auflisten der Integrations-Quellen-Datei gemäß Block 6 wird automatisch beendet, nachdem der Assembler fertig ist.
Wenn der ICS-Prozessor 8 irgendwelche Fehler in der ICS-Integrations-Quellen-Datei findet, erzeugt er keine Linker-Befehls-Datei oder Konfigurations-Datei und die Auflistung zeigt nur die ICS-Anweisungen und die damit verbundenen Fehleranzeigen.
Der ICS-Konfigurations-Code gemäß Block 10 führt die folgenden Aufgaben aus:
- er baut Unterbrecher-Vektoren auf;
- er baut Unterbrecher-Service-Routinen auf;
- er baut eine Rückstell-Routine auf und
- er baut Programm-Initialisierungs-Routinen auf.
Die ICS erzeugt zwei Codetypen zur Durchführung dieser Aufgaben:
- Unterbrecher-Handhabungs-Code - Unterbrecher-Vektoren und die Register-Sicherungs/Wiederinstandsetzungsroutinen, die bei der Unterbrecher-Handhabung verwendet werden können.
- Initialisierungs- und Rückstellcode; ein Code, der die Segmentregister (CS, DS, SS, ES), die Ablageadresse, die Mengenadresse ("heap pointer"), das BP-Register, den 8087 und die Gleitkomma-Status-Wort-Variable. Dieser Code kann auch eine COPYVEKTOR-Routine umfassen, die die Unterbrechervektoren vom ROM ins RAM kopiert und ebenfalls einen RESET-Vektor, der den Rückstellcode (eine SMPS-Anweisung) an der Stelle FFFFO erzeugt.
Der größte Teil des Codes aus einer ICS-Konfigurations-Objekt-Datei kann zur Unterbrechung der Verarbeitung benutzt werden. Es sind insgesamt 256 Unterbrechertypen möglich und jede Type kann eine andere Unterbrechungs-Dienst-Routine haben. Jede Unterbrechungsart kann die Register des 8086 und des 8087 sichern und wieder herstellen. Der tatsächlich von der ICS erzeugte Code hängt von der Wahl jeder Unterbrechungsart in ICS-Integrations-Quellen-Datei ab.
Es werden gleichzeitig zwei Abschnitte (Sektionen) für den Unterbrechungs-Bedienungs-Code erzeugt; wobei ein Abschnitt die Unterbrecher-Vektoren (ICS.VROM) und ein Abschnitt den Ausführungscode (ICS.INSTR) enthält. (Die "RESUME"-Assembler-Anweisung wirkt als Schalter, indem sie erst eine gewisse Menge des Codes in den einen Abschnitt und dann eine gewisse Menge des Codes in den anderen Abschnitt verweist.)
Ein Teil des Codes einer jeden Unterbrechungs-Dienst-Routine ist seiner Bearbeitung gewidmet. Der Assembler-Code zur Bearbeitung einer jeden Unterbrechungsart folgt einem allgemeinen Muster.
Das nachfolgend dargestellte allgemeine Muster stellt einen Teil des ICS-Listings dar. Großbuchstaben-(uppercase)Wörter sind entweder tatsächliche Assembler-Direktiven oder Instruktionen. Gemischtbuchstaben-(lower-case)Wörter sind eine Beschreibung der Funktion des Assembler-Codes und stellen eine oder mehrere Zeilen des Listings dar.
;VEKTOR INTSERVE,m
RESUME ICS.INSTR
VEKTOR$ SET $
Spare einige Register und erhalte Rückfolge
Rufe Unterbrechungs-Service-Programm
Regeneriere Register
IRET
RESUME ICS.VROM
Erzeuge Unterbrechungs-Vektor im Speicher
In der ersten Listing-Zeile, ";VEKTOR" ist die ICS-Direktive, welche die Unterbrecher-Dienst-Routine und die mit ihr gehandhabten Type(n) erklärt. INTSERVE stellt die Routine dar, welche die Unterbrecher-Type-Nummer "m" bedient.
Die SET-Direktive veranlaßt den VEKTOR$ zur Hinweisadresse ("pointer") zu werden. VEKTOR$ verweist zum Beginn des Unterbrechungs-Handhabungs-Code für diese Unterbrecher-Type.
Der "sichere einige Register und Konservierungs-trace-back"-Code erfüllt zwei Funktionen:
er sichert ausgewählte Register und ermöglicht
es den Laufzeit-Fehler-Checking-Routinen die Quelle der Laufzeit-Fehler aufzuspüren.
Der "Aufruf-von-Unterbrecher-Dienst-Routine"-Code ruft die Routine auf, die die Unterbrecher-Type bedient.
Der "Wiederherstellen von Registern"-Code stellt die gesicherten Register wieder her (für eine Liste von ICS-Subroutinen, die zum Sichern oder Retten und Wiederherstellen von Registern verwendet werden, wird auf die folgende Tabelle 4 verwiesen).
Die IRET-Anweisung gibt der unterbrochenen Routine die Steuerung zurück.
Die RESUME ICS.VROM-Direktive veranlaßt, daß irgendwelche Codezeilen, die der Direktive folgen in den ICS.VROM-Abschnitt verwiesen werden.
Danach wird ein ("erzeuge Unterbrecher-Vektor im Speicher") Vektor im Speicher erzeugt, der zum Beginn des Unterbrecher-Handhabungs-Codes verweist. Dies wird mit zwei Assembler-Direktiven erreicht (ein Beispiel wird in der "sample ICS Listing" gegeben). Die erste gibt die Stelle an, wo der Unterbrecher-Vektor hin verwiesen werden soll. Der zweite erzeugt den Wert des Unterbrecher-Vektors an dieser Stelle.
Das Sample-ICS-Listing zeigt später in diesem Abschnitt den besonderen Code, der für jede der Unterbrecher-Arten in einer Sample-ICS-Quellen-Datei erzeugt wird.
In der Tabelle 4 sind die Subroutinen aufgelistet, die im ICS-Objekt-Code enthalten sein können.
Tabelle 4
Unterbrecher-Arten, die mit der INTERRUPTS_TYPES__ USED-Direktive spezifiziert sind, jedoch nicht in einer VECTOR-Direktive erwähnt werden, werden als undefinierte Unterbrecher-Arten bezeichnet. Die FAULT__ NOTIFICATION-Direktive wird zur Spezifizierung der Unterbrecher-Handhabungs-Routine für diese undefinierten Typen benutzt. Die RESTART__ LABEL-Direktive erzeugt Unterbrecher-Vektoren für diese undefinierten Unterbrechungen. Für ein Beispiel wird auf das "Sample-ICS-Listing", das später in diesem Abschnitt gezeigt wird, verwiesen.
Wenn die INTERRUPT_CONFIGURATION RAM ist, müssen die Unterbrecher-Vektoren erzeugt (in CONSTANTS_ROM) und dann auf den Unterbrecher-Vektor-Bereich (ICS.VRAM) in Laufzeit übertragen werden. Die FAULT_NOTIFIKATION-Direktive reserviert die geeigneten Bereiche in ICS.VRAM für die Unterbrecher-Vektoren und stellt den Code für die Übertragung der Vektoren dorthin während der Programm-Initialisierung auf.
Die in ICS.VROM erzeugte Tabelle hat die der in Tabelle 5 gezeigten.
Tabelle 5
Der Programm-Initialisierungs-Code wird durch die RESTART_LABEL-Direktive erzeugt, die an der Stelle PASCAL_BEGIN anfängt. Der Initialisierungs-Code wird bei Laufzeit durchgeführt und erfüllt die folgenden Aufgaben:
- setzt die DS, SS und ES-Register an die Basis des Datasegmentes (DATABASEQQ);
- setzt den "stack pointer value" auf STKBASEQQ minus;
- initialisiert die "heap pointers" bei HEAPBASEQQ;
- ruft, wenn nötig, COPYVECTORS zum Kopieren der Unterbrecher-Vektoren von ICS.VROM in ICS.VRAM auf;
- initialisiert, wenn nötig, den 8087 durch Ausführung eines FINIT und initialisiert das Kontrollwort;
- klärt das globale variable fließende "point status" Wort;
- klärt das BP-Register so, daß die·traceback-Routine weiß, daß dies das Hauptprogramm ist und
- springt auf den Hauptprogramm-Anfangspunkt MAINQQ.
Der Rückstell-Code ist eine JMPS-Anweisung an der Stelle FFFFOH, die zum Initialisierungs-Code verweist. Wenn der Mikroprozessor zurückgestellt ist veranlaßt diese JMPS-Anweisung, daß der Initialisierungs-Code durchgeführt wird.
Die RESTART__LABEL-Anweisung enthält auch den Code für alle mit der Unterbrechung in Beziehung stehende Subroutinen, die benötigt werden (aufgelistet in Tabelle 4).
Wenn der vom ICS erzeugte Konfigurations-Objekt-Code nicht auf die Prototyp-Prozessor-System-Anwendung paßt, kann der von ICS erzeugte Code abgewandelt werden.
Wenn das ICS angesprochen ist, wenn die -l (Listing) oder -o (Objekt-Code)-Wahl spezifiziert ist und die ICS-Integrations-Quellen-Datei keine Fehler enthält, dann erzeugt das ICS eine temporäre Zusammensetzungs-Sprachen-Quellen-Datei von den ICS-Anweisungen. Wenn die o-Wahl enthalten ist, spricht das ICS den 8086 Assembler an zur Erzeugung des Dateinamens (filename.io) und des Assembler-Listings (filename.il). Der von ICS verwendete Assembler-Aufruf sieht etwa folgendermaßen aus:
Was in den Assembler einzugeben ist, besteht aus zwei Dateien, welche so verarbeitet werden, als ob sie in einer einzigen Datei verkettet wären. Die erste Datei /lib/8086/ics.mc besteht hauptsächlich aus Assembler-Makro-Definitionen, die von der zweiten Datei benutzt werden. Die zweite Datei ist die temporäre Assembler-Sprachen-Quellen-Datei, die von ICS gerade erzeugt worden ist. Wenn der Assembler aufhört, wird die temporäre Datei automatisch gelöscht.
Wenn die -o-Wahl weggelassen wird, wird die temporäre Assembler-Sprachen-Quellen-Datei als Listing-Datei (filename.il) gesichert. Wenn der Programmierer den von ICS erzeugten Code abändern möchte, kann er diese Quellendatei editieren oder eine modifizierte Version der ICS-Makro-Datei erzeugen. Jedoch kann eine Abänderung des vom ICS erzeugten Codes dazu führen, daß das Programm gelinkt, geladen oder nicht korrekt ausgeführt wird.
Wenn beispielsweise angenommen wird, daß der Programmierer den Code ändern möchte, der die 8086-Register sichert, rettet oder wiederherstellt, dann kann er diesen Code in ics.mc, in Makros SAV-86-INLINE$, RES-86-INLINE$ und SAVE-RESTORE-86$ finden. Er erzeugt seine eigene Kopie von ics.mc und ändert diese drei Makros:
cp/lib/8086/ics.mc mymacros ["Mache eine Kopie der ICS-Makros"]
ed mymacros ["Ändere seine Kopie"]
Jedes Mal, wenn er ICS aufruft, kann er die Assembly-Sprachen-Quellen-Datei erzeugen, jedoch die Zusammensetzungsstufe weglassen:
ics -l myprog. is ["Erzeuge Assembly-Sprachen-Quellen-Datei in myprog.il."]
Dann setzt er die Quellendatei, die seine eigenen Makros benutzt, zusammen:
asm myprog.io myprog.list ["Erzeuge die Objekt-Datei myprog.io und Listing-Datei myprog.list"]
mymacros myprog.il
Diese Zusammensetzungsbefehlszeile verkettet wirksam seine Makro-Definitionen (mymacros) mit dem vom ICS produzierten myprog.il und setzt dann diese Datei zusammen.
In Tabelle 6 sind die Assembler-Sprachen-Makros in der ics.ms-Datei und ihre Funktionen aufgelistet.
Tabelle 6
Die vom ICS aus einer hypothetischen Integrations-Quellen-Datei erzeugte ICS-Listing-Datei wird nun dargestellt. Durch Studium der ICS-Listing-Daten kann der ICS-Konfigurations-Objekt-Code, der mit dem durchführbaren Ladungsmodul, der auf dem Prototyp-Prozessor-System verbunden wird, verstanden werden.
ICS erzeugt eine Zwischendatei aus der ICS-Integrations-Quellen-Datei. Diese Datei wird zusammengesetzt und erzeugt die ICS-Konfigurations-Ziel-Datei und die dabei entstehende Auflistung heißt "ICS-Listing-Datei".
Die Tabelle 8 zeigt die Unterbrechungsart, den Namen der Unterbrechungs-Dienst-Routine für diese Art, den ICS-Code, der die Register nach einer Unterbrechung sichert und speichert und die Zeilen-Nummern des Codes in der ICS-Auflistung.
Um eine ausführbare, ladbare Datei erzeugen zu können, ist der Linker jeweils mitbeteiligt, von dem lediglich der Linker-Datei-Befehl spezifiziert wird, der durch das ICS-System geschaffen wurde und der die zu kreierende Datei lädt.
Die Tabelle 9 ist eine beispielhafte Auflistung der Prompter-Routine gemäß Block 4 und die Tabelle 10 ist eine beispielhafte Auflistung der Prozessor-Routine gemäß Block 8.
Tabelle 8
Tabelle 9
ICSP_MENU
1) Gebe 'question mode' ein
2) Gebe 'edit mode' ein
3) Display der Datei
4) Prüfe die Datei auf Fehler
5) Sichere die laufende Kopie der Datei
6) Quittiere
7) Zeige eine Einführung in 'edit mode' an
8) Zeige eine Einführung in ICSP an
Behalte: Man kann "?" eingeben, um mehr info zu erhalten oder "!", um zum menu zurückzukehren.
1) Eingabe 'question mode'
Bei 'question mode' fragt ICSP Fragen und modifiziert die Datei entsprechend den Antworten. Um aus 'question mode' herauszukommen, gebe "!" ein.
2) Gebe 'edit mode' ein
In 'edit mode' läßt sich die Datei abtasten, und es lassen sich Zeilen des Textes addieren, weglassen oder substituieren. Für eine Beschreibung von 'edit mode' wähle Punkt 7 dieses menu.
3) Zeige die Datei an
ICSP hält eine Kopie der Datei im Speicher und modifiziert diese Kopie entsprechend den Instruktionen. Diese Möglichkeit zeigt die Kopie der Datei an, die im Speicher ist, nicht aber die sich auf dem Datenträger befindliche Datei.
4) Prüfe die Datei auf Fehler
ICSP enthält ICS, um die Träger-Datei auf Fehler zu prüfen. Enthält die Träger-Datei nicht die letzten Änderungen, so wird sie auf den neuesten Stand gebracht, bevor ICS beginnt.
5) Sichere die laufende Kopie der Datei
Die sich im Speicher befindliche Kopie der Datei wird aus dem Träger ausgeschrieben.
6) Quittiere
ICSP wird beendet. Enthält die Träger-Datei nicht die letzten Änderungen, so wird die Möglichkeit gegeben, die Träger-Datei auf den neuesten Stand zu bringen.
7) Zeige eine Einführung in 'edit mode' an
Diese Einführung enthält eine Auflistung der 'edit mode'-Befehle.
8) Zeige eine Einführung in ICSP an
Dies ist die gleiche 4-teilige Einführung, welche zuvor zu sehen war.
Was soll mit der Information geschehen?
1) Belasse sie ungeändert.
2) Addiere weitere Zeilen.
3) Entferne diese Information und erhalte neue Informationen für diese Anweisung.
mulit_line_info
Sollen nur einige der Informationen geändert werden, versuche 'edit mode'.
(Schreibe ! , um in das 'main-menu' zu gelangen.)
keine Fehler
Glückwunsch - keine Fehler! Nun zurück zum ICSP-menu...
falls einige Fehler
Willkommen zurück bei ICSP. Es sieht so aus, als ob ICS einige Fehler in der gerade erzeugten Datei gefunden hat.
Falls Sie verstehen, was mit der Datei nicht in Ordnung ist, können Sie versuchen, mittels 'edit mode' die fehlerhaften Zeilen zu ermitteln. Sind aber Fehler vorhanden, die nicht verständlich sind, prüfe den Prototyp-Abschnitt des Handbuches. Auch läßt sich 'question mode' einsetzen, um mehr Information über die Problem-Bereiche in der Datei zu erhalten.
EINFÜHRUNG IN ICSP
ICSP erzeugt oder modifiziert eine ICS-Quell-Datei entsprechend den Anweisungen. Aus dieser Quell-Datei kann ICS erzeugen:
° eine Objekt-Datei, welche einen Code zum initiieren des Pascal-Programms und Unterbrechungs-Vektoren enthält; und
° eine Linker-Befehls-Datei, welche dem Linker mitteilt, wie die Objekt-Dateien kombiniert werden mittels Pascal, ICS und dem 8086/8088-Assembler.
FÜR ICSP ERFORDERLICHE INFORMATIONEN
Die ICS-Quell-Datei stellt die folgenden Arten von Informationen über das Programm bereit:
° HARDWARE-CONFIGURATION - welche Art von Chips benutzt werden; welche Bereiche des Speichers als RAM dienen und welche als ROM; ob das Programm Service-Rufe benutzt.
° SOFTWARE-KONFIGURATION - die Namen der Objekt-Dateien, welche das Programm bilden.
° UNTERBRECHUNGS-KONFIGURATION - welche Unterbrechungsarten (falls überhaupt) das Programm behandeln muß; die Namen der Unterbrechungs-Service-Programme; wie diese Programme eingeleitet werden.
Um ICSP wirksam einzusetzen, sollten diese Informationen verfügbar sein.
Beispiel einer ICS-Quell-Datei
PASCAL_KONFIGURATION:
WIE ICSP ARBEITET
ICSP hat zwei Betriebsarten: 'question mode' und 'edit mode'.
Bei question mode fragt ICSP Fragen und benutzt die Antworten, um eine ICS-Quell-Datei zu erzeugen. Bei erstmaliger Benutzung von ICSP sollte question mode eingesetzt werden. Es hilft beim Erlernen der Bedeutung jedes ICS-Befehls und seiner Parameter.
Bei edit mode kann die ICS-Quell-Datei abgetastet werden und in einfacher Weise verändert werden. Eine detaillierte Beschreibung von edit mode erfolgt später.
In jedem Betriebszustand zeigt ICSP die alten Parameter eines Befehls an, bevor dieser modifiziert wird und zeigt die neuen Parameter danach an.
? UND !
In beiden Betriebsarten wartet ICSP auf den Benutzer, um etwas zu schreiben. Man kann ein "?" oder ein "!" eingeben. "?" zeigt ICSP, daß es mehr Informationen darüber bereitstellen soll, was es als Eingabe erwartet. "!" erzeugt eine Zusammenstellung von Anforderungen, welche ICSP ausführen kann.
FEHLERSUCHE
Bei question mode versucht ICSP, genug Informationen zu geben, um sicherzustellen, daß die erzeugte Datei die richtige Syntax aufweist und logisch konsistent ist. Um sicherzustellen, daß die Datei tatsächlich richtig ist, kann aus dem main-menu eine "Prüf-Datei für Fehler" ausgewählt werden. ICSP veranlaßt ICS, die Datei abzutasten; ICS berichtet jeglichen Fehler und zeichnet diesen in der Datei auf.
ALTERNATIVEN ZU ICSP
ICSP ist vorgesehen, um die Erzeugung und Veränderung der ICS-Quell-Datei zu vereinfachen. Ist der Benutzer jedoch mit der ICS-Sprache vertraut, so mag er es genauso einfach finden, einen üblichen Text-Editor zu benutzen, um die ICS-Datei auszugeben.
SYNTAX-ERWÄGUNGEN
Jegliche hexadezimale Zahl, welche eingegeben wird, muß mit einer Dezimal-Ziffer beginnen und mit einem "H" enden. (z.B. OFFFFH, nicht FFFF)
Jeder Bereich von Zahlen weist die Form (kleine Zahl, große Zahl) auf, z.B. bedeutet (25,30) den Bereich von 25 bis 30 (dezimal) und (OH,OFFH) bedeutet 0 bis FF (hexadezimal).
EDIT MODE
Edit mode hat zwei Verwendungen:
1) Ist eine Datei erzeugt (z.B. mittels question mode), kann edit mode benutzt werden, um die Datei abzutasten und Korrekturen anzubringen.
2) Ist der Benutzer einmal mit der ICS-Sprache vertraut, so kann edit mode benutzt werden, um neue Dateien aus dem ICS-Netzwerk zu erzeugen.
In edit mode bringt ICSP eine Zeile aus der ICS-Quell-Datei zur Anzeige. Durch Drücken der RETURN-Taste kann die Zeile bestätigt werden und zur nächsten Zeile übergegangen werden oder es kann ein neues Parameter-Feld eingegeben werden, um das Gezeigte zu ersetzen.
Es folgt eine Zusammenfassung der Möglichkeiten von edit mode:
Befehl Funktion
! verlasse edit mode und kehre zu main menu zurück
? zeige diese Liste von edit-mode-Befehlen
[return] gehe zur nächsten Zeile
[text] ersetze den Text im Parameter-Feld
-- gehe zum Anfang der Datei
++ gehe zum Ende der Datei
-n gehe n Zeilen zurück in der Datei
+n gehe n Zeilen vorwärts in der Datei
AC addiere einen Befehl hinter die laufende Zeile
IC füge einen Befehl vor die laufende Zeile ein
D streiche die laufende Zeile
Für Weisungen, die mehr als einmal auftreten:
A addiere eine Weisung hinter die laufende Zeile
I schiebe eine Weisung vor die laufende Zeile ein
pas_con
Gebe bitte einen Titel für die ICS-Quell-Datei ein.
pas_con_info
Dieser Titel kann so lang sein wie gewünscht und kann mehr als ein Symbol enthalten, nur keine doppelten Anführungszeichen.
hw_con
Welche der folgenden Ausdrücke beschreibt den benutzten Prozessor am besten?
1) 8086
2) 8088
3) 8086 mit 8087
4) 8088 mit 8087
Erläuterung des Speichers
Das Programm enthält "absolute" Codes und "verschiebbare" Codes. Absolute Codes müssen an bestimmten Positionen im Speicher plaziert werden (beispielsweise müssen Unterbrechungs-Vektoren an Orten 0-3FF positioniert werden).
Der durch den Pascal-Compiler erzeugte Code ist verschiebbar. Das ICS kann den Linker anweisen, den verschiebbaren Code an einer beliebigen Stelle des Speichers anzuordnen.
Die folgenden Code-Arten können im ROM gespeichert werden:
INSTRUKTIONS-ROM - ausführbarer Code
KONSTANTEN-ROM - andere Codes, die bei der Programmausführung nicht geändert werden - beispielsweise Buchstabenreihen und numerische Konstanten.
Die folgenden Code-Arten müssen im RAM gespeichert werden:
GLOBAL-VAR-RAM - Variable aus dem äußeren Level des Programms.
HEAP-STACK-RAM - der durch den Stapelspeicher und das Heap eingenommene Bereich. Der Stapelspeicher beginnt am oberen Endabschnitt dieses Bereiches und wächst nach unten, während das Heap am unteren Ende beginnt und aufwärts wächst. Der Stapelspeicher enthält Parameter, Rückführadressen und örtliche Variable der Programme. Das Heap enthält linkergelistete Variable, die mit dem Standard-Verfahren NEW gewonnen sind.
Bezüglich näherer Informationen über diese vier ICS-Anweisungen einschließlich einer Erläuterung der Programmierung von Assembler-Sprachen, siehe das Handbuch des Compilers.
Menu-Speicher
Der Benutzer kann:
1) die Zuordnungen bestätigen
2) das INSTRUKTIONS-ROM ändern
3) das KONSTANTEN-ROM ändern
4) das GLOBAL-VAR-RAM ändern
5) das HEAP-STACK-RAM ändern
6) die ICS-Erläuterungen dieser Ausdrücke anzeigen
Speicher-Prompt-1
Gebe einen oder mehrere Bereiche von hex-Adressen ein (es kann mehr als eine Zeile benutzt werden).
Speicher-Prompt-2
Gebe einen oder mehrere Bereiche von hex-Adressen ein.
Jeglicher weiterer Speicher
Existiert eine andere Zeile von Adressen-Bereichen für diese Anweisung?
Bereichs-Syntax
Jede hexadezimale Zahl muß mit einer dezimalen Ziffer beginnen und mit einem "H" enden.
Reset-Speicher
Wie behandelt der Prototyp ein RESET?
1) Der Speicher enthält an Orten FFFFO-FFFFF die erste Instruktion, welche nach dem RESET ausgeführt werden soll.
2) Besondere Hardware bewirkt die erste auszuführende Instruktion. (Typ "2" des Programms behandelt den RESET nicht.)
svc-info
Ein Service-Ruf ist die Anforderung seitens des Programmes für einen Service des MDL-Betriebssystems (OS/40 oder DOS/50). Pascal I/O-Feststellungen (z.B. READ, READLN, WRITE, WRITELN) werden in Service-Rufe umgesetzt. Wenn alle I/O des Programms durch den Prototyp behandelt werden, kann man wahrscheinlich mit "N" antworten; anderenfalls lautet die Antwort "Y".
Vektor-Kanal-Info
Ein Service-Ruf (SVC) beginnt, wenn das Programm eine OUT-Instruktion an einem der ausgewählten Bereiche von 8 I/O-Kanälen ausführt. Die Kanal-Zahl richtet das Betriebssystem (DOS/50 oder OS/40) auf einen "SRB-Zeiger", welcher auf den SRB (Service-Request-Block) weist, der den auszuführenden Service beschreibt.
Die Anordnung von 8 SRB-Zeigern wird ein "SRB-Vektor" genannt. Der SRB-Vektor besetzt in der Regel die Bytes 40-5F des Speichers. Erfordert das Programm die Verwendung dieser Bereiche des Speichers für andere Zwecke (wie beispielsweise Unterbrechungs-Vektoren), kann auch eine andere Anordnung für den SRB-Vektor vorgesehen sein. Benutzt das Programm I/O-Kanäle im Default-SVC-Kanalbereich (FFF0-FFF7), so kann für die SVC ein anderer Kanal-Bereich benutzt werden.
Die SVC sind im einzelnen in den 8540 und 8550-Handbüchern beschrieben.
svc-menu
Es ist möglich:
1) die Einstellungen zu bestätigen
2) die Anordnungen des SRB-Vektors zu ändern
3) den SVC-Kanal-Bereich zu ändern
4) die ICSP-Erläuterungen dieser Ausdrücke auf dem display zu zeigen.
sv-con-info
Dies ist die Objekt-Datei, die beim Übersetzen des Hauptprogrammes erzeugt wird (diejenige mit dem PROGRAM-Statement). Es läßt sich auch eine Objekt-Datei bestimmen, die durch den Assembler erzeugt ist, oder es kann auch "NONE" eingegeben werden.
Andere Moduls
Sind irgendwelche anderen Objekt-Dateien mit dem Programm zu verknüpfen?
Modul-info
Solche Datei könnte insbesondere sein:
° die Objekt-Datei, welche dann erzeugt wird, wenn ein Pascal-Modul übersetzt wird, welche mit einem MODULE beginnt; oder
° eine Objekt-Datei, welche durch den Assembler erzeugt ist.
module-prompt
Gebe den pathname der zu verknüpfenden Objekt-Datei ein (Beispiel: /usr/john/controller/meltdown.po)
Bibliotheken
Benutzt das Programm irgendwelche Unterprogramme aus Bibliotheken außer der üblichen Pascal-Laufzeit-Hilfs-Bibliothek?
ANMERKUNG
Hat der Benutzer seine I/O-Bibliothek erzeugt (um pas.posi.scsd zu ersetzen), so soll diese Bibliothek hier nicht eingeschlossen werden. Diese Bibliothek soll später mit der FILE SUPPORT-Anweisung erläutert werden.
Bibliothek-info
Der Bibliotheks-Generator (libgen) kann benutzt werden, um Bibliotheken mit eigenen Pascal- oder Assembler Sprachen-Routinen zu erzeugen. Wurde libgen nicht benutzt, sollte mit "N" geantwortet werden.
Bibliotheks-prompt
Gebe den "pathname" der durch das Programm benutzten Bibliothek ein (Beispiel: /usr/john/controller/lib)
weitere Bibliotheken
Benutzt das Programm Routinen aus anderen Bibliotheken?
file-sup
Benutzt das Programm eines der folgenden Verfahren oder Funktionen:
READ, READLN, WRITE, WRITELN, REWRITE, RESET, GET, PUT, PURGE, ASSIGN, PAGE?
file-lib
Soll das Programm die Standard-Bibliothek der Pascal I/O-Programme benutzen?
gebe lib-info ein
Falls "Y" eingegeben, wird das I/O-Programm aus pas.posi.scsd entnommen.
Wird "N" eingegeben, muß ein Bibliotheks-Programm eingegeben werden, um pas.posi.scsd zu ersetzen.
get-file-lib
Gebe den pathname der Bibliothek der I/O-Programme ein (Beispiel: /usr/john/controller/io.lib)
get-io-lib
Gebe den pathname der I/O-Bibliothek ein.
(Beispiel: /usr/john/controller/iolib)
ram-or-rom
Welche der folgenden Sätze beschreibt die in die Positionen 0-3FF eingespeicherten Unterbrechungs-Vektoren am besten?
1) die Plätze 0-3FF sind im ROM.
2) die Plätze 0-3FF sind im RAM. Die Unterbrechungs-Vektoren werden während der Programm-Initialisierung in die Plätze 0-3FF einkopiert.
intrpt-types-intro
Liste die Unterbrechungsarten (0-255) auf, welche das Programm zu verarbeiten hat. (Es kann mehr als eine Zeile benutzt werden.)
intrpt-types-prompt
Gebe eine oder mehr Dezimalzahlen oder Bereiche von Dezimalzahlen ein. Beispiel: 0,2,4,[16,31],33,[128,143]
intrpt-types-info
Das Programm braucht nicht notwendigerweise eine Unterbrechungs-Service-Routine für jede dieser Arten. Unter Benutzung der FAULT-NOTIFICATION-Anweisung kann ICS benutzt werden, um eine Routine zum Verarbeiten unerwarteter Typen zu erzeugen, oder es kann eine eigene Default-Routine gebildet werden. Ein 4-byte-Unterbrechungs-Vektor wird für jede Unterbrechungsart der Liste erzeugt.
Andere Arten (von Unterbrechungen)
Soll eine andere Zeile von Unterbrechungsarten eingegeben werden?
save-float-intro
Für jede der Unterbrechungsarten (0-255) kann ICS automatisch die Fließ-Register des Programms sichern, bevor der Unterbrechungs-Service aufgerufen wird und die Register erneuern, nachdem die Routine durchgeführt ist.
Wieviele der durch das Programm verarbeiteten Unterbrechungsarten erfordern ICS, um die Fließ-Register zu sichern und zu regenerieren?
1) keine
2) weniger als die Hälfte
3) die Hälfte oder mehr
4) alle
save-float-info
Falls Fließ-Register gesichert werden sollen, wird die interne Pascal-Variable FPSWGG im Stapelregister gesichert, bevor der Unterbrechungs-Service aufgerufen wird. Falls ein 8087 zur Verfügung steht, wird das Programm auch FNSAVE-Befehle ausführen, bevor der Ruf erfolgt und einen FRSTOR-Befehl danach.
Im allgemeinen wird nur ein einziges Fließ-Sicherungs-Register benötigt, wenn die Unterbrechungs-Service-Routine Fließ-Operationen verwendet.
except-prompt
Gebe eine oder mehrere Dezimalzahlen oder Bereiche von Dezimalzahlen ein.
Beispiel: 0,2,4,[16,31],33,[128,143]
weitere Ausnahmen
Soll eine weitere Zeile von Ausnahmen zugefügt werden?
fault-not-menu
Was soll geschehen, wenn eine Unterbrechung erfolgt, aber keine Service-Routine für diese Art von Unterbrechungen vorgesehen ist?
1) Stop des Programms mit einer HLT-Instruktion.
2) Ausgabe einer Fehler-Botschaft und Stop des Programms.
3) Ausführung einer Routine, die geschrieben ist.
fault-not-info
Diese Frage bezieht sich auf jegliche Unterbrechung, welche in der INTERRUPT-TYPE-USED auftauchende Passage-Direktive aufgelistet, aber nicht einer Unterbrechungs-Service-Routine in einer VEKTOR-Direktive zugeordnet ist.
get-default-name
Was ist der Name der Routine zur Verarbeitung von unerwarteten Unterbrechungsarten?
default-name-info
Dieser Name kann der Name eines Pascal-Verfahrens oder eines allgemeinen Symbols sein, das den Eingang einer Assembler-Sprache-Routine markiert.
own-code-menu
Erfolgt eine solche Unterbrechung, so soll das Programm:
1) sich direkt an die Routine wenden, welche die Rückkehr von der Unterbrechung verarbeitet, oder
2) die Register sichern, die Routine aufsuchen, die Register zurückstellen und von der Unterbrechung rückkehren?
in-line-menu
Soll die Register-Sicherung und die Rückstellung der Routines folgendermaßen beschaffen sein:
1) einschließlich in-line (spart etwa 55 Zyklen pro Routine), oder
2) als Subroutine aufgerufen werden (spart etwa 6 Bytes pro Routine)
vector-intro
Nun wird nach der Liste der Namen der Unterbrechungs-Service-Routine des Programms gefragt. Jeder Name kann der Name einer Pascal-Prozedur sein oder auch ein allgemeines Symbol, das den Eingang einer Assembler-Sprache-Routine markiert. Für jede Routine werden die Unterbrechungsarten aufgelistet, welche die Routine verarbeitet.
Sind irgendwelche Unterbrechungs-Service-Routines aufzulisten?
restart-label
Existieren Assembler-Sprach-Routines, welche ausgeführt sein müssen, bevor das Pascal-Programm beginnt?
restart-info
Die Stapel-Register heap und Segment-Register werden automatisch durch ICS-Routines initialisiert, bevor das Pascal-Programm beginnt. Diese Routines beginnen am Anfangspunkt PASCAL_BEGIN. Existiert eine Initialisierungs-Routine, welche dem Beginn des Pascal-Programms vorangehen muß, antworte mit "Y". Diese Routine muß mit einem Sprung auf PASCAL_BEGIN enden.
get-restart-label
Gebe den Namen (Eingangspunkt) der Routine ein, die beim Wiederanlaufen ausgeführt werden muß. Dieser Name muß ein allgemeines Symbol sein, er wird benutzt als die Übertragungsadresse des Programms.
Ende des Textes.
Tabelle 10
In Figur 2 ist ein Computer-Terminal 40 in Verbindung mit einem Zentralcomputer 30 dargestellt. Das Terminal 40 umfaßt eine Sichtanzeige 42, etwa einen Bildschirm oder ein Display, eine Eingabetastatur 43, einen Prozessor 41, einen Speicher 44 sowie einen Zeitgeber und eine Steuerung 45. Zusätzlich ist das Terminal 40 mit einer Ein/-Aus-Schnittstelle 46 versehen, um eine Zweiwegverbindung zu einem Zentralcomputer 30 zu ermöglichen.
Der eigentliche Computer 30 hat eine zentrale Prozeß-Einheit (CPU) 32, der unter einen Taktgeber und Steuereinheit 36 arbeitet. Ferner ist die CPU 32 neben einem üblichen Arbeitsspeicher oder Speichermedium (nicht dargestellt) mit einem besonderen Speicher 34 verbunden, der zu den anderen Speichern in Verbindung stehen kann. Eine Ein-/Ausgabe-Schnittstelle (I/O) 38 ermöglicht eine Verbindung mit der Peripherie und mit dem Terminal 40, sowie mit einem Drucker oder Plotter 39. Ferner ist eine Anschlußmöglichkeit mit einem Programmierer 37 vorgesehen.
Für den Betrieb gemäß der Erfindung sind die Prompter- und Prozessor-Routinen gemäß den Tabellen 9 und 10 in dem besonderen Speicher 34 enthalten. Dadurch kann eine Bedienungsperson über die Tastatur 43 des Terminals 40 das ICS-System initialisieren, wodurch die Prompter-Routine von der CPU 32 aus dem besonderen Speicher 34 abgerufen wird. Die einzelnen Prompts werden dann zum Datensichtgerät oder Bildschirm 42 des Terminals 40 über die Schnittstellen (I/O) 38 und 40 übertragen. Die Bedienungsperson gibt seine Antworten mittels Tastatur 43 ein und diese werden wieder zur CPU 32 zurückübertragen. Aus den Eingaben als Ergänzungen entsteht so in der CPU 32 die Integrations-Quell-Datei gemäß Block 6 in Figur 1.
Als nächstes wird die Prozessor-Routine von der CPU 32 aufgerufen, um die Integrations-Quelle in diejenige Linker-Steuerdatei automatisch umzuwandeln, wie oben ausführlich diskutiert wurde, worauf, ebenfalls automatisch wie zuvor beschrieben, die Konfigurations-Objekt-Datei oder ein neues Betriebssystem für einen Computer oder eine neue kompakt geschriebene Arbeitsdatei entsteht.
Sobald diese Schritte weitgehend selbsttätig vollzogen sind, kann das entstandene Programm dadurch maschinenunabhängig gemacht werden, daß, falls ein anderer Prototyp eines Prozessors hiermit geladen werden soll, der von dem in der hier beschriebenen Maschine abweicht, dessen Parameter (Taktfrequenz mit Standard-Befehlssatz) in den Computer 30 geladen werden, worauf ein Compiler in den Computer 30 eingegeben werden oder entsprechend der gewünschten Sprache bereits in diesem enthalten sein kann, so daß entweder eine maschinenunabhängige oder an eine bestimmte Sprache geknüpfte Quelldatei entsteht. Im obigen Beispiel wurde alles mit einer sehr hochentwickelten Computersprache, PASCAL,
verknüpft.
Mit den vier oben näher beschriebenen Dateien (files), der Linker-Routine des residierenden Computers 30, unter der Steuerung der Linker-Befehlsdatei (linker command file) in Verbindung mit der Konfigurations-Objektdatei (configuration object file), der Pascal-Objekt-Datei und als notwendig herausgefundenen Routinen des Pascal-Laufzeit-Befehlsvorrates entsteht ein sofort exekutierbares LOAD-Modul gemäß Figur 1, Block 20, und zwar in kürzester Zeit, frei von Fehlern und nahezu vollständig automatisch. Das exekutierbare LOAD-Modul umfaßt - in Maschinensprache - die Informationen und Zuweisungen in die ROMs des Prototyp-Prozessor-Systems für dieses System um als Programm zu arbeiten einschließlich in den Pascal-Objekt-Dateien, soweit diese mit entstanden sind.
Mit den geeigneten Peripherien können die Module sowohl der Programmierstufe 37 zugeführt werden, um in ein PROM geladen zu werden oder es können die Inhalte über die Drucker oder Plotter 39 angegeben werden.
Soweit die vorliegende Offenbarung Einzelheiten enthält, die durch einen Schutz aus dieser Anmeldung nicht direkt abgedeckt sind, behält sich die Anmelderin mit dem Tage der Anmeldung in der Bundesrepublik Deutschland bzw. mit dem Tage der Offenlegung der vollständigen Anmeldungsunterlagen für das Rechtsgebiet der Bundesrepublik alle Rechte der gewerblichen Nutzung der hierin offenbarten Programme selbst vor. Ohne Genehmigung der Anmelderin dürfen die Programme nicht in irgendeiner Form vervielfältigt, verbreitet oder auf Computern, Datenverarbeitungsanlagen oder in Entwicklungssystemen genutzt werden.
Claims (13)
1. Digitalrechner, in denen sich der Funktionsablauf entsprechend Daten oder Dateien, die von der Maschine selbst während des Ablaufs gewonnen werden, ändert oder sich der Funktionsablauf anpaßt, einschließlich einer Fehlererkennung oder Fehlerüberwachung mit einer aus einem Zentral-Prozessor und Peripherie zusammengesetzten Einheit, zu der zumindest eine Eingabe-, eine Anzeige- und eine Ausgabeeinheit gehören,
dadurch gekennzeichnet,
daß von einem Bedienungsfeld (43) aus in den Zentral-Prozessor (8, CPU, 32) aus einem besonderen Speicher (34) durch eine Integrations-Quelldatei (6) ladbar ist, worauf eine Verbindersteuerdatei (12) und eine Konfiguration-Objektdatei (10) zusammen mit anderen Quellen (14,16) über einen Verbinder (18) ein Modul (20) erzeugbar ist, das einer Programmsicherungsstufe (37) zuführbar ist.
2. Verfahren zum Integrieren einer hochentwickelten Programmiersprache mit der Hardware-Begrenzung eines Rechners gemäß Anspruch 1 mit einem ausgewählten Prototyp-Prozessor,
gekennzeichnet durch
folgende Schritte:
a) interaktives Präparieren einer eine Quelldatei enthaltenen Inhalts eines besonderen Speichers (34), zu einem zum Betrieb eines Prozessors (CPU, 32) erforderlichen Systems einschließlich aller Unterbrecher- und sonstigen Spezifizierungen in Erwiderung auf über eine Anzeige (42) abgefragten und über die Eingabeeinheit (43) erfolgten Eingaben,
b) Verarbeiten der Quellendatei aus Stufe a) zum Erzeugen der Linker-Befehl-Datei und einer Konfigurations-Ziel-Datei.
3. Verfahren gemäß Anspruch 2,
dadurch gekennzeichnet,
daß es den folgenden zusätzlichen Schritt umfaßt:
c) Verbinden der hochentwickelten Programmiersprache mit der Konfigurations-Ziel-Datei unter Steuerung der Linker-Befehls-Datei zur Erzeugung eines vom Prototyp-Prozessor durchführbaren Ladungsmoduls.
4. Verfahren gemäß Anspruch 1,
dadurch gekennzeichnet,
daß der Schritt a) folgende Stufen einschließt:
a1) Anzeigen der erforderlichen Schritte des Programmierens zur Eingabe von Software und Steuerung der Prototyp-Prozessor-Hardware sowie der Unterbrechungs-Spezifikationen; und
a2) Erzeugen einer Quellendatei, die diese Spezifikationen enthält.
5. Verfahren gemäß Anspruch 2,
dadurch gekennzeichnet,
daß es zusätzlich die folgende Stufe umfaßt:
d) Verbinden der hochentwickelten Programmiersprache, der Konfigurations-Ziel-Datei und ausgewählter Routinen aus einem Laufzeit-Befehlsvorrat für die hochentwickelte Programmiersprache unter der Steuerung einer Verbindungs-Befehls-Datei zum Erzeugen eines vom Prototyp-Prozessors durchführbaren Ladungsmoduls (20).
6. Verfahren gemäß Anspruch 2,
dadurch gekennzeichnet,
daß die Konfigurations-Ziel-Datei aus Stufe b) Unterbrecher-Vektoren, Unterbrechungs-Dienst-Routinen, eine Rückstell-Routine und eine Programm-Initialisierungs-Routine für den Prototyp-Prozessor (8, 32) enthält.
7. Verfahren gemäß Anspruch 2,
dadurch gekennzeichnet,
daß die Verbindungs-Befehls-Datei der Stufe b) Routinen zum Verbinden der hochentwickelten Programmiersprache, der Konfigurations-Ziel-Datei und einen geeigneten Laufzeit-Unterstützungs-Befehlsvorrat enthält.
8. Ein Integrations-Steuersystem zum Integrieren einer hochentwickelten Programmiersprache mit den Hardware-Begrenzungen eines ausgewählten Prototyp-Prozessors mit
Vorrichtungen zum interaktiven Vorbereiten einer Quellendatei, die Software, Hardware und Unterbrecher-Konfigurationsspezifikationen
des ausgewählten Prototyp-Prozessors in Erwiderung auf Programmiereingaben aufweist und
Vorrichtungen zum Verarbeiten der Quellendatei zum Erzeugen einer Verbindungs-Befehls-Datei und einer Konfigurations-Ziel-Datei.
9. System gemäß Anspruch 8,
gekennzeichnet durch
Vorrichtungen zum Verbinden der hochentwickelten Programmiersprache mit der Konfigurations-Ziel-Datei unter der Steuerung der Verbindungs-Befehls-Datei zum Erzeugen eines vom Prototyp-Prozessors durchführbaren Ladungsmoduls.
10. System gemäß Anspruch 9,
dadurch gekennzeichnet,
daß die interaktiv vorbereitenden Vorrichtungen ein Prompten des Programmierens zur Eingabe von Software zu den Prototyp-Prozessor-Hardware-Spezifikationen und zu den Unterbrecher-Spezifikationen bewirken und
Vorrichtungen zum Erzeugen einer diese Spezifikationen enthaltenden Quellendatei aufweisen.
11. System gemäß Anspruch 8,
gekennzeichnet durch
Vorrichtungen zum Verbinden der hochentwickelten Programmiersprache, der Konfigurations-Ziel-Datei und ausgewählten Routinen aus einem Laufzeit-Befehlsvorrat für die hochentwickelte Sprache unter der Steuerung der Verbindungs-Befehls-Datei zum Erzeugen eines vom Prototyp-Prozessors durchführbaren Ladungsmoduls.
12. System gemäß Anspruch 8,
dadurch gekennzeichnet,
daß die Konfigurations-Ziel-Datei Unterbrecher-Vektoren, Unterbrecher-Dienst-Routinen, eine Rückstell-Routine und eine Programm-Initialisierungs-Routine für den Prototyp-Prozessor enthält.
13. System gemäß Anspruch 8,
dadurch gekennzeichnet,
daß die Verbindungsbefehlsdatei Routinen zum Verbinden der hochentwickelten Programmiersprache, der Konfigurations-Ziel-Datei und des geeigneten Laufzeit-Unterstützungs-Befehlsvorrats aufweist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US38772982A | 1982-06-14 | 1982-06-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE3321131A1 true DE3321131A1 (de) | 1984-08-16 |
Family
ID=23531138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19833321131 Withdrawn DE3321131A1 (de) | 1982-06-14 | 1983-06-10 | Selbstlernende rechenmaschine |
Country Status (4)
Country | Link |
---|---|
JP (1) | JPS593556A (de) |
DE (1) | DE3321131A1 (de) |
FR (1) | FR2535487B1 (de) |
GB (1) | GB2127188B (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3631487A1 (de) * | 1986-09-16 | 1988-03-17 | Mettler Instrumente Ag | Geraet, insbesondere waage, mit einer anzeige der resultate von nacheinander erfolgenden ausgewaehlten funktionsablaeufen |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0640302B2 (ja) * | 1984-01-30 | 1994-05-25 | 株式会社日立製作所 | 図式・ソ−スプログラム自動生成方法 |
JPS6175932A (ja) * | 1984-09-21 | 1986-04-18 | Fujitsu Ltd | プログラム組込登録方式 |
GB8606147D0 (en) * | 1986-03-12 | 1986-04-16 | Marconi Instruments Ltd | Microprocessor test equipment |
US4809170A (en) * | 1987-04-22 | 1989-02-28 | Apollo Computer, Inc. | Computer device for aiding in the development of software system |
ATE204658T1 (de) * | 1994-06-30 | 2001-09-15 | Siemens Ag | Programmierverfahren für einen remanentspeicher einer speicherprogrammierbaren steuerung |
GB2364579A (en) | 1999-11-30 | 2002-01-30 | Sgs Thomson Microelectronics | An assembler using a descriptor file that contains information descriptive of the instruction set of a target microprocessor |
CN108268293B (zh) * | 2016-12-29 | 2021-11-02 | 广东中科遥感技术有限公司 | 移动app快速原型演示的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2249852A1 (de) * | 1971-10-12 | 1973-04-19 | Ncr Co | Computersystem |
US4204253A (en) * | 1977-03-22 | 1980-05-20 | U.S. Philips Corporation | Device for generating and correcting a user program |
US4277827A (en) * | 1979-01-02 | 1981-07-07 | Texas Instruments Incorporated | Microprocessor based system for the development and emulation of programmable calculator control read only memory software |
US4309756A (en) * | 1971-02-17 | 1982-01-05 | Beckler Robert I | Method of automatically evaluating source language logic condition sets and of compiling machine executable instructions directly therefrom |
US4330822A (en) * | 1971-09-02 | 1982-05-18 | Burroughs Corporation | Recursive system and method for binding compiled routines |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4315315A (en) * | 1971-03-09 | 1982-02-09 | The Johns Hopkins University | Graphical automatic programming |
GB1372430A (en) * | 1971-05-28 | 1974-10-30 | Burroughs Corp | Process for producing a microprogramme or a soft interpreter for a computer |
US3938103A (en) * | 1974-03-20 | 1976-02-10 | Welin Andrew M | Inherently micro programmable high level language processor |
JPS56145441A (en) * | 1980-04-10 | 1981-11-12 | Mitsubishi Electric Corp | Microcomputer development device |
EP0049176A1 (de) * | 1980-09-26 | 1982-04-07 | The Bendix Corporation | Programmentwicklungsverfahren |
-
1983
- 1983-06-07 GB GB8315523A patent/GB2127188B/en not_active Expired
- 1983-06-10 DE DE19833321131 patent/DE3321131A1/de not_active Withdrawn
- 1983-06-14 JP JP10659483A patent/JPS593556A/ja active Pending
- 1983-06-14 FR FR8309816A patent/FR2535487B1/fr not_active Expired
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4309756A (en) * | 1971-02-17 | 1982-01-05 | Beckler Robert I | Method of automatically evaluating source language logic condition sets and of compiling machine executable instructions directly therefrom |
US4330822A (en) * | 1971-09-02 | 1982-05-18 | Burroughs Corporation | Recursive system and method for binding compiled routines |
DE2249852A1 (de) * | 1971-10-12 | 1973-04-19 | Ncr Co | Computersystem |
US4204253A (en) * | 1977-03-22 | 1980-05-20 | U.S. Philips Corporation | Device for generating and correcting a user program |
US4277827A (en) * | 1979-01-02 | 1981-07-07 | Texas Instruments Incorporated | Microprocessor based system for the development and emulation of programmable calculator control read only memory software |
Non-Patent Citations (3)
Title |
---|
DE-Z.: Elektronik, 23(1981), S. 14 * |
DE-Z.: Siemens Forschungs- u. Entwicklungs- berichte, Bd. 8 (1979), Nr. 6, S. 321-325 * |
US-Z.: Hewlett-Packard Journal, Okt. 1980, S. 3-13 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3631487A1 (de) * | 1986-09-16 | 1988-03-17 | Mettler Instrumente Ag | Geraet, insbesondere waage, mit einer anzeige der resultate von nacheinander erfolgenden ausgewaehlten funktionsablaeufen |
Also Published As
Publication number | Publication date |
---|---|
GB2127188B (en) | 1986-06-11 |
GB8315523D0 (en) | 1983-07-13 |
FR2535487A1 (fr) | 1984-05-04 |
FR2535487B1 (fr) | 1989-01-20 |
JPS593556A (ja) | 1984-01-10 |
GB2127188A (en) | 1984-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69720821T2 (de) | Fehlersuchsystem für Programme mit einer graphischen Benutzerschnittstelle | |
DE69033360T2 (de) | Simulation von ausgewählten Logik-Schaltungsentwürfen | |
DE69315576T2 (de) | Verfahren und testanlage zur entwicklung einer integrierten schaltung. | |
DE69704624T2 (de) | System und verfahren für dynamische datenreferenz in einer generischen datenaustauschumgebung | |
DE202020105389U1 (de) | Front-End-Framework, Speichermedium und elektronische Vorrichtung | |
EP1034475B1 (de) | Verfahren zum testen von systemkomponenten eines objektorientierten programms | |
DE68915847T2 (de) | Tastatur-Umbelegung. | |
DE69326004T2 (de) | Testapparat mit grosser Kapazität | |
DE4109258A1 (de) | Verfahren zum umwandeln der hardwarekonfiguration einer programmierbaren verknuepfungssteuerung und des entsprechenden steuerprogramms zur verwendung bei einer zweiten programmierbaren verknuepfungssteuerung | |
DE3503119A1 (de) | Verfahren zum automatischen erzeugen eines quellenprogramms | |
DE69622161T2 (de) | Rechnersystem mit Kontextumschaltung und Programmentwicklung dafür | |
EP3285165A1 (de) | Modifizieren und simulieren der betriebssoftware eines technischen systems | |
DE3321131A1 (de) | Selbstlernende rechenmaschine | |
EP1005215B1 (de) | Verfahren und Vorrichtung zum Editieren von Konfigurationsdaten für Telekommunikationssysteme | |
DE4104568A1 (de) | Verfahren und vorrichtung zur programmverarbeitung | |
DE10041072A1 (de) | Verfahren zur automatischen Erzeugung von Programmcode | |
DE69427193T2 (de) | Verfahrensauswahl mit mehreren eingangspunkten | |
DE10324594A1 (de) | Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung | |
DE69513463T2 (de) | Einausgabe/ausgabe emulationssystem | |
EP1469320A1 (de) | Verfahren zur Generierung von Testersteuerungen | |
DE69322800T2 (de) | Verfahren zur Leistungsverbesserung in einem automatischen Testsystem | |
EP1505399B1 (de) | Verfahren zum Erzeugen von Testdaten zum Austesten der Funktionsfähigkeit einer datenverarbeitenden Schaltung | |
DE102016115314A1 (de) | Modifizieren und Simulieren der Betriebssoftware eines technischen Systems | |
EP4147121B1 (de) | Verfahren zum erstellen und ausführen eines steuerprogramms zum steuern eines automatisierungssystems und automatisierungssystem | |
DE102019214273A1 (de) | System und Verfahren zum Bereitstellen einer digitalen Nachbildung einer Anlage und entsprechendes Computerprogrammprodukt |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8125 | Change of the main classification |
Ipc: G06F 9/44 |
|
8139 | Disposal/non-payment of the annual fee |