-
Die
vorliegende Erfindung betrifft eine Halbleiter-Speichereinrichtung
und ein Programm-Unterscheidungssystem hierfür. Insbesondere betrifft die Erfindung
eine Halbleiter-Speichereinrichtung, wie einen Nur-Lese-Speicher,
die ein Programm und dergleichen in eine Kassette für ein Spiele-Gerät speichert,
und ein Unterscheidungssystem für
das Programm.
-
Beispielsweise
umfaßt
eine Kassette für
ein Spiele-Gerät
eine Halbleiter-Speichereinrichtung, wie
einen Nur-Lese-Speicher, in den ein Spielprogramm geschrieben ist,
wobei die Kassette während der
Benutzung in ein Spiele-Gerätegehäuse eingefügt ist.
Besonders im Fall einer solchen Kassette für Spiele-Geräte
ist der Markt mit Imitationen verseucht, in der Spielprogramme gesetzwidrig
kopiert sind.
-
Wie
in der
japanischen Auslegeschrift
Nr. 2-31256 [G06F 12/14] offenbart ist, schlägt der Anmelder
ein System vor, das imstande ist, ein unerlaubtes Kopieren eines
Spielprogramms oder eines anderen Programms zu verhindern, bzw.
das imstande ist, ein Verändern
der Daten durch Unterscheidung der Echtheit und durch Zugangsverhinderung zu
dem Programmspeicher, im Falle, daß eine Kassette keine Originalkassette
ist, zu verhindern.
-
In
dem vorgenannten Stand der Technik, in dem die Adressendecodierungsmethode
verwendet wird, wird die Echtheit durch Vergleich mit den von dem
im Speicher tatsächlich
gelesenen Programmdaten festgestellt. Daher ist es möglich, Raubkopien mit
einer hohen Zuverlässigkeit
und über
einen gewissen Grad hinaus zu entfernen.
-
Jedoch
ist es bei dem oben beschriebenen Stand der Technik erforderlich,
eine Anzahl von Adressen zu decodieren, wobei ein zusätzlich zu
lösendes
Problem vorhanden war, und zwar, daß nicht nur die Chipgröße aufgrund
der Anzahl der Verknüpfungsglieder
zu lang wurde, sondern auch, wenn die Adressen, die zu decodieren
waren, zu analysieren waren, ein Schutzeffekt gegen die gesetzwidrige
Verwendung des Programms verloren ging.
-
Aus
US 6,101,587 ist eine Datenschutzschaltung
für einen
Halbleiter-Speicher bekannt, mit der erreicht wird, daß nur der
Nutzer, der Daten in den Speicher geschrieben hat, diese auch wieder auslesen
kann. Dazu gibt der Nutzer einen Datenwert ein, der mit einem gespeicherten
Datenwert verglichen wird; entsprechend dem Ergebnis des Vergleichs
wird eine Speicheradresse ausgewählt.
-
Es
ist daher die Aufgabe der Erfindung, eine Halbleiter-Speichereinrichtung
anzugeben, die einen verbesserten Schutz gegen die Verwendung nicht autorisierter
Speichereinrichtungen bietet, sowie ein entsprechendes Programm-Unterscheidungssystem.
-
Diese
Aufgabe wird durch die in den Ansprüchen 1 und 8 definierte Erfindung
gelöst.
Ausgestaltungen der Erfindung sind in den Unteransprüchen definiert.
-
Weitere
Einzelheiten, Aspekte und Vorteile der vorliegenden Erfindung werden
anhand der detaillierten Beschreibung und der begleitenden Zeichnungen
der vorliegenden Erfindung näher
erläutert.
-
1 ist
ein Blockdiagramm, das eine Ausführungsform
der vorliegenden Erfindung zeigt;
-
2 ist
ein Blockdiagramm, das ein Beispiel einer Adressen-Verarbeitungseinheit
der Ausführung
gemäß der 1 zeigt;
-
3 zeigt
eine Darstellung eines Speicherplans einer Zentraleinheit in 1;
-
4 ist
ein Flußdiagramm,
das einen Ablauf der Ausführungsform
gemäß der 1 zeigt;
-
5 ist
ein Flußdiagramm,
das ein Prüfprogramm
gemäß des Flußdiagramms
in 4 zeigt;
-
6 ist
ein Blockdiagramm, das ein abgeändertes
Beispiel der Adressen-Verarbeitungseinheit zeigt;
-
7 ist
ein Blockdiagramm, das ein anderes abgeändertes Ausführungsbeispiel
der Adressenverarbeitungseinheit zeigt; und
-
8 ist
ein Blockdiagramm, das eine andere Ausführungsform gemäß der vorliegenden
Erfindung zeigt.
-
Eine
Informations-Verarbeitungsvorrichtung 10 einer Ausführungsform
gemäß der vorliegenden Erfindung,
die in 1 gezeigt ist, umfaßt eine Zentraleinheit 12 (CPU),
die eine zentrale Verarbeitungseinheit ist. Eine Anzeigevorrichtung 14,
die eine Ausgabeeinrichtung ist, und eine Eingabe-Bedieneinrichtung 16,
die eine Eingabeeinrichtung ist, sind mit der Zentraleinheit 12 verbunden.
Die Informations-Verarbeitungsvorrichtung 10 weist ein
Programm-Unterscheidungssystem auf. Wenn die Informations-Verarbeitungsvorrichtung 10 ein
Spieleprozessor ist, dann ist die Eingabe-Bedieneinheit 16 eine
Steuereinheit für
Spiele, wobei die Steuereinheit einen Steuerknüppel (joystick), ein Steuerkreuz
(cross key) und einige Arten von Bedienknöpfen aufweist, wobei der Spieleprozessor,
d. h. die Zentraleinheit 12, ein Spielprogramm verarbeitet,
das in einem Programm-Nur-Lese-Speicher 18 als
Folge einer Bedienung gespeichert ist, wobei die Bedienung durch
eine Eingabe-Bedieneinrichtung 16 ausgeführt wird,
um ein Spielebild in einer Anzeigevorrichtung 14 anzuzeigen,
wobei die Anzeigevorrichtung 14 beispielsweise ein Fernsehbildschirm
oder ein Flüssigkristallbildschirm
sein kann. Weiterhin ist ein Arbeitsspeicher 20, der an
der Zentraleinheit 12 angeschlossen ist, beispielsweise
als ein Schreib-Lese-Speicher und dergleichen ausgeführt, wobei
der Arbeitsspeicher 20 für den Betrieb der oben beschriebenen
Programmverarbeitung benutzt wird und wobei der Arbeitsspeicher 20 für das temporäre Speichern
eines Prüfprogramms
und von Prüfdaten
für eine
später
beschriebene Programmechtheitsunterscheidung benutzt wird.
-
Der
Programm-Nur-Lese-Speicher 18, der wie eine Halbleiter-Speichereinrichtung
oder eine Programmspeichereinheit funktioniert, ist ein Nur-Lese-Halbleiterspeicher,
wie ein programmierbarer Nur-Lese-Speicher (PROM), ein Flash ROM,
ein löschbarer
Festwertspeicher (EPROM), ein elektrisch löschbarer Festwertspeicher (EEROM)
und dergleichen, der die Programmdaten fest speichert. Der Programm-Nur-Lese-Speicher 18 weist
zusätzlich
zu einer Programmdaten-Speichereinheit 22 eine Adressen-Verarbeitungseinheit 24 und
eine Code-Speichereinheit 26 auf,
wobei die Programmdaten-Speichereinheit 22, die ein Speicherkern
ist, ein konventioneller Programm-Nur-Lese-Speicher ist. Weiterhin
sind, wie in dem Ausführungsbeispiel
gezeigt, die Programmdaten-Speichereinheit 22,
die Adressen-Verarbeitungseinheit 24 und die Code-Speichereinheit 26 in
dem gleichen Halbleiterchip angeordnet. Weiterhin werden die von
der Zentraleinheit 12 durch einen Adreßbus ausgegebenen Daten von
der Adressen-Verarbeitungseinheit 24 verarbeitet. Die Adressen-Verarbeitungseinheit 24 legt
die verarbeiteten Adreßdaten
an die Programmdaten-Speichereinheit 22 an. Die Programmdaten-Speichereinheit 22 liest
die Programmdaten aus gemäß der Adreßdaten,
die durch die Adressen-Verarbeitungseinheit 24 verarbeitet
worden sind. Die Programmdaten werden von der Zentraleinheit 12 durch
einen Datenbus ausgegeben.
-
Weiterhin
verarbeitet, wie später
beschrieben, die Adressen-Verarbeitungseinheit 24 die Adreßdaten auf
der Basis eines an einem Steuerbus der Zentraleinheit 12 angelegten
Steuersignals und eines Codes (Daten), der von einer Code-Speichereinheit 26 angelegt
ist.
-
Ein
Ausführungsbeispiel
der Adressen-Verarbeitungseinheit 24 ist in 2 gezeigt.
Wie in 2 gezeigt ist, umfaßt die Adressen-Verarbeitungseinheit 24 ein
Wählelement 30 und
ein Rechenelement 28, das wie ein Rechenmittel arbeitet.
Das Rechenelement 28 ist in dem Chip des Programm-Nur-Lese-Speichers 18 angeordnet
und kann ein Multiplizierer, ein Dividierer, ein Subtrahierer, ein Addierer
sein oder ein Verschiebe-Register oder ein anderes einfaches logisches
Re chenelement (beispielsweise UND, Nicht-UND, ODER, Nicht-ODER, EXKLUSIV-ODER
und dergleichen) sein.
-
Die
oberen 8 Bits A8–A15,
beispielsweise der ersten Adreßdaten
A0–A15
von 16 Bits, die von der Zentraleinheit 12 ausgegeben werden,
sind synthetisiert bzw. sind mit den Ausgabedaten A0'–A7' des Wählelementes 30 gekoppelt.
Die unteren 8 Bits A0–A7
werden an einem Eingang des Rechenelements 28 und an einem
Eingang (X) des Wählelementes 30 angelegt.
An einem anderen Eingang des Rechenelements 28 wird ein
Adreßrechencode a0–a7 von
8 Bits angelegt, wobei der Adreßrechencode
a0–a7
in der Code-Speichereinheit 26, die wie ein Code-Erzeugungsmittel
arbeitet, gesetzt wird. Das Rechenelement 28 führt jede
der oben beschriebenen Operationen an zwei Eingängen aus. Ein Ausgang des Rechenelements 28 wird
an einem anderen Eingang (Y) des Wählelementes 30 angelegt.
Im Fall, daß das
Rechenelement 28 beispielsweise ein UND ist, gibt das Rechenelement 28 ein
logisches Summenergebnis A0'–A7' des Adreßrechencodes
a0–a7 und
der niedrigeren 8 Bits A0–A7
aus und legt dasselbe an dem oben beschriebenen einen Eingang des
Wählelementes 30 an.
-
Das
vorher beschriebene Steuersignal, beispielsweise ein Schreibsignal,
wird an dem Wählelement 30 der
Zentraleinheit 12 angelegt. Daher ersetzt das Wählelement 30 die
niedrigeren 8 Bits A0–A7
der Adreßdaten
mit dem Rechenergebnis A0'–A7' als Folge des Steuersignals,
d. h. des Schreibsignals, und gibt die ausgetauschten Daten aus.
Andererseits sind die oberen 8 Bits A8–A15 der Adreßdaten A0–A15 mit
dem Ausgang des Wählelementes 30 gekoppelt.
Als Ergebnis hiervon werden die zweiten Adreßdaten von insgesamt 16 Bits
von A0'–A7' + A8–A15 von
dem Wählelement 30,
d. h. der Adressen-Verarbeitungseinheit 24 ausgegeben.
-
Weil
die zweiten somit modifizierten bzw. durch die Adressen-Verarbeitungseinheit 24 verarbeiteten
Adreßdaten
in der Programmdaten-Speichereinheit 22 (1)
in einem in 5 gezeigten und später beschriebenen Schritt
S12 eingegeben werden, werden die Programmdaten gelesen von einer
Adresse der Programmdaten-Speichereinheit 22, die nicht
durch die Adreßdaten
A0–A15,
sondern durch die zweiten Adreßdaten
A0'–A7' + A8–A15 bestimmt
ist. Im Fall eines falschen Programm-Nur-Lese-Speichers, der nicht
die Adressen-Verarbeitungseinheit 24 aufweist, werden die
Programmdaten von einer durch die ersten Adreßdaten A0–A15 gezeigten Adresse gelesen.
Daher werden die Programmdaten, die von der Programmdaten-Speichereinheit 22 gelesen
worden sind, voneinander unterschiedlich. Im vorher erwähnten Fall
stimmen die ausgelesenen Programmdaten mit den vorher gesetzten
Prüfdaten überein.
Im später
beschriebenen Fall stimmen die Programmdaten aber nicht mit den
Prüfdaten überein.
-
Weiterhin
werden gemäß des Ausführungsbeispiels
in 2 nur die niedrigeren 8 Bits der ersten Adreßdaten mit
dem Rechencode durch das Rechenelement 28 berechnet. Die
oberen 8 Bits werden so wie sie sind ausgegeben. Wie auch immer
können alle
16 Bits der ersten Adresse in dem Rechenelement 28 berechnet
werden. In einem solchen Fall, wie in der 2 mit Klammern
dargestellt ist, werden alle 16 Bits der Adreßdaten A0–A15 an dem einen Eingang des
Rechenelements 28 angelegt. An dem anderen Eingang des
Rechenelementes 28 wird ein Adreßrechencode a0–a15 von
16 Bits von der Code-Speichereinheit 26 angelegt. Daher
werden zweite Adreßdaten
A0'–A15', von denen alle
Bits modifiziert bzw. verarbeitet sind, von dem Rechenelement 28 ausgegeben.
Die zweiten Adreßdaten
A0'–A15' werden an dem einen
Eingang (X) des Wählelementes 30 gelegt.
Wie bei dem anderen Eingang (Y) des Wählelementes 30 auch,
werden die Adreßdaten A0–A15, die
von der Zentraleinheit 12 ausgegeben worden sind, angelegt.
Deshalb werden von dem Wählelement 30 die
zweiten Adreßdaten
A0'–A15' ausgegeben, wenn
das Steuersignal vorhanden ist. Wenn das Steuersignal nicht vorhanden
ist, werden die zweiten Adreßdaten
A0–A15
ausgegeben. Deshalb wird in einem Schritt S13 in 5 die
Richtigkeit der gelesenen Programmdaten festgestellt, wobei die
Programmdaten von einer Adresse gelesen werden, die durch die Adreßdaten A0'–A15' bestimmt wird.
-
Die
Zentraleinheit 12 in 1 weist
einen Speicherplan auf, der in 3 gezeigt
ist. Ein Speicherraum, beispielsweise „0000h–DFFFh", ist ein Programmbereich, der dem Programm-Nur-Lese-Speicher 18 zugewiesen
ist. Ein Speicherbereich von „E000h–FFFFh" ist ein Arbeitsbereich,
der dem Arbeitsspeicher 20 zugewiesen ist.
-
Die
Programmdaten-Speichereinheit 22 des Programm-Nur-Lese-Speichers
ist ein Teil des oben beschriebenen Programmbereichs. Der Programmbereich
ist weiterhin mit einem Programmbelegungsbereich oder einem Home-Bereich,
einem Prüfprogrammbereich
und einem Prüf-Startbefehlsbereich versehen.
-
Ein
Prüfprogramm,
das in einem Prüfprogrammbereich
gespeichert ist, kann anhand des in der 4 und 5 gezeigten
und später
beschriebenen Flußdiagramms
ausgeführt
werden.
-
Weiterhin
wird in dem Prüfprogramm
eine oder mehrere der Prüfdaten
gesetzt. Die Prüfdaten sind
Daten zur Unterscheidung der Programmechtheit, wobei die Unterscheidung
durch Vergleich mit den Daten, die durch das Ergebnis der Prüfprogrammausführung angezeigt
werden, erfolgt. Beispielsweise wird in dieser gezeigten Ausführungsform,
die Echtheit des Programms nur einmal geprüft, weshalb nur ein Satz Prüfdaten in
dem Prüfprogramm
gesetzt sind, wie in 3 gezeigt ist. Durch Setzen
des Prüfstartbefehls,
damit das Prüfprogramm
gestartet wird, wobei das Prüfprogramm
ein einziges Prüfdatenpaket
in einer Mehrzahl von Plätzen
des Hauptprogramms (beispielsweise ein Spielprogramm) verwendet,
oder durch Setzen einer Mehrzahl von Prüfstartbefehlen, um jeweils
eine Mehrzahl von Prüfprogrammen
zu starten, wobei eine Mehrzahl von Prüfdaten in einer Mehrzahl von
Plätzen
benutzt wird, ist es möglich,
die Schwierigkeit der Untersuchung des Programms zu erhöhen, durch
die häufige
Echtheitsprüfung
des Programms.
-
Weiterhin
ist es im Fall, daß das
Prüfprogramm
relativ klein (beispielsweise einige bis einige 10 Bytes) ist, es
vorzuziehen zur Erhöhung
der Schwierigkeit der Untersuchung des Prüfprogramms, daß das Prüfprogramm
anstelle des Prüfstartbefehls in
einer Mehrzahl von Plätzen
des Hauptprogramms gesetzt wird.
-
Mit
Bezug auf die 4 wird ein Schritt S1 zuerst
durch die Zentraleinheit 12 ausgeführt, wenn eine (nicht gezeigte)
Stromversorgung der Informations-Verarbeitungsvorrichtung 10 eingeschaltet
wird. In dem Schritt S1 liest die Zentraleinheit 12 das
in der Programmdaten-Speichereinheit 22 des Programm-Nur-Lese-Speichers 18 (1)
gespeicherte Programm. In dem zweiten Schritt S2 wird festgestellt,
ob die gelesenen Programmdaten bestimmte Programmdaten sind, wobei
die bestimmten Programmdaten die Ausführung der Echtheitsprüfung festlegen.
-
Wenn „NICHT" in dem Schritt S2
festgestellt wird, d. h. wenn die Programmdaten, die die Echtheitsprüfung auslösen, keine
bestimmten Programmdaten sind, dann wird in einem Schritt S3 eine
Verarbeitung gemäß der zu
dieser Zeit vorliegenden Programmdaten ausgeführt. In einem Schritt S4 nach dem
Schritt S3 legt die Zentraleinheit 12 fest, ob das Programm
beendet wird. Wenn „JA" festgestellt wird, dann
wird die Verarbeitung beendet. Wenn jedoch „NEIN" festgestellt wird, dann springt die
Verarbeitung zu dem vorherigen Schritt S1 zurück. Also wird durch Wiederholen
der Schritte S1–S4
das in der Programmdaten-Speichereinheit 22 gespeicherte Programm
der Reihe nach ausgeführt.
In diesem Zustand wird das Steuersignal (beispielsweise das Schreibsignal)
nicht an dem Wählelement 30 der Adressen-Verarbeitungseinheit 22 angelegt,
wodurch ein Zustand, daß der
Eingang X ausgesucht ist, in dem Wählelement 30 festgehalten
wird. Demgemäß werden
die von der Zentraleinheit 12 ausgegebenen ersten Adreßdaten der
Programmspeichereinheit 22 ausgegeben.
-
Wenn
der Befehl für
das Ausführen
des Prüfprogramms
in der Zentraleinheit 12 während der Durchführung, wobei
die jeweiligen Befehle der Durchführung in dem Programmbereich
der Reihe nach durch Wiederholen der Schritte S1–S4 ausgeführt werden, wobei die im Schritt
2 bestimmt wird, eingegeben wird, dann geht die Verarbeitung zu
dem Schritt S5 weiter. Im Fall, daß der Befehl, d. h. die bestimmten
Programmdaten, in der Adresse „030Eh" gesetzt worden sind,
wie in der 3 gezeigt ist, geht die Zentraleinheit 12 zu
einem Zeitpunkt zu dem Schritt S5 weiter, bei dem die Adresse zu
der Adresse „030Eh" heraufgesetzt worden
ist.
-
In
dem Schritt S5 liest die Zentraleinheit 12 das Prüfprogramm
und die Prüfdaten
ein, wobei beide in dem Programmbereich, der in 2 gezeigt
ist, angeordnet sind. Die Zentraleinheit 12 schreibt bzw. kopiert
beide in den Arbeitsspeicher 20. Hierfür wird ein Schritt S6 gemäß des Prüfprogramms
und der Prüfdaten,
die in dem Arbeitsspeicher 20 kopiert sind, durchgeführt. Wie
auch immer wird das in dem Arbeitsspeicher 20 kopierte
Prüfprogramm
nach der Fertigstellung der Prüfung
vernichtet.
-
Ein
Unterprogramm des Schrittes S6 ist in der 5 im Detail
gezeigt. In einem Schritt S11 der 5 erzeugt
die Zentraleinheit 12 zuerst das Steuersignal mittels des
Steuerbusses, um die in dem Programm-Nur-Lese-Speicher 18,
der in 1 gezeigt ist, angeordnete Adressen-Verarbeitungseinheit 24 freizugeben.
Insbesondere gibt die Zentraleinheit 12 das Schreibsignal
(Steuersignal) dem Wählelement 30 des
Programm-Nur-Lese-Speichers 18 durch den Steuerbus weiter.
Das Schreibsignal wird normalerweise nicht einem Programm-Nur-Lese-Speicher
(Nur-Lese-Speicher) während
der Programmdurchführung
des Nur-Lese-Speicher zugeführt,
wobei durch Ausgeben des Schreibsignals zu dem Programm-Nur-Lese-Speicher 18 das
Wählelement 30 der
Adressen-Verarbeitungseinheit 24 veranlaßt wird,
den Eingang Y auszuwählen.
Der Schritt S11 stellt ein Steuersignal-Anlegungsmittel dar.
-
Weiterhin
kann anstelle des oben beschriebenen, als Steuersignal verwendeten
Schreibsignals, ein Steuersignal dem Wählelement 30 zugeführt werden,
wenn die Zentraleinheit 12 eine bestimmte Adresse der Programmdaten-Speichereinheit 22 des Programm-Nur-Lese-Speicher 18 ausführt. In
einem solchen Fall, obwohl nicht gezeigt, kann ein Adressenvergleichselement
vorgesehen sein, wobei das Adressenvergleichselement der Reihe nach
die über den
Adreßbus
vor der Zentraleinheit 12 ausgegebenen Adreßdaten mit
den bestimmten Adressen vergleicht. Wenn durch das Adressenvergleichselement ermittelt
wird, daß beide
Adressen miteinander übereinstimmen,
dann wird das Steuersignal an das Wählelement angelegt.
-
Bei
einem nachfolgenden Schritt S12 gibt die Zentraleinheit 12 die
Adreßdaten
(die ersten Adreßdaten)
aus, um die Programmdaten-Speichereinheit 22 des Programm-Nur-Lese-Speichers 18 zu
lesen. Insbesondere werden genau nach dem Schritt S11, in dem die
Steuerung ausgegeben wird, in dem Schritt S12, welcher als ein Adressen-Eingabemittel wirkt,
die ersten Adreßdaten
in der Adressen-Verarbeitungseinheit 24 eingegeben,
wie eine Nur-Lese-Speicheradresse durch den Adreßbus der Zentraleinheit 12.
Die Adressen-Verarbeitungseinheit 24 verarbeitet aber die
ersten Adreßdaten,
wie in dem Ausführungsbeispiel
der 2 beschrieben ist, und führt ein verarbeitetes Adressenergebnis
(zweite Adreßdaten)
zu dem Programm-Nur-Lese-Speicher 18.
-
Anschließend wird
in einem Schritt S13 festgelegt, ob die Programmdaten einem wahren
Wert entsprechen, wobei die Programmdaten, gemäß der durch die Adressen-Verarbeitungseinheit 24 verarbeiteten
zweiten Adreßdaten,
von der Programmdaten-Speichereinheit 22 gelesen worden
sind. Das bedeutet, daß der
Schritt S13 Festlegungsmittel umfaßt, die bestimmen, ob die in
dem Arbeitsspeicher 20 gelesenen Prüfdaten und die Programmdaten
miteinander übereinstimmen,
wobei beide Daten miteinander verglichen werden. Es wird angenommen,
daß die
aus der Adresse, welche gemäß einer
in der Adressen-Verarbeitungseinheit 24 vorher
bestimmten Regel verarbeitet worden ist, gelesenen Programmdaten
mit den vorher gesetzten Prüfdaten übereinstimmen.
Daher wird in diesem Fall „JA" bestimmt. Jedoch
wird im Fall eines falschen Pro gramm-Nur-Lese-Speichers, der nicht
mit der Adressen-Verarbeitungseinheit 24 versehen ist,
oder eines falschen Nur-Lese-Speichers, in dem eine Einheit gleich
der Adressen-Verarbeitungseinheit 24 existiert, aber die
Adreßverarbeitung
nicht konform zu der bestimmten Regel ist, im Schritt S13 „NEIN" bestimmt.
-
Weiterhin
ist es im Fall, daß der
echte bzw. wahre Programm-Nur-Lese-Speicher als „JA" in dem Schritt S13 bestimmt worden
ist, so, daß die
Verarbeitung zu einer normalen Programmverarbeitung zurückkehrt.
Andererseits ist es im Fall eines nachgeahmten Programm-Nur-Lese-Speichers,
der mit „NEIN" bestimmt worden
ist, so, daß in
einem nächsten
Schritt S14 die Zentraleinheit 12 eine Warnmeldung, beispielsweise
in der Anzeigevorrichtung 14 (1), anzeigt
wird, wie „Dieser
Programm-Nur-Lese-Speicher (Kassette) ist eine Fälschung und wird daher nicht
in diesem Gerät
verarbeitet", wodurch das
Programm in dem Schritt S15 zwangsläufig beendet wird. Daher wird
es im Fall einer Nachahmung unmöglich,
das Programm ununterbrochen weiter zu verarbeiten. Das heißt, daß die Schritte
S14 und S15 gleich den Mitteln zur zwangsläufigen Programmbeendigung sind.
-
Weiterhin
wird in der Beschreibung oben, in dem Schritt S13, der ein Bestimmungsmittel
ist, verglichen, ob die gemäß der zweiten
Adreßdaten
gelesenen Programmdaten mit den vorher gesetzten Prüfdaten miteinander übereinstimmen,
wobei beide nicht miteinander übereinstimmen
könnten,
und wobei beide ein vorbestimmtes und vorher gesetztes Verhältnis (Zustand)
zueinander haben könnten.
Es kann ein willkürlich
vorher festgesetztes Verhältnis gesetzt
werden, wobei das Verhältnis,
beispielsweise ein Verhältnis
ist, das im gegenseitigen Vergleich, die einen größer oder
kleiner um eine vorher festgesetzte Anzahl sind, bzw. ein Verhältnis ist,
daß beide
miteinander übereinstimmen,
wenn eine im voraus festgelegte Berechnung auf die einen (und/oder
die anderen) angewendet wird bzw. ein Verhältnis ist, bei dem die absoluten
Werte der beiden einander gleich sind und so weiter.
-
In
dem Ausführungsbeispiel
der 2 können,
wenn die passenden Instrumente verwendet werden, die Programmdaten
vollständig
von der Programmdaten-Speichereinheit 22 ausgelesen
und kopiert werden. Jedenfalls ist es, auch wenn nur die Programmdaten
von der Programmdaten-Speichereinheit 22 wiedergespeichert
werden, unmöglich, daß das wiedergespeicherte
Programm im Gegensatz zum echten Produkt ausgeführt wird.
-
Insbesondere
kann der oben beschriebene Adressen-Modifikationsprozeß nicht
ausgeführt
werden, selbst wenn nur die Programmdaten wiedergespeichert sind,
in dem Fall, daß die
Adressen-Verarbeitungseinheit 24 und die Code-Speichereinheit 26 nicht
in einem Speicher einer Person versehen sind, die versucht, die
Programmdaten des Programm-Nur-Lese-Speichers 18 gesetzwidrig
zu benutzen, wenn die die Programmprüfung bestimmenden Programmdaten
ausgelesen werden. Daher werden die ersten, nicht identifizierten
Adreßdaten A0–A15 in
die Programmdaten-Speichereinheit 22 eingegeben. Auch wenn
ein solcher Prüfbefehl
besteht, werden die Programmdaten von der durch die ersten Adreßdaten A0–A15 festgelegten
Adresse gelesen. In diesem Fall sind die Programmdaten unterschiedlich
zu den Programmdaten, die aus einer durch die zweiten Adreßdaten A0'–A7' und A8–A5 erhalten in der Ausführungsform
der 2, festgelegten Adresse gelesen worden sind. Nicht-Übereinstimmung
wird durch Vergleichen mit den vorher in dem Schritt S13 gesetzten
Prüfdaten
ermittelt. Anschließend
wird, wenn das Unterscheidungsergebnis der nicht Übereinstimmung
erhalten ist, „NEIN" in dem Schritt S13
festgestellt, wodurch das Programm zwangsläufig beendet wird.
-
Um
die derartige Zwangsbeendigung des Programms zu vermeiden, ist es
erforderlich, die bestimmten Programmdaten, die den Prüfungsstart
in dem Schritt S2 in 4 auslösen, und den Programmschritt
(Adresse) hiervon zu analysieren. Weiter ist es erforderlich, alle
Elemente, solche wie eine Operationsart in dem Rechenelement 28 und
den Adreßrechencode,
die in dem Prüfprogramm
(2) gesetzten Prüfdaten usw., zu analysieren.
Im Fall, daß der
Programm-Nur-Lese- Speicher 18 beispielsweise
durch einen maskierten Nur-Lese-Speicher realisiert ist, ist es
sehr schwer, ein derartiges Element zu untersuchen, und daher ist
für die
Untersuchung eine aufwendige Einrichtung und eine lange Zeit erforderlich.
-
Andererseits
kann im Fall, daß die
Elemente, wie die Operationsart in dem Rechenelement und die Adreßberechnung
für jede
Art des Programm-Nur-Lese-Speichers,
Spieltitel im Fall einer Spielkassette, oder einer Programmversion
geändert werden,
ein Untersuchungsergebnis nicht auf andere Programm-Nur-Lese-Speicher angewendet
werden, wobei dies gilt, selbst wenn alle Elemente eines vorhandenen
Programm-Nur-Lese-Speichers untersucht worden sind. Daher ist es
für eine
Person, die versucht das Programm gesetzwidrig zu benutzen, erforderlich,
daß alle
Elemente zu jeder Zeit erneut untersucht werden. Nach dem gezeigten
Ausführungsbeispiel,
ist es also angesichts der Zeit und der erforderlichen Kosten für die Untersuchung
möglich, die
gesetzwidrige Benutzung des Programm-Nur-Lese-Speichers wirksam
zu unterbinden.
-
6 ist
ein abgeändertes
Beispiel des Ausführungsbeispiels
in 2. In dem Ausführungsbeispiel
in 6 weist das Rechenmittel der Adressen-Verarbeitungseinheit 24 eine
Mehrzahl von (n) Rechenelementen 281–28n auf. Die niedrigeren
8 Bits A0–A7
der ersten Adreßdaten
des Adreßbusses werden
an den entsprechenden Eingängen
der entsprechenden Rechenelemente 281–28n eingegeben. Entsprechenderweise
empfangen andere Eingänge
in der Regel den Adreßrechencode
a0–a7
von 8 Bits, welcher von der Code-Speichereinheit 26 ausgegeben
worden ist. Weiterhin wird an dem Wählelement 30 ein vorher
in der Code-Speichereinheit 26 gesetzter Rechenwahlcode
c0–cX
zusammen mit dem Steuersignal zugeführt. Die Anzahl der Bits des Rechenwahlcodes
c0–cX
kann entsprechend der Anzahl der Rechenelemente (n) gesetzt werden.
Im Fall, daß vier
(4) Rechenelemente 28 vorhanden sind, beträgt die Anzahl
der Bits 2. Im Fall, daß acht (8)
Rechenelemente vorhanden sind, können
3 Bits verwendet werden. Weiterhin ist der Rechenwahlcode c0–cX gesetzt
worden, um jedes von mehreren Rechenelementen 281–28n auszuwählen.
-
In
dem Ausführungsbeispiel
der 6 berechnen bzw. verändern, ähnlich dem Rechenelement 28 des
Ausführungsbeispiels
in 2, die entsprechenden Rechenelemente 281–28n die
Adresse, weshalb eine bestimmte Beschreibung einer solchen Adressenberechnung
weggelassen werden kann. Jedenfalls wird in dem Ausführungsbeispiel
der 6 vorausgesetzt, daß die entsprechenden Rechenelemente 281–28n verschiedene
Arten von Rechenoperationen durchführen können. Wenn verschiedene Rechenelemente
durch den Rechencode c0–cX
für jede
Art von Programm-Nur-Lese-Speicher (Spieltitel) bzw. einer Programmversion
ausgewählt werden
können,
dann wachst der Schwierigkeitsgrad der Programm-Untersuchung, die in der 2 beschrieben
ist. Die gesetzwidrige Benutzung wird daher erschwert.
-
Das
Ausführungsbeispiel
gemäß der 6 bietet
weitere Vorteile. Insbesondere im Fall, daß nur ein Rechenelement in
einem Chip, wie in der 2 gezeigt ist, angeformt ist
und das Rechenelement gemäß der Produktart
oder Programmversion ausgewechselt worden ist, dann ist in der Zeit,
in der das Rechenelement ausgetauscht ist, ein Auswechseln einer
Druckmaske erforderlich. Wenn die Mehrzahl der Rechenelemente 281–28n eingebettet
sind, wie in der 6 gezeigt ist, ist es im Gegensatz
möglich, das
Rechenelement auszuwählen,
wobei die Auswahl der Art der Rechenoperation nur durch Verändern des
Rechenwahlcodes ermöglicht
wird. Andererseits kann der Rechenwahlcode in dem gleichen Druckverfahrensschritt
des Adreßrechencodes
hergestellt werden. Gemäß des Ausführungsbeispiels
in 6 ist es möglich,
den Programm-Nur-Lese-Speicher zu niedrigen Kosten herzustellen,
wenn das Rechenelement geändert
wird.
-
In
dem Ausführungsbeispiel
der 6 wählt das
Wählelement 30 den
Eingang X, wenn das Steuersignal vorhanden ist. Das Wählelement
wählt den Eingang
Y, wenn kein Steuersignal vorhanden ist, wodurch die ersten Adreßdaten oder
die zweiten Adreßdaten
entsprechend der An- oder Abwesenheit des Steuersignals ausgegeben
werden. Weiterhin wird in der 6 in Klammern
ein Fall gezeigt, bei dem alle Bits der Adreßdaten A0–A15 abgeändert und verarbeitet worden
sind. Eine Abarbeitung in einem derartigen Fall kann in einfacher
Weise anhand der vorherigen Beschreibung für das Ausführungsbeispiel in 2 nachvollzogen
werden und kann daher hier ausgelassen werden.
-
Weiterhin
werden in den vorher beschriebenen Ausführungsbeispielen die durch
Berechnung eines Teiles oder der gesamten Teile durch das Rechenelement 28 (281–28n)
entstandenen Adreßdaten
(zweite Adreßdaten)
durch die Adressen-Verarbeitungseinheit 24 ausgegeben.
Wenn das Steuersignal nicht vorhanden ist, dann werden die von der Zentraleinheit 12 (die
ersten Adreßdaten)
ausgegebenen Adreßdaten
von der Adressen-Verarbeitungseinheit 24 ausgewählt und
ausgegeben. Wenn kein Steuersignal besteht, können dritte, durch einen zweiten
Rechenschritt entstandene, Adreßdaten ausgegeben
werden, wobei der zweite Rechenschritt zu dem Rechenschritt der
zweiten Adreßdaten
in den ersten Adreßdaten
unterschiedlich ist.
-
Ein
derartiges Ausführungsbeispiel
ist in 7 gezeigt. In dem Ausführungsbeispiel in 7 ist
ein derartiges Rechenelement 28' zusätzlich zu dem Rechenelement 28 und
dem Wählelement 30 des
Ausführungsbeispieles
in 2 in der Adressen-Verarbeitungseinheit 24 angeordnet.
Weiterhin werden zu dem jeweiligen Eingang der Rechenelemente 28 und 28' die unteren
8 Bits A0–A7
der Adreßdaten
A0–A15
(erste Adreßdaten)
von dem Adreßbus
der Zentraleinheit 12, so wie sie sind, angelegt. Der Adreßrechencode
a0–a7
von 8 Bits, die in der Code-Speichereinheit 26 gesetzt
worden sind, wird an den jeweiligen anderen Eingängen der Rechenelemente 28 und 28' zusammen angelegt.
Die Rechenelemente 28 und 28' werden in der Weise ausgewählt, daß die Rechenelemente 28 und 28' eine erste
Rechenart, beziehungsweise eine zweite unterschiedliche Rechenart
ausführen
können.
-
Das
Rechenelement 28 gibt ein erstes Rechenergebnis A0'–A7' des Adreßrechencodes a0–a7 und
der niedrigeren 8 Bits A0–A7
aus, wobei das Rechenele ment 28 sie an einen Eingang X
des Wählelementes 30 legt.
Das Rechenelement 28' gibt
ein zweites Rechenergebnis A0''–A7'' des
Adreßrechencodes
a0–a7
und der niedrigeren 8 Bits A0–A7
aus, um diese an den anderen Eingang Y des Wählelementes 30 zu
legen. Einer dieser Eingänge
A0'–A7' und A0''–A7'' des Rechenelementes 28 und 28' wird durch
das Wählelement 30 ausgewählt. An
dem Wählelement 30 wird
das Steuersignal, d. h. beispielsweise das Schreibsignal, von der
Zentraleinheit 12 angelegt und der Rechenwahlcode c0–cX, das
in der Code-Speichereinheit 26 gespeichert ist, angelegt.
Daher wählt
das Wählelement 30 den
Ausgang des Rechenelementes 28, d. h. den Eingang X, wenn das
Steuersignal existiert, damit die Adreßdaten A0'–A7' der durch das Rechenelement 28 verarbeiteten
niedrigeren 8 Bits ausgegeben werden. Das Wählelement 30 wählt den
Ausgang des Rechenelementes 28', d. h. den Eingang Y, wenn das
Steuersignal nicht vorliegt, damit die Adreßdaten A0''–A7'' der niedrigeren 8 Bits durch das Rechenelement 28' verarbeitet
werden können.
-
Andererseits
sind die oberen 8 Bits A8–A15 der
Adreßdaten
mit dem Ausgang des Wählelementes 30 gekoppelt,
wodurch, wenn das Steuersignal angelegt wird, die Adreßdaten (zweite
Adreßdaten) von
insgesamt 16 Bits (A0'–A7' + A8–A15) von
dem Wählelement 30 bzw.
der Adressen-Verarbeitungseinheit 24 ausgegeben. Wenn das
Steuersignal nicht von dem Wählelement 30 angelegt
wird, dann werden die Adreßdaten
(die dritten Adreßdaten)
von 16 Bits (A0''–A7'' +
A8–A15)
ausgegeben.
-
Weiterhin
können
in dem Ausführungsbeispiel
der 7, wie in der 7 in Klammern
dargestellt ist, alle Bits der Adreßdaten A0–A15 durch das Rechenelement 28 und
das Rechenelement 28' logisch
verarbeitet werden.
-
In
dem Ausführungsbeispiel
der 7 sind die ersten Adreßdaten A0–A15 der Zentraleinheit 12 nicht
die Adreßdaten,
bei denen die Programmdaten ausgelesen werden können, wobei normalerweise die
Zentraleinheit versucht diese auszuführen. Das bedeutet, daß die ersten
Adreßdaten
bloß falsche Adreßdaten sind.
Das erste Rechenelement 28 und das zweite Rechenelement 28' vertauscht
bzw. wandelt die ersten Adreßdaten
A0–A15
derart um, daß die
Programmdaten, die die Zentraleinheit 12 normalerweise
versucht auszuführen,
korrekt ausgelesen werden können.
Das ist der Fall, wenn die zweiten Adreßdaten und die dritten Adreßdaten korrekte Adreßdaten sind.
-
In
dem Ausführungsbeispiel
der 7 ist es im Fall, wenn versucht wird, das Programm
gesetzwidrig zu benutzen, erforderlich, nicht nur das erste Rechenelement 28 sondern
auch das zweite Rechenelement 28' zu untersuchen, wodurch der Schwierigkeitsgrad
der Untersuchung weiterhin erhöht
wird.
-
Die
oben beschriebenen Ausführungsbeispiele
sind mit der Adressen-Verarbeitungseinheit 24 in
dem Nur-Lese-Speicher 18 versehen, um die Adressen zu verarbeiten
bzw. abzuändern,
damit sie an der Programmdaten-Speichereinheit 22 angelegt werden
können.
Wie auch immer ist es möglich,
ausgegebene Programmdaten zu verarbeiten, bzw. abzuändern, ebenso
auch bei den Adreßdaten,
wenn die gleiche Idee bei den aus der Programmdaten-Speichereinheit 22 ausgelesenen
Programmdaten angewendet wird.
-
Ein
derartiges Ausführungsbeispiel
ist in 8 gezeigt. Insbesondere in dem Ausführungsbeispiel
der 8 umfaßt
der Nur-Lese-Speicher 18, zusätzlich zu der Programmdaten-Speichereinheit 22,
die Adressen-Verarbeitungseinheit 24 und die Code-Speichereinheit 26 des
Ausführungsbeispiels gemäß 1.
Weiterhin ist der Nur-Lese-Speicher mit einer Ausgabedaten-Verarbeitungseinheit 32 versehen,
wobei die Ausgabedaten-Verarbeitungseinheit 32 die Programmdaten
empfängt,
die von der Programmdaten-Speichereinheit 22 ausgegeben werden,
und wobei die Ausgabedaten-Verarbeitungseinheit 32 eine
vorher festgelegte Programmdatenverarbeitung ausführt. Insbesondere
führt die Ausgabedaten-Verarbeitungseinheit 32 eine
zu der oben beschriebenen Adressen-Verarbeitungseinheit 24 ähnliche
Operation aus, um die aus der Programmdaten-Speichereinheit 22 gelesenen
Programmdaten zu verarbeiten, bzw. zu verändern.
-
In
diesem Fall wird das Steuersignal von der Zentraleinheit 12 an
die Adressen-Verarbeitungseinheit 24 und
die Ausgabedaten-Verarbeitungseinheit 32 angelegt, wobei
die beiden Einheiten 24 und 32 in dem Schritt
S11 in 5 freigegeben werden.
-
Zusätzlich wird
in jedem der Ausführungsbeispiele
die Code-Speichereinheit 26, wie das Code-Erzeugungsmittel
auch, auf dem gleichen Chip des Nur-Lese-Speichers 18 angeordnet. Das
Code-Erzeugungsmittel kann fähig
sein, einen willkürlichen
Code (Daten) an das Rechenmittel zu legen, wodurch die Code-Speichereinheit 26 mit
einer Struktur ersetzt werden kann, bei der willkürliche Daten
durch einen DIP-Schalter und dergleichen oder einem externen Flash
ROM, der willkürliche
Daten in einer Art und Weise speichert, daß die Daten von außen neu
geschrieben werden können,
gesetzt werden können.
-
Weiterhin
ist es in den oben beschriebenen Ausführungsbeispielen im Fall eines
falschen Programms so, daß die
Ausführung
des Programms nach einer vorher festgelegten Zeit zwangsläufig beendet
wird. Jedenfalls kann das Programm nach einer vorher festgelegten
Zeit beendet werden, bzw. kann im Falle eines Spiels die zwangsläufige Beendigung
durch andere Verarbeitungen, wie Parameterwechsel von Zeichen oder
löschgesicherten
Daten des Spieles oder durch Umkehrung des Spieles zu einem Anfangsstadium,
ersetzt werden.
-
Obwohl
die vorliegende Erfindung im Detail gezeigt und beschrieben worden
ist, ist es selbstverständlich,
daß sie
durch die Art der Darstellung und Beispiele nicht auf diese Lösungen beschränkt ist. Der
Erfindungsgedanke und der Schutzbereich der Erfindung sind nur durch
den Wortlaut der anliegenden Ansprüche begrenzt.