-
Gegenstand
der vorliegenden Erfindung ist ein Ladeverfahren eines Nutzungsprogramms
in einem tragbaren Chipträger.
Sie ist insbesondere im Bereich der Chipkarten anwendbar. Sie betrifft
ganz besonders die Situationen, in denen in einem Speicher eine
Chipkarte mit mehreren Anwendungen unterschiedlicher Typen koexistieren
soll. Als Anwendung wird die Folge der sowohl im Innern einer Chipkarte
als auch in einem Lesegerät
durchgeführten Operationen
bezeichnet, mit dem diese Karte in Verbindung steht und die zur
Befriedigung eines durch einen Nutzer, den Träger der Chipkarte, ausgedrückten Bedürfnisses
führen.
Diese Operationen umfassen elektronische Verarbeitungen im Innern
der Schaltkreise der Karte und des Lesegeräts und eventuell mechanische
Aktionen auf den Peripheriegeräten,
an denen das Lesegerät
angeschlossen ist. Eine Anwendung umfasst daher gespeichert im Speicher der
Karte ein Nutzungsprogramm dieser Karte zu diesem Zweck, wobei dieses
Programm einen Anweisungssatz umfasst.
-
Eine
Chipkarte umfasst in ihrer allgemeinen Struktur einen Mikroprozessor
in Beziehung mit einem Programmspeicher, einem oder mehreren Datenspeicher(n)
und eine Kommunikationsschnittstelle mit der Außenwelt. Um die Nutzung einer
Chipkarte praktischer zu gestalten, wurde daran gedacht, auf einer
und derselben Karte mehrere Nutzungsprogramme koexistieren zu lassen.
Z. B. ein Bankennutzungsprogramm und ein Nutzungsprogramm zur Buchung
von Mietwagen. Die beiden für
diese Nutzungsprogramme verantwortlichen Dienstleister, eine Bank
und eine Bankinstitution, werden im Allgemeinen keine Gemeinsamkeiten
haben, da sie voneinander vollkommen qunabhängig sind. Sie können nicht
einmal wissen, dass von ihren Kunden getragene Chipkarten mit Nutzungsprogrammen
der Leistungen eines anderen Dienstleisters versehen sind.
-
Das
von dieser Art von Ressourcenteilung der Chipkarte durch mehrere
Anwendungen dargestellte Problem ist grundlegend die Wahrung der
Integrität
der Daten und der Anweisungen eines anderen Nutzungsprogramms durch
eines der Nutzungsprogramme.
-
Um
das Problem der Koexistenz zu lösen, wurde
an mehrere Lösungen
gedacht, die alle in ihrem Prinzip auf der Intervention einer höheren Autorität beruhen,
z. B. dem Unternehmen, das die Karten herstellt. In diesem Fall
sind mehrere Lösungen denkbar.
-
Z.
B. kann den Herstellern von integrierten Schaltkreisen, die die
in die Karten einzupassenden integrierten Schaltkreise herstellen,
die Autorität
verliehen werden. Andernfalls kann der hergestellte integ rierte
Schaltkreis vollständig
leer sein oder in seinem Speicherprogramm nur einen Satz zu dessen Betrieb
bestimmte elementare Anweisungen enthalten. Dieser Satz elementarer
Anweisungen ist das Betriebssystem des integrierten Schaltkreises.
Dieses Betriebssystem kann selbst im Innern des integrierten Schaltkreises
entweder direkt bei der Herstellung (in diesem Fall wird er im Allgemeinen
per Maske programmiert) oder z. B. im Verlauf einer Testoperation
programmiert sein.
-
In
einer anderen Art der Ausführung
kann das Betriebssystem im integrierten Schaltkreis durch ein Unternehmen
installiert werden, das einem Dienstleister einen Satz Karten mit
einem Betriebssystem und Nutzungsprogrammen zur Verfügung stellt,
die an die Anforderungen dieses Dienstleisters angepasst sind. In
diesem letzteren Fall die ausgewählte
Lösung,
um unterschiedliche Anwendungen auf einem und demselben integrierten
Schaltkreis in einer und derselben Chipkarte koexistieren zu lassen und
jedes Mal ein spezielles Betriebssystem zu erstellen, damit mehrere
Anwendungen unterschiedlicher Art, die jedoch zuvor bekannt sind,
in der Karte gespeichert werden können und die Anwendungen nicht
ohne das Einverständnis
der betroffenen Dienstleister die einen vor den anderen nachwirken können.
-
Diese
Lösung
weist den Nachteil auf, dass das Unternehmen, das sie umsetzt, von
Anfang an alle Nutzungen kennen muss, die mit den Karten durchgeführt werden
sollen, die es den Dienstleistern zur Verfügung stellt. Das verhindert
damit jegliche Entwicklung. Der andere von dieser Methode dargestellte
Nachteil besteht darin, dass sie auf dem Vertrauen der unterschiedlichen
Dienstleister gegenüber der
Gesellschaft beruht, die das Betriebssystem und die Anwendungsprogramme
in den integrierten Schaltkreisen der Karten umsetzt. Da die Anwendungen
für diese
Dienstleister sensible Aktionen beinhalten können, ist dieses Vertrauen
schwer zu erhalten oder zu kontrollieren.
-
Neben
diesem Entwicklungsproblem der Anwendungen weist es die Schwierigkeit
auf, dass das Speichern von Nutzungsprogrammen im Speicher des integrierten
Schaltkreises der Chipkarte nur durch Bezeichnen der absoluten Adressen
der in dieser Karte verfügbaren
Speicherbereiche in diesen Programmen erfolgen kann. D. h., dass
es notwendig wäre,
die gesamte Struktur des integrierten Schaltkreises der Karte offen
zu legen, insbesondere die Adressen offen zu legen, an denen die
Geheimnisse der Karte, ihre privaten Verschlüsselungsschlüssel gespeichert
sind, wenn gewünscht
wird, dass irgendjemand seine eigenen Nutzungsprogramme in einer Chipkarte
speichern kann.
-
Gegenstand
der Erfindung ist es, diesem Problem abzuhelfen, indem im Betriebssystem
des integrierten Schaltkreises eine Makro-Ladeanweisung umgesetzt
wird, deren Merkmale einerseits in der Berechnung der absoluten
Adressen bestehen, an denen die Anweisungen des Nutzungsprogramms ausgehend
von einer bekannten Ausgangsadresse angeordnet werden müssen, in
der entsprechenden Änderung
des Nutzungsprogramms und dem Spei chern der Anweisungen dieses Programms
an diesen berechneten Adressen.
-
Erfindungsgemäß umfasst
das Nutzungsprogramm des integrierten Schaltkreises andererseits eine
Definition eines Datenspeicherplatzes, der für die Umsetzung dieser Nutzung
notwendig sein wird. In der Erfindung liest dann die Makro-Ladeanweisung
diese in diesem Nutzungsprogramm vorhandene Definition (im Allgemeinen
am Kopf dieses Programms) und reserviert im Datenspeicher einen
zum Speichern der entsprechenden Daten notwendigen Platz. Im Verlauf
des Ladens führt
die Makro-Ladeanweisung
der Erfindung bevorzugt auch darüber
hinaus eine Aktualisierung eines Speicherbereichs durch, der das
Besetzen im Speicher des Nutzungsprogramms zu dieser Anwendung darstellt.
Dieser Speicherbereich kann z. B. einen Dateienbeschreiber umfassen.
-
Der
europäische
Patentantrag Nummer
EP 0 519
071 legt das Laden von Programmen einer Funktionsbibliothek
im Speicher eines Computerterminals offen. Die absoluten Adressen
der im Terminal zum Speichern eines Programms verfügbaren Speicherbereiche
werden vor dem Speichern definiert und werden in einer Adressenverwaltungsübersicht
gespeichert, die zum Zeitpunkt des Ladens des Programms verwendet
wird.
-
Die
Erfindung betrifft ein Ladeverfahren in einem durch einen tragbaren
Chipträger
getragenen und einen Mikroprozessor und einen Speicher umfassenden
elektronischen Chip gemäß Anspruch
1, eines Nutzungsprogramms dieses Chipträgers, wobei dieses Programm
Anweisungen umfasst, und in dem
- – der Chip
mit einem Betriebssystem mit insbesondere einem Ladeprogramm in
den Speicher versehen wird, wobei dieses Betriebssystem den Betrieb
des Mikroprozessors und des Speichers steuert,
- – im
Speicher mittels des Ladeprogramms in den Speicher das Nutzungsprogramm
im Speicher gespeichert wird,
- – im
Nutzungsprogramm eine Menge an im Speicher des Chips zum Enthalten
der durch dieses Nutzungsprogramm zu nutzenden Daten notwendigem
Platz definiert wird,
- – durch
dieses Ladeprogramm in den Speicher zum Zeitpunkt dieses Ladens
absolute Adressen zum Speichern der in dem Nutzungsprogramm genutzten
Daten und der Anweisungen dieses Nutzungsprogramms in den Speicher
berechnet werden,
- – dieses
Nutzungsprogramm entsprechend geändert
wird und
- – durch
dieses Ladeprogramm die Daten und die in dem Nutzungsprogramm vorhandenen
Anwendungen an diesen berechneten absoluten Adressen gespeichert
werden.
-
Ein
weiteres, den Chipkarten inhärentes
Problem besteht darin, den Dienstleistern die Möglichkeit zur Programmierung
neuer Anwendungen oder zur Änderung
ihrer Anwendungen zu geben, ohne die Funktionsweise des Betriebssystems
der Erfindung kennen zu müssen.
Dann ist in der Erfindung vorgesehen, den integrierten Schaltkreis
der Karte mit einem Befehl-Interpretationsprogramm
zu versehen. Ein derartiges Befehl-Interpretationsprogramm ist in der
Lage, durch den Mikroprozessor des integrierten Schaltkreises Anweisungen
in einer entwickelten (symbolischen) Sprache ausführen zu
lassen, die in einem Programmspeicher gelesen werden, indem sie
unterwegs interpretiert werden, d. h. durch ihr Umformen in durch
den Mikroprozessor ausführbare Anweisungen.
Diese ausführbaren
Anweisungen können
dann so wie sie sind in das Anweisungsverzeichnis dieses Mikroprozessors
geladen werden.
-
Unter
diesen Bedingungen sind die einzigen Auflagen, die den Dienstleistern
auferlegt werden, das Ausrüsten
ihrer Nutzungsprogramme erstens mit einer Definition des für die Daten
notwendigen Platzes und andererseits die Nutzung eines Programms in
allgemein im IT-Bereich genutzter, entwickelter Sprache. Z. B. kann
dieses Programm in entwickelter Sprache ein Programm in der Sprache
C, FORTH, FORTRAN oder COBOL oder einer anderen Sprache sein. Die
Makro-Ladeanweisung kann ggf. in der Lage sein, zuvor die eingesetzte
entwickelte Sprache zu erkennen, so dass der Interpretierer der
Befehle entsprechend ausgerichtet wird. Ein unterschiedler Interpretierer
kann dann den unterschiedlichen Sprachtypen entsprechen.
-
Gegenstand
der Erfindung mit dieser Aufgabe ist ein Verfahren wie zuvor, dadurch
gekennzeichnet, dass
- – der Chip mit einem Betriebssystem
mit einem Befehl-Interpretations-Programm 33 versehen wird,
- – im
Speicher des Chips mittels des Ladeprogramms in den Speicher ein
Nutzungsprogramm 15 des Chipträgers mit in einer entwickelten
Sprache geschriebenen, nicht direkt vom Mikroprozessor ausführbaren
Anweisungen mit dem Ziel gespeichert wird, vom Mikroprozessor interpretierte, aus
diesen nicht direkt ausführbaren
Anweisungen resultierende Anweisungen ausführen zu lassen, nachdem diese
einer Interpretation durch das Befehl-Interpretationsprogramm unterzogen worden
sind,
- – durch
das Ladeprogramm in den Speicher zum Zeitpunkt dieser Speicherung
Adressen zum Speichern de Anweisungen des Programms in entwickelter
Sprache im Speichern des Chips berechnen zu lassen,
- – die
Anweisungen in entwickelter Sprache in Abhängigkeit von dieser Berechnung
zu ändern,
- – diese
Anweisungen in entwickelter Sprache im Speicher an durch dieses
Ladeprogramm berechneten absoluten Adressen gespeichert werden.
-
Die
Erfindung wird bei der Lektüre
der nachstehenden Beschreibung und bei der Prüfung der sie begleitenden Figuren
besser verstanden werden. Diese werden nur zu Anschauungszwecken
und keineswegs als Einschränkung
der Erfindung gegeben. Die Figuren zeigen:
-
1:
eine integrierte Schaltkreisstruktur für einen elektronischen Träger, die
geeignet ist, das Verfahren der Erfindung umzusetzen;
-
2:
ein die Folge der Ladeoperationen gemäß dem Verfahren der Erfindung
zeigendes Organigramm;
-
3a bis 3c:
ein schematisches Beispiel eines in entwickelter Sprache geschriebenen Programms
mit einer relativen Adressierung und die unterschiedlichen Umwandlungen,
denen es vor seinem Speichern im Speicher des integrierten Schaltkreises
unterzogen wird;
-
4:
eine Beschreibung der Syntax der unterschiedlichen, in einem derartigen
Programm nutzbaren Anweisungen.
-
1 zeigt
die Struktur eines integrierten Schaltkreises für einen zur Umsetzung des Verfahrens
der Erfindung geeigneten tragbaren Träger. Ein elektronischer Chip 1 wird
von einem nicht dargestellten, tragbaren Träger getragen. In einem Beispiel
ist der tragbare Träger
eine Chipkarte. Der Chip 1 umfasst einen Mikroprozessor 2 und
einen Speicher. In dem Beispiel ist der Speicher ein doppelter Speicher. Er
umfasst einen zum Speichern eines Betriebssystems mit integriertem
Schaltkreis bestimmten ersten Speicher 3. Der Speicher 3 ist
bevorzugt ein nicht programmierbarer Speicher, der z. B. per Maske
programmiert wird oder eventuell programmierbar und dann nach seiner
Programmierung verriegelbar ist, um es im Anschluss nicht mehr zu
sein. Er ist vom nicht flüchtigen
Typ, seine Speicherzellen können Speicherzellen
vom Typ EPROM oder auch EEPROM sein. Ein anderer Teil 4 des
Speichers ist vom programmierbaren Typ und beliebig löschbar,
bevorzugt ist er vom Typ EEPROM. Er ist ebenfalls nicht flüchtig. Der
Dienstleister kann dort alle Nutzungsprogramme einfügen, die
er möchte,
damit der integrierte Schaltkreis 1 alle für sein Konto
gewünschten Anwendungen
ausführen
kann.
-
Das
im Speicher 3 gespeicherte Betriebssystem umfasst wenigstens
einen ersten Anweisungssatz 5 vom bekannten Typ. Z. B.
sind diese Anweisungen Anweisungen MOVE, MULT, PLUS oder GOTO, deren
Ziel es ist, nach dem Laden in ein Anweisungsverzeichnis 6 des
Prozessors 2 den Datentransfer (oder Anweisungstransfer)
in ein Datenverzeichnis 7 des Mikroprozessors 2 zwecks
ihrer Verarbeitung durch letzteren hervorzurufen. Der Betrieb bekannten
Typs dieses Systems ist folgender. Zum Zeitpunkt des Startens des
z. B. in einem Teil 8 des Speichers 4 enthaltenen
Nutzungsprogramms ruft eine in diesem Teil gelesene Anweisung das
Laden einer Anweisung des Betriebssystems 5 in das Verzeichnis 6 hervor
(in bestimmten Fällen
ruft sie das sukzessive Laden mehrerer dieser Anweisungen des Betriebssystems
hervor). Gleichzeitig werden in das Datenverzeichnis 7 des
Mikroprozessors die Arbeitsdaten geladen. Die Daten werden z. B.
in einem Teil 9 des Speichers 4 entnommen. Dann
werden diese Daten vom Mikroprozessor 2 verarbeitet, wobei
das Ergebnis sich (z. B.) im Verzeichnis 7 befindet. Die Teile 8 und 9 bilden
zusammen einen Bereich 10 des in der betroffenen Anwendung
reservierten Speichers 4. In dem gezeigten Beispiel ist
die Anwendung schematisch eine Anwendung vom Bankentyp. Sie kann
z. B. einem Anzeigeschema eines Kontensaldos auf einem Bildschirm
eines Lesegeräts
entsprechen.
-
Im
Stand der Technik wird das Einsetzen der Anwendungen der Bankenanwendung
und der sich auf diese Anwendung beziehenden Daten in den Bereichen 8 und 9 bzw.
des Speichers 4 durch ein externes System 11 hervorgerufen,
das auf dem integrierten Schaltkreis 1 über eine Kommunikationsschnittstelle 12 des
integrierten Schaltkreises 1 mit der Außenwelt einspringt. Die Schnittstelle 12 sowie alle
Schaltkreise des integrier ten Schaltkreises werden untereinander
durch einen Bus 13 verbunden, der zur Vereinfachung zur Übertragung
der Adressen, Daten und Befehle sinnvoll ist.
-
Das
Steuern eines Schreibschaltkreises 14 im Speicher 4 kann
damit von der Außenseite
aus durch den Schaltkreis 11 durchgeführt werden. Es ist notwendig,
den Schreibschaltkreis 14 mit den Bezeichnungen absoluter
Adressen zu steuern. Die erste Anweisung INSTRUCTION 1 muss nämlich z.
B. an der Adresse 0000 des Speichers 4 gespeichert sein.
Im Stand der Technik wirkt der Schaltkreis 14 unter der
Kontrolle des Schaltkreises 11 durch die Schnittfläche 12.
Der Schaltkreis 11 und damit diejenigen, die ihn steuern,
musste über
die notwendige Kenntnis und das ihnen entgegengebrachte Vertrauen
verfügen,
um dieses Speichern erfolgreich zu Ende zu führen.
-
Um
ungewollte Aktionen eines Schaltkreises 11 zu verhindern,
insbesondere in dem Fall, in dem mehrere Nutzungstypen im Bereich 4 durchgeführt werden
sollen, wird in der Erfindung davon abgesehen, Anweisungen im Bereich 8 unter
der Kontrolle eines externen Schaltkreises 11 zu speichern.
-
Um
zu dem Ergebnis zu gelangen, wird das Betriebssystem 5 in
der Erfindung mit einer spezifischen, hier symbolisch durch eine
Anweisung CHAR dieses Betriebssystems dargestellten Makro-Ladeanweisung
versehen. Gegenstände
der Anweisung CHAR sind das Speichern der Anweisungen eines Nutzungsprogramms 15 im
Speicher 4 sowie das Reservieren des notwendigen Platzes
für die
durch das Programm 15 genutzten Daten im Speicher.
-
Nunmehr
werden diese beiden Operationen beschrieben, wobei es sich von selbst
versteht, dass sie dies in einer beliebigen Reihenfolge tun können, soweit
dies im Vorab vorgesehen wird. In der Praxis sind das Programm 15 und
die Definitionen der genutzten Daten in der Schnittstelle 12 in
Form einer Datei 17 vorhanden, die die Anweisung CHAR konsultiert.
In der Erfindung wird mittels eines Zählers 16, der die
bereits gespeicherten Anweisungen zählt, eine ursprüngliche
Adresse CPTIO gespeichert, die anzeigt, dass sie die erste für ein neues
Programm verfügbare
Anweisungsadresse ist.
-
Das
Laden erfolgt dann auf folgende Weise. In 2 wird der
Mikroprozessor 2 in Ausführung der Anweisung CHAR in
der Stufe 8 über
die Schnittstelle 12 die erste Anweisung des Programms 15 lesen,
deren Rang 1 ist. Die Anweisung CHAR ordnet dann in der Stufe 19 dieser
Anweisung des Rangs 1 eine absolute Adresse von gleich CPTI zu.
Zu Beginn des Ladens ist die Adresse CPTI eine ursprüngliche Adresse
CPTIO. In einem völlig
wahllos herausgegriffenen Beispiel ist die Adresse CPTIO im Speicher 4 2356.
Im Verlauf einer folgenden Stufe 20 der Anweisung CHAR
wird diese Anweisung des Rangs 1 im Speicher 4 im Bereich 21 an
der gewünschten Adresse
gespeichert: 2356. Die genannte Zuordnung umfasst daher die Berechnung
der absoluten Adresse. Diese Zuordnung kann die Änderung des Programms umfassen,
um zu Beginn der Anweisung (oder am Ende) die absolute Adresse erscheinen
zu lassen, an der sie gespeichert werden muss. Zum Zeitpunkt dieser
Speicherung liest die Anweisung CHAR diese absolute Adresse und
speichert die Anweisung an der entsprechenden Adresse. Durch eine Teststufe 21 überprüft die Anweisung
CHAR anschließend,
dass die Anweisung des Programms 15 (die gerade gespeichert
wurde) die letzte zu speichernde Anweisung war. Da dies hier nicht
der Fall ist, wird der Inhalt des Zählers 16 in einer
Stufe 22 derart inkrementiert, dass ein Bereich 23 des
Zählers 16 nunmehr
einen erhöhten
aktuellen Wert CPTI umfasst (in einem Beispiel gleich 2357). Dann
ruft die Anweisung CHAR die Rückkehr
in die Stufe 18 hervor, um eine folgende Anweisung, die
Anweisung des Rangs 2 in dem Programm 15 zu lesen und sie
an der Adresse 2357 zu speichern. Auf diese Weise werden alle Anweisungen
gespeichert.
-
Ein
Programm wie das Programm 15 umfasst normalerweise Sprunganweisungen.
Wie im Programm 15 gezeigt, ist eine einen Sprung zur Anweisung
zum Rang p hervorrufende Anweisung vom Rang n vorgesehen. Eine Sprunganweisung
ist normalerweise eine Anweisung vom Typ IF oder GOTO. Manchmal
wird auch der Begriff Verzweigungsanweisung eingesetzt. Der Rang
p ist hier das Ziel der Anweisung vom Rang n. Da es sich um ein
Programm in entwickelter Sprache vom unbekannten Typ handelt, umfasst
die Anweisung CHAR dann einen Test 24, um herauszufinden,
ob die Anweisung von Rang n, die zu speichern ist, eine Anweisung
mit einem Sprung ist oder nicht. Bisher war das nicht der Fall. Das
ist allerdings bei der Anweisung vom Rang n der Fall.
-
Im
Verlauf einer Stufe 25 wird das Ziel P (relative Angabe)
durch ein absolutes Ziel (eine absolute Adresse im Speicher) ersetzt.
Diese absolute Adresse ist gleich dem Zustand des um den Wert p addierten
Zählers
ursprünglicher
Anweisungen CPTIO. Im Verlauf der Anweisung 25 ändert die
Anweisung CHAR nach der Berechnung der absoluten Zieladresse die
Anweisung vom Rang n, um sie in eine Anweisung umzuwandeln, in der
das Ziel nicht mehr p ist (relatives Ziel), sondern das neue absolute
Ziel. Im Folgenden wird in der Stufe 20 der Anweisung CHAR
die Anweisung des Rangs n an der Adresse CPTI0 + n – 1 im Bereich 21 gespeichert.
Das Programm läuft
auf diese Weise weiter ab, bis zum Speichern der q Anweisungen des
Programms 15.
-
In
dem Fall, in dem die Folge der Ränge
1, 2, 3, n, p, q der Anweisungen des Programms 16 Löcher enthalten
sollte, kann von der Anweisung CHAR erstens vorgesehen werden, diese
Löcher
zu stopfen (Berechnung einer kontinuierlichen relativen Adresse)
und zweitens ein erstes Mal im Fall eines Sprungs die Zieladressen
p zu berechnen, um eine kontinuierliche Sequenz zu berücksichtigen.
In diesem Fall würde
p durch p' ersetzt
werden (das den sich kontinuierlich entwickelnden Rängen entspricht), und
die Stufe 25 der Anweisung CHAR würde auf den Wert p' Anwendung finden.
-
Für die Reservierung
der Daten im Speicher kann auf zweierlei Weisen vorgegangen werden. Eine
erste, in den 3a bis 3c vorgesehenen Weise,
werden Variable resul, index, temp, nain des Programms 15 bei
einem ersten Lesen des Programms 15 festgestellt. Dann
wird ihnen allmählich eine
geordnete Adresse @ Daten: 0 bis @ Daten: 3 zugeordnet. Diese geordneten
relativen Adressen werden anschließend in absolute Adressen umge wandelt
(mit einem und demselben Mechanismus wie bei den Anweisungen). Das
Programm 15 wird dann geändert, um diese relativen geordneten Adressen
durch absolute Adressen zu ersetzen, hier von 2450 bis 2495. Dies
ist in den 3a bis 3c ersichtlich.
-
Auf
eine andere Weise wird das Programm 15 eine Definitionsanweisung
DEFIN mit der Menge des im Speicher notwendigen Platzes als zugeordnetes
Argument umfassen. Hier z. B. beginnt das Programm 15 mit
der dem Argument 45 zugeordneten Anweisung vom Rang 0,
DEFIN. Mit dieser Anweisung vom Rang 0 weiß die Anweisung CHAR, dass im
Datenspeicher 4 ein Bereich 26 zum dortigen Speichern
der vom Programm 15 zu nutzenden Daten reserviert werden
muss. Dies erlaubt ggf. eine problemlose Nutzung einer Speichermöglichkeit
in variabler Länge
des Betriebssystems 5.
-
In
den beiden Fällen
wird in der Erfindung ein zweiter Zähler 22 genutzt, um
einerseits die im Speicher 4 verfügbare Ausgangsadresse zu enthalten, um
dort die Daten zu speichern, und andererseits eine die Anzahl von
im Programm 15 genutzten Variablen oder das im Befehl DEFIN
angezeigte Argument (hier 45) berücksichtigende endgültige Adresse.
Der im Speicher reservierte Platz liegt zwischen diesen beiden Adressen.
Im Anschluss werden wir sehen, wie die Zähler 16 und 27 unterschiedlich
eingerichtet werden können.
Die hier gebotene Erläuterung
ist eine Erläuterung,
die versucht das Verfahren der Erfindung, verständlich zu machen.
-
In
einem bevorzugten Beispiel sind die Bereiche 21 und 26 des
Speichers anliegend: Ihre Adressen folgen aufeinander. Die den Wert
CPTIO des Zählers 16 enthaltende
Ausgangsadresse und die endgültige
Adresse des Zählers 27 bestimmen
das gesamte Besetzen im Speicher. Unter diesen Bedingungen kann
der Anfang des Zählers
der Datenadressen 27 durch die Anweisung CHAR im Verlauf
einer ursprünglichen
Stufe 28 berechnet werden. Somit wurde mit einem zum Test 22 analogen
Test aufgezeigt, dass durch die letzte Anweisung vom Rang q übergegangen
wurde: Es ist bekannt, dass es Anweisungen gibt, den Daten können die
Adressen CPTD0 und die folgenden, mit CPTI0 + a beginnenden und
folgenden zugeordnet werden.
-
Das
Organigramm der 2 ist optional, es kann unterschiedlich
durchgeführt
werden, wie im Folgenden verständlich
werden wird. In einem Beispiel, in dem das Programm 15 Anweisungen
q = 94 umfasst 94, wird die Ausgangsadresse des Datenzählers CPTD0
die der Addition der Ausgangsadresse des Zählers CPTIO und der Anzahl
von gespeicherten Anweisungen entsprechende Adresse 2450 sein. Im
Verlauf einer Stufe 29 liest die Anweisung CHAR anschließend die
Anweisung vom Rang 0, wenn sie existiert, und reserviert im Speicher
den Platz des Bereichs 26 bis zur Adresse 2495. Anschließend werden
mit der Anweisung CHAR in der Stufe 30 die Anweisungen
des Programms geändert, um
dort die notwendigen absoluten Adressen einzuschreiben: die Sprungadressen
(die ihrerseits an der Adresse 2362 rangmäßig angeordneten Adresse 2358
für die
Anweisung vom Rang 6 BNZE) und die Adressen in dem Speicher, in
dem die Werte der im Programm genutzten Variablen gespeichert sind.
-
Die 3a bis 3c zeigen
eine Erläuterung
des Programms im Hinblick auf sein Speichern im Speicher 4.
In einer ersten Etappe in 3b werden
die genannten Variablen durch relative geordnete Adressen ersetzt,
deren Ordnung der Ordnung des Auftretens der Variablen im Programm
entspricht.
-
In
der Praxis wandelt die Anweisung CHAR das in 3a gezeigte
Programm 15 in ein in 3c gezeigtes
Programm 15 um. Es kann sinnvoller sein, die Datenreservierung
zuerst vorzunehmen, den Daten und den Variablen absolute Adressen
im Datenspeicher 26 zuzuordnen und anschließend ihren Platz
den Anweisungen im Speicher 4 zuzuordnen.
-
Sobald
das Programm 15 in die Bereiche 21 und 26 des
Speichers 4 geladen wurde, speichert die Anweisung CHAR
in einer Stufe 31 einen Beschreiber in einem Bereich 32 des
Speichers 4. Der Beschreiber im Bereich 32 betrifft
den Namen der Anwendung, hier handelt es sich zum Beispiel um die Anwendung
SERVICE. Er betrifft auch die absoluten Ausgangsadressen 2356 und
Ankunftsadressen 2495, in denen alle Anweisungen und Daten des Programms
gespeichert waren. Der Vorteil bei der Speicherung der Anweisungen
im Bereich 21 an Adressen niedrigen Rangs an denen der
Daten des Bereichs 26 ist, dass das Programm direkt an
der Adresse 2356 beginnen kann. Beim Erkennen des Namens der Anwendung
SERVICE informiert der Beschreiber im Bereich 32 das Betriebssystem über die Tatsache,
dass das betroffene Programm an der Adresse 2356 beginnt.
-
So,
wie die Anweisungen im Programm 15 und in den 3a bis 3c angegeben
werden, entsprechen sie gemäß einem
bevorzugten Modus der Erfindung einer symbolischen entwickelten
Sprache, die ihrerseits auf vom Mikroprozessor ausführbare Anweisungen
verweist. MOV hat z. B. das Kopieren des Wertes zum Gegenstand,
der im zweiten Argument an der Adresse angegeben wird, der im ersten
Argument angezeigt wird. Die Anweisung MULT hat die Multiplikation
des an der Adresse des zweiten Arguments dieser Anweisung durch
den an der Adresse des ersten Arguments gespeicherten Inhalt und
das Verbringen des Ganzen an die Adresse des ersten Arguments zum
Gegenstand. 4 weist auf diese Besonderheiten
hin. Dort ist insbesondere festzustellen, dass die Anweisung BNZE
die Sprunganweisung ist.
-
Normalerweise
wird ein derartiges Programm vor seinem Speichern im Speicher 4 kompiliert.
Die Kompilation hat die Umwandlung jeder Anweisung MOVE, MULT oder
anderer Anweisungen, die Makro-Anweisungen sind, in Folgen von direkt durch
den Mikroprozessor 2 ausführbare Mikro-Anweisungen zum
Gegenstand. Diese Folgen von Mikro-Anweisungen haben selbstverständlich das
Erfüllen
der Funktion der Makro-Anweisung zum Gegenstand, aber auch die Organisation
aller Ablesungen im Speicher 3 und 4, aller Transfers
auf dem Bus 13, aller sinnvoller Verzeichnisfreigaben 7,
usw.
-
Um
die Arbeit der Dienstleister zu erleichtern, wird ihnen in der Erfindung
selbstverständlich weder
die Kompilation ihres Programms noch das Schreiben des Programms 15 in
einer vom Prozessor 2 ausführbaren Maschinensprache auferlegt.
-
Anstatt
die Anweisungen in einer direkt vom Mikroprozessor 2 ausführbaren
Sprache und damit von in ihrem derzeitigen Zustand im Anweisungsverzeichnis 6 dieses
Mikroprozessors ladbaren Anweisungen zu speichern, wird es bevorzugt,
von den Dienstleistern die Programmierung ihrer Programme 15 in
einer entwickelten Sprache zu verlangen. Mit den Anweisungen von
dem Typ, der in 4 gesehen wurde.
-
In
diesem Fall wird darüber
hinaus das im Speicher 3 gespeicherte Betriebssystem mit
einem Befehl-Interpretierer 33 versehen,
der zum Umwandeln jeder Makro-Anweisung MOVE MULT PLUS, usw. in
eine Folge von direkt durch den Mikroprozessor 2 ausführbaren
Mikroanweisungen in der Lage ist.
-
In
der Erfindung ist die Anweisung CHAR eine der in das Betriebssystem 5 geladenen
Anweisungen. Das Befehl-Interpretierprogramm 32 umfasst
dann eine Sequenz von dieser Anweisung CHAR entsprechenden Mikroanweisungen.
-
Die
Mikroanweisungen sind die, die von den Stufen 18 bis 31 angesprochen
werden. Zum Zeitpunkt der Umsetzung einer Anwendung verweist dann
eine im Bereich 21 abgegriffene Anweisung (in entwickelter
Sprache) auf eine Makroanweisung zum Interpretieren durch das Interpretierprogramm 33.
-
Im
Verlauf der Anwendung wird jedes Mal der Anwendungsbeschreiber genutzt,
um zu überprüfen, das
die Adressen, an denen das herangezogene Programm einwirkt, zwischen
den durch den Beschreiber im Bereich 32 angezeigte Grenzen
enthaltene Adressen sind.
-
Das
Betriebssystem sowie das Interpretierprogramm 33 werden,
wenn die Umsetzung eines von ihnen gewählt wird, bevorzugt im Speicher 3 vom nicht
programmierbaren Typ zum Zeitpunkt der Herstellung des integrierten
Schaltkreises 1 gespeichert. Auf diese Weise können diese
Programmteile nicht von den z. B. in den Speicher 4 geladenen
Anwendungen geändert
werden.
-
Die
Zähler 16 und 27 wurden
insbesondere mit Verzeichnissen beschrieben. Es ist jedoch möglich, diese
Zähler
durch durch den Mikroprozessor 2 ausführbare und die Anweisung CHAR
begleitende Anweisungen vom Typ Zähler zu ersetzen. Diese Zähleranweisungen
hätten
insbesondere die genaue Prüfung
der bereits im Speicher vorhandenen Beschreiber zum Gegenstand.
Diese Zähler
können
jedoch ebenfalls eine physische Form haben. Damit kann das Speichern
der Ausgangswerte der Zähler 16 und 27 durch
ein Ablesen des letzten Beschreibers 32 ersetzt werden.
Wenn mehrere Anwendungen im Speicher 4 gespeichert sind,
gibt es mehrere Beschreiber. Der zuletzt eingeschriebene wird durch Lesen
des Speichers von hinten nach vorn gefunden: Es ist der letzte genutzte
Platz vor einem leeren Platz.