JPH10124306A - メモリ装置 - Google Patents

メモリ装置

Info

Publication number
JPH10124306A
JPH10124306A JP8298251A JP29825196A JPH10124306A JP H10124306 A JPH10124306 A JP H10124306A JP 8298251 A JP8298251 A JP 8298251A JP 29825196 A JP29825196 A JP 29825196A JP H10124306 A JPH10124306 A JP H10124306A
Authority
JP
Japan
Prior art keywords
address
program
data
memory
turning point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP8298251A
Other languages
English (en)
Inventor
Masahiro Tokue
正裕 徳江
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Japan Ltd
Original Assignee
Texas Instruments Japan Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Japan Ltd filed Critical Texas Instruments Japan Ltd
Priority to JP8298251A priority Critical patent/JPH10124306A/ja
Publication of JPH10124306A publication Critical patent/JPH10124306A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

(57)【要約】 【課題】 コピー防止機能の信頼性に優れ、かつ汎用性
およびコスト性に優れたメモリ装置を提供する。 【解決手段】このプログラムの流れの中で、アドレス
[B]は不正なコピーをここで攪乱するためのターニン
グ・ポイントとして設定され、このアドレス[B]に至
るまでの経路として8種類のアドレス経路〜が設定
され、これらのアドレス経路〜にそれぞれ対応して
8種類の処理1〜8が割り当てられている。プログラム
の実行シーケンスがターニング・ポイントのアドレス
[B]に達すると、それら8種類のアドレス経路〜
のうちのいずれを通って来たのか判定され、その通って
来たアドレス経路に対応した処理の先頭アドレスへプロ
グラムの実行シーケンスがジャンプする。

Description

【発明の詳細な説明】
【0010】
【発明の属する技術分野】本発明は、プログラムを格納
するメモリ装置に係り、特にコピー防止機能を備えたメ
モリ装置に関する。
【0020】
【従来の技術】一般に、マイクロコンピュータ用のプロ
グラムを保持するための記憶媒体にはROM(Read Onl
y Memory)が使用されている。ROMは、主としてアド
レス・デコーダ、メモリ・セル・アレイおよびデータ出
力回路から構成され、有効なアドレスを入力すると、そ
のアドレスで指定される記憶位置に記憶されているデー
タを読み出し、その読み出したデータを出力するように
なっている。
【0030】つまり、一般のROMにおいては、アドレ
スと記憶データとが1対1の関係で固定しており、どの
順番にアドレスが入力されても、各々のアドレスに対し
て常に決まった1つのデータが出力されるようになって
いる。
【0040】ところで、近年、家庭用ゲーム機等の分野
でコンピュータ・ソフトウェアの不正コピーが問題にな
っている。この種のソフトウェアは、概してROMカー
トリッジやCD−ROM等の記憶媒体に蓄積された形態
で出回っており、誰でも容易に手にすることができる。
ROMの読出しプロトコルは上記のように単純であるか
ら、ROMライタ等を用いることで、ROMに格納され
ているソフトウェアを別の記憶媒体に極く簡単にコピー
することができる。
【0050】そこで、そのような不正コピーを防止する
ための対策が色々と提案されてきている。たとえば、ゲ
ーム用ROMカートリッジによく使われるマスクROM
は一般のEPROMと端子配置が同じで差し替え可能
(ピンコンパチブル)なのが普通であるが、そのような
マスクROMに対して不正コピーの防止のためにあえて
端子配置を変える方法がある。すなわち、図15に示す
ROMの標準端子配置において、たとえばアドレス・ビ
ットA15に割り当てられている1番ピンとアドレス・ビ
ットA10に割り当てられている21番ピンとを相互に入
れ替える。そうすると、ROMライタは、データを正し
く読み出すことができなくなる。
【0060】また、図16に示すように、ROMカート
リッジに暗号ICを組み込む方法もある。ゲーム機本体
側のCPUは、ゲームを始める前にランダムな値(A)
を暗号ICに入力する。暗号ICは、入力された値
(A)について一定の計算を行って、計算結果の値f
(A) をCPUへ返す。CPUは、もちろんその計算式を
知っており、CPU内で計算した値と暗号ICからの解
答f(A) とを照合する。そして、一致すればゲームを開
始し、一致しなければゲームを行わない。
【0070】
【発明が解決しようとする課題】しかしながら、この種
メモリ装置における従来のコピー防止技術はいずれも、
コピー防止機能の信頼性に欠けたり、汎用性に欠ける等
の問題があった。たとえば、図15に示したような端子
配置を変える方法は、プリント基板の改変を伴うだけで
なく、CPUの各端子からROMの各端子までの配線パ
ターンを追うことで容易に解析されてしまう。また、図
16に示したようなROMカートリッジに暗号ICを組
み込む方式は、ゲーム機本体側にも機能の変更を必要と
するため、既に出回っているゲーム機には使えないとい
う不都合がある。
【0080】本発明は、かかる従来技術の問題点に鑑み
てなされたもので、コピー防止機能の信頼性に優れ、か
つ汎用性およびコスト性に優れたメモリ装置を提供する
ことを目的とする。
【0090】
【課題を解決するための手段】上記の目的を達成するた
めに、本発明の第1のメモリ装置は、プログラムを格納
するメモリ装置において、前記プログラムの流れの中で
予め指定した所定のアドレスに至るまでに複数のアドレ
ス経路が設けられており、前記プログラムの実行シーケ
ンスが前記指定アドレスに達するまでに通って来たいず
れかのアドレス経路を判別し、前記判別したアドレス経
路に応じたデータを前記所定のアドレスで出力するよう
にした。
【0100】また、本発明の第2のメモリ装置は、プロ
グラムを格納するメモリ装置において、前記プログラム
のうち予め指定したターニング・ポイントのアドレス以
外のアドレスに対応したデータを保持する第1のメモリ
と、前記ターニング・ポイントのアドレスに対応したデ
ータを格納する第2のメモリと、前記プログラムの実行
シーケンスが前記ターニング・ポイントのアドレスに達
した時に、予め設定されている複数のアドレス経路のう
ちのいずれを通って来たのかを判定し、その通って来た
アドレス経路に応じたデータを前記第2のメモリから読
み出して出力するメモリ制御手段とを有する。
【0110】また、本発明の第3のメモリ装置は、上記
第2のメモリ装置において、前記メモリ制御手段に、前
記プログラムの実行シーケンスが前記複数のアドレス経
路の途中で指定されている通過監視ポイントのアドレス
を通過したか否かを監視するための経路通過監視手段
と、前記プログラムの実行シーケンスが前記ターニング
・ポイントのアドレスに達した時に前記経路通過監視手
段の出力に応じて前記プログラムの実行シーケンスの通
って来たアドレス経路を判別する通過経路判別手段とが
含まれていることを特徴とする。
【0120】また、本発明の第4のメモリ装置は、上記
第1ないし第3のいずれかのメモリ装置において、前記
プログラムには前記複数のアドレス経路にそれぞれ対応
した複数の処理手順が設けられ、前記ターニング・ポイ
ントで出力されるデータは前記プログラムの実行シーケ
ンスがそれまで通って来たアドレス経路に対応する処理
手順へ分岐するためのジャンプ命令を表すデータである
ことを特徴とする。
【0130】また、本発明の第5のメモリ装置は、共通
のアドレス・バスおよびデータ・バスを介して中央演算
処理装置と他のメモリ装置または周辺装置とに接続さ
れ、プログラムを格納するメモリ装置において、前記メ
モリ装置に割り当てられているアドレスのうち予め指定
したターニング・ポイントのアドレス以外のアドレスに
対応したデータを保持する第1のメモリと、前記ターニ
ング・ポイントのアドレスに対応したデータを格納する
第2のメモリと、前記プログラムの流れの中で前記ター
ニング・ポイントのアドレスに至るまでに前記中央演算
処理装置が前記他のメモリ装置または周辺装置内の所定
の1つまたは複数のアドレスにアクセスして書き込みま
たは読み出したデータを取り込んで保持するデータ保持
手段と、前記プログラムの実行シーケンスが前記第1の
アドレスに達した時に、前記データ保持手段に保持され
ている前記データの内容に応じたデータを前記第2のメ
モリから読み出して出力するメモリ制御手段とを有す
る。
【0140】
【発明の実施の形態】以下、図1〜図14を参照して本
発明の実施例を説明する。
【0150】図1に、本発明の一実施例によるメモリ装
置を適用した家庭用ゲーム機のシステム構成を示す。
【0160】このシステムにおいて、CPU(中央演算
処理装置)10、RAM12、I/Oポート14、ジョ
イスティックまたはキー・パッド(JOY KEY 1 ,JOY KE
Y 2)およびCRTコントローラ16はゲーム機本体に
内蔵されるかまたは付属している。テレビ受像機18
は、ゲーム機本体と電気ケーブルを介して接続される。
ROM装置20は、任意のゲーム用ソフトウェアを格納
または記憶する本実施例のメモリ装置であり、たとえば
ゲーム機本体のスロットに着脱自在に装填可能なROM
カートリッジに内蔵されている。CPU10は、たとえ
ば16ビット幅のアドレス・バス22、たとえば8ビッ
ト幅のデータ・バス24および所要の制御線26を介し
て各部と電気的に接続されている。
【0170】図2に、ROM装置20に格納されている
ソフトウェアまたはプログラムのフローチャートを簡略
的に示す。
【0180】このプログラムは、たとえば砲弾を敵側の
或る目的物に当てるゲームに係るものである。ステップ
S1 ではJOY KEY が操作されたのか否かを判断し、ステ
ップS2 では砲弾が何かに当たったのかどうかを判断
し、ステップS3 では被弾した相手が敵か味方かを判断
する。
【0190】このプログラムの流れの中で、所定箇所の
アドレス[A,B,ア,イ,ウ,エ]が指定されてい
る。アドレス[B]は、不正なコピーをここで攪乱する
ためのターニング・ポイントとして設定されている。ア
ドレス[A]および[ア,イ,ウ,エ]は、プログラム
の実行シーケンスがアドレス[B]に達するまでに通っ
たアドレス経路を割り出すための経路入口および通過監
視ポイントとしてそれぞれ設定されている。説明の便宜
上、16進表示で、Aは1000番地、アは2000番
地、イは3000番地、ウは4000番地、エは500
0番地、Bは6000番地であるとする。プログラムの
実行シーケンスは、CPU10内のプログラムカウンタ
の値の変遷に対応している。
【0200】図3に示すように、本実施例では、ターニ
ング・ポイントのアドレス[B]に至るまでのアドレス
経路として8種類の経路〜が設定されており、これ
らのアドレス経路〜にそれぞれ対応して8種類の処
理1〜8が割り当てられている。プログラムの実行シー
ケンスがターニング・ポイントのアドレス[B]に達す
ると、それら8種類のアドレス経路〜のうちのいず
れを通って来たのか判定され、その通って来たアドレス
経路に対応した処理の先頭アドレス(たとえば処理1は
7000番地)へプログラムの実行シーケンスがジャン
プするようになっている。
【0210】図4に、本実施例におけるROM装置20
内の回路構成を示す。このROM装置20は、1チップ
の集積回路として構成されてよく、その中にたとえばマ
スクROMからなる2つのROM30,32を設けてい
る。これらのROM30,32より読み出されたデータ
は、ROM切替制御部34のセレクタ36により択一的
に選択されてデータ・バス24上に出力されるようにな
っている。
【0220】一方のROM30は、このプログラムの中
でターニング・ポイントとして指定されているアドレス
[B]以下3つのアドレス(6000,6001,60
02番地)を除く全ての有効アドレスに対応したデータ
を保持する主ROMである。
【0230】この主ROM30は、アドレス・バス22
に直接接続され、CPU10がこのROM装置20にア
クセスする度毎に、CPU10からの16ビットのアド
レス信号ADDを入力し、そのアドレス信号ADDによ
って指定される記憶位置から8ビットのデータを読み出
す。ターニング・ポイント以外のアドレスでプログラム
が進行している限り、つまりCPU10内のアドレスカ
ウンタが6000〜6002番地以外のアドレスを指し
ている限り、主ROM30より読み出されたデータはそ
のままセレクタ36を通ってデータ・バス24上に出力
される。
【0240】なお、主ROM30において、ターニング
・ポイント以下3つのアドレス(6000〜6002番
地)に対応する記憶位置には、何のデータも格納してお
く必要はないが、無意味なダミーのデータを格納してお
くのもよい。
【0250】他方のROM32は、ターニング・ポイン
ト以下3つのアドレス(6000〜6002番地)に対
応した複数のデータを保持する副ROMである。図7に
示すように、この実施例では、上記8種類の処理1〜8
へそれぞれ分岐するための8種類の3バイトのジャンプ
命令「BR 7000 」,「BR 8000 」, ……「BR E000 」が
副ROM32に格納されている。この例では、全て無条
件ジャンプ命令としているが、条件付きジャンプ命令で
ももちろん構わない。
【0260】プログラムの実行シーケンスがターニング
・ポイントのアドレス[B]まで来ると、ROM切替制
御部34の制御の下で、それまで通って来たアドレス経
路に応じて副ROM32より上記8種類のジャンプ命令
の中のいずれか1つ(3バイト)が3回のメモリサイク
ルで読み出され、その読み出されたジャンプ命令のデー
タがセレクタ36を通ってデータ・バス24上に出力さ
れ、CPU10に取り込まれるようになっている。
【0270】ROM切替制御部34は、上記した出力セ
レクタ36の外に、デコーダ38、カウンタ40、指定
アドレス[A,B,ア,イ,ウ,エ]にそれぞれ対応す
る個数(6個)のアドレス・コンパレータ42〜52、
カウンタ56、セレクタ54および複数個(たとえば7
個)の2ビット容量のレジスタReg1〜Reg7を有
している。
【0280】アドレス・コンパレータ42は、経路入口
の指定アドレス[A]に相当する16ビットの比較基準
値<A>(1000番地)を有しており、CPU10か
らのアドレス信号ADDの値が該比較基準値<A>と一
致した時、たとえばHレベルの一致信号CLA を出力す
る(図5の(a))。アドレス・コンパレータ42より
一致信号CLA が出力されると、この信号CLA に応動
してカウンタ56がリセットされ、その3ビットのカウ
ント出力JKが初期値「0」つまり(000)に戻るように
なっている。
【0290】アドレス・コンパレータ44は、ターニン
グ・ポイントの指定アドレス[B]に相当する16ビッ
トの比較基準値<B>(6000番地)を有しており、
CPU10からのアドレス信号ADDの値が該比較基準
値<B>と一致した時に、たとえばHレベルの一致信号
CLB を出力する(図5の(b))。そうすると、この
アドレス・コンパレータ44からの一致信号CLB に応
動してカウンタ40がリセットされ、その3ビットのカ
ウント出力Fが初期値「0」(000) に戻るようになって
いる。
【0300】アドレス・コンパレータ46は、通過監視
ポイントの指定アドレス[ア]に相当する16ビットの
比較基準値<ア>(2000番地)を有しており、CP
U10からのアドレス信号ADDの値が該比較基準値<
ア>と一致した時に、たとえばHレベルの一致信号C
(ア) を出力すると同時に、固有の値たとえば「0」(00)
を有する2ビットの通過検出データD(ア) を出力する
(図5の(c))。
【0310】他のアドレス・コンパレータ48,50,
52も、それぞれ対応する指定アドレス[イ],
[ウ],[エ]について上記アドレス・コンパレータ4
6と同様に動作する。そして、これらのアドレス・コン
パレータ48,50,52より出力される2ビットの通
過検出データD(イ) ,D(ウ) ,D(エ) も、それぞれ固有
の値「1」(01),[2](10),[3](11)を有してい
る。
【0320】アドレス・コンパレータ46〜52の中の
いずれか1つより一致信号Cおよび通過検出データDが
出力されると、該一致信号Cはカウンタ56に入力さ
れ、該通過検出データDはセレクタ54に入力される。
カウンタ56は、一致信号Cに応動してカウント値JK
を1つ増やす。セレクタ54は、入力した通過検出デー
タDを、出力側の2ビット・レジスタReg1〜Reg
7の中でカウンタ56からのカウント出力JKの値に対
応するレジスタRegにロードする。たとえば、カウン
タ56からのカウント出力JKの値が「1」(001) であ
るときは、Reg1に通過検出データDをロードする。
【0330】このように、プログラムの実行シーケンス
が経路入口のアドレス[A]を通過した時点でアドレス
・コンパレータ42からの一致信号CLA によりカウン
タ56が初期化(リセット)され、それ以後、実行シー
ケンスが通過監視ポイントのアドレス[ア,イ,ウ,
エ]のいずれか1つを通過する度毎に、アドレス・コン
パレータ46〜52のいずれか1つより出力される2ビ
ットの通過検出データDをカウンタ56とセレクタ54
との協働で1データずつ2ビット・レジスタReg1,
2…に順次割り振って格納するようになっている。
【0340】したがって、プログラムの実行シーケンス
がターニング・ポイントのアドレス[B]に来た時のレ
ジスタReg1〜7全体に格納されているデータ(集計
データ)およびカウンタ56の出力JKの値(最終カウ
ント値)は、図6に示すようになる。
【0350】たとえば、アドレス経路を通ってアドレ
ス[B]に到達する場合、先ず経路入口のアドレス
[A]でカウンタ56のカウント出力JKが値「0」(0
00) に初期化され、途中の通過監視ポイントのアドレス
[エ]でアドレス・コンパレータ52より一致信号C
(エ) および値「3」(10)の通過検出データD(エ) が出力
される。これにより、カウンタ56の出力JKの値は
「3」(011) になり、コンパレータ52からの値「3」
(11)の通過検出データD(エ) はセレクタ54を介して第
1のレジスタReg1にロードされる。
【0360】その後、通過監視ポイントのアドレス
[イ]でアドレス・コンパレータ48より一致信号C
(イ) および値「1」(01)の通過検出データD(イ) が出力
される。そうすると、カウンタ56の出力JKの値は
「2」(010) になり、コンパレータ48からの値「1」
(01)の通過検出データD(イ) はセレクタ54を介して第
2のレジスタReg2にロードされる。その後、プログ
ラムの実行シーケンスはいずれの通過監視ポイントを経
由することなくターニング・ポイントのアドレス[B]
に達する。
【0370】したがって、第1のレジスタReg1に格
納された値「3」(11)の通過検出データD(エ) と第2の
レジスタReg2に格納された値「1」(01)の通過検出
データD(イ) を合わせたものがレジスタReg1〜7全
体の集計データとなり、カウンタ56の出力JKの値
「2」(010) が最終カウント値となる。これら集計デー
タと最終カウント値は、後述するデコーダ38で解読さ
れる。
【0380】図6には、各アドレス経路〜毎にレジ
スタ群Reg1〜7より得られる集計データとカウンタ
56より得られる最終カウント値とに対応するデコーダ
38の3ビット出力DEの値も示されている。たとえば
実行シーケンスがアドレス経路を通ってアドレス
[B]に到達した時のデコード出力DEは「4」(100)
である。デコーダ38からのデコード出力DEは、副R
OM32にロウ・アドレス信号として与えられる。
【0390】カウンタ40は、CPU10からの読み出
し制御信号RE- をクロック入力端子に受け取り、RE
- がイネーブル(Lレベル)になる度毎にカウント値を
1つ増やし、3ビットのカウント出力F(F2,F1,F0)
を発生する。このカウンタ40からの3ビット出力のう
ち最上位の1ビットF2 は切替制御信号としてセレクタ
36に与えられ、下位の2ビット(F1,F0 )はカラム
・アドレス信号として副ROM32に与えられる。
【0400】上記したように、プログラムの実行シーケ
ンスがアドレス[B]に来た時にアドレス・コンパレー
タ44より出力される一致信号CLB に応動してカウン
タ40がリセットされ、そのカウント値Fが初期値
「0」(000) に戻る。これで、最上位ビット(切替制御
信号)F2 が“0”になり、セレクタ36は主ROM3
0側(入力a)から副ROM32側(入力b)に切り替
わる。
【0410】この直後にCPU10からの読み出し制御
信号RE- がイネーブル(レベル)になると、カウンタ
40の下位2ビット(FK1,FK0 )の値が「1」(01)
に変わる。副ROM32においては、デコーダ38から
のアドレス経路〜のいずれか1つに対応する値のロ
ウ・アドレス信号DEとカウンタ40からの値「1」(0
1)のカラム・アドレス信号(FK1,FK0 )とで指定さ
れる記憶番地より8ビットつまり1バイトのデータを読
み出す。
【0420】図7から理解されるように、たとえば、デ
コーダ38からのロウ・アドレス信号DEの値が「4」
(これは経路に対応する)の場合、値「1」(01)のカ
ラム・アドレス信号(FK1,FK0 )に応じて副ROM
32より読み出されるデータは「8C」である。こうし
て副ROM32より読み出された1番目のデータ(「8
C」)は、セレクタ36を通ってデータ・バス24上に
送出される。
【0430】次のメモリアクセスで、読み出し制御信号
RE- がイネーブル(Lレベル)になると、副ROM3
2はデコーダ38からの上記と同じ値(「4」)のロウ
・アドレス信号DEとカウンタ40からの値「2」(10)
のカラム・アドレス信号(FK1,FK0 )とで指定され
る記憶位置より1バイトのデータ(「B0」)を読み出
す。こうして副ROM32より読み出された2番目のデ
ータ(「B0」)も、セレクタ36を通ってデータ・バ
ス24上に送出される。
【0440】次のメモリアクセスで、読み出し制御信号
RE- がイネーブル(Lレベル)になると、副ROM3
2はデコーダ38からの上記と同じ値(「4」)のロウ
・アドレス信号DEとカウンタ40からの値「3」(11)
のカラム・アドレス信号(FK1,FK0 )とで指定され
る記憶番地より1バイトのデータ(「00」)を読み出
す。この3番目に読み出されたデータ(「00」)も、
セレクタ36を通ってデータ・バス24上に送出され
る。
【0450】次のメモリアクセスで、読み出し制御信号
RE- がイネーブル(Lレベル)になると、カウンタ4
0のカウント値Fが「4」(100) になり、最上位ビット
の切替制御信号F2 が「1」になる。これにより、セレ
クタ36は主ROM30側に切り替わり、主ROM30
からの読出しデータがデータ・バス24上に出力され
る。副ROM32においては、カウンタ40より値
「0」(00)のカラム・アドレス信号(FK1,FK0 )が
入力されるが、そのカラム・アドレスに対応する記憶番
地には記憶データがないので、実質的な読み出し動作を
行わなくなる。
【0460】以後、CPU10のメモリアクセスによっ
て読み出し制御信号RE- が何度イネーブルになって
も、アドレス・コンパレータ44からの一致信号CLB
によって再びリセットされるまでカウンタ40は値
「4」(100) ないし「7」(111) の上限値を保持し、セ
レクタ36は主ROM30側に切り替わったままとな
る。
【0470】このように、プログラムの実行シーケンス
がストップ・ポイントのアドレス[B]に達すると、そ
こから3つ連続したメモリサイクルで副ROM32より
3バイトのデータつまりジャンプ命令(上記の例では
「BR B000」)が読み出されてデータ・バス24上に出力
される。したがって、そのジャンプ命令(「BR B000」)
で指定された分岐先のアドレス(B000番地)がCP
U10内のプログラムカウンタにセットされ、プログラ
ムの実行シーケンスはその分岐先の処理(処理5)に移
ることになる。この処理(処理5)は、これまでのシー
ケンス、つまりメモリアクセスの通って来た経路(経路
)で実行されて来たシーケンスの続きの処理として実
行されることになる。
【0480】図8に、プログラムの実行シーケンスがア
ドレス経路を通ってアドレス[B]に達した場合の主
ROM30と副ROM32の読出しデータの切り替えの
様子を示す。他のアドレス経路〜を通ってアドレス
[B]に達した場合にも、副ROM32より読み出され
るデータ(ジャンプ命令)が変わるだけで同様の動作が
行われる。
【0490】上記したように、本実施例では、ROM装
置20に格納されるプログラムの中で予めターニング・
ポイントとして指定されたアドレス[B]にプログラム
の実行シーケンスが来た時に、それまでメモリアクセス
が辿って来たアドレス経路がROM装置20内で判別さ
れ、その判別されたアドレス経路に応じた処理へ実行シ
ーケンスを分岐させるためのジャンプ命令(データ)が
ROM装置20より出力される。
【0500】このようなROM装置20内の仕組みを外
部から解析することはほとんど不可能である。すなわ
ち、ROM装置20に格納されているプログラムをコピ
ーしようとして、ROM装置20にアドレスを適当な順
序で入力すると、一応各アドレスに対してROM装置2
0よりデータが出力されるので、別のコピー用ROMに
書き写すことは可能である。しかし、そのようなコピー
ROMでプログラムを走らせても、ターニング・ポイン
トのアドレス[B]で適切なジャンプ命令が出ないた
め、正常に動作し得ない。特に、ROMライタは、決ま
った順序またはアドレス経路でしかメモリアクセスを行
わないため、ターニング・ポイントのアドレス[B]で
1種類のデータしかコピーできないことになる。
【0510】このように、ROM装置20に格納されて
いるプログラムを不正にコピーしようとしても、ターニ
ング・ポイントでデータが不定になるため、事実上コピ
ーはできないということになる。
【0520】また、本実施例による不正コピー防止機能
はROM装置20に備わっており、CPU10に特段の
機能や動作を要求することはなく、当該家庭ゲーム機本
体に特別な回路の追加や変更を必要とするわけでもな
い。したがって、汎用性に優れており、コスト的にもR
OM装置20は1チップで構成され安価に収まる。
【0530】本実施例におけるプログラムでは、複数の
アドレス経路を共通のターニング・ポイントでいったん
終端させ、ターニング・ポイントの直後に各アドレス経
路で実行されてきた処理に連続または対応する処理が行
われる。プログラムの実行シーケンスがターニング・ポ
イントに達するまでに通ったアドレス経路をROM装置
20内のROM切替制御部34が判別するため、そのぶ
んCPUまたはソフトウェアの負担が軽くなっている。
【0540】図9に、本実施例の手法を用いないで本実
施例のプログラム(図2)と同様のゲーム機能を奏する
従来のプログラムのフローチャートを示す。このプログ
ラムでは、ループカウンタが使用され、ソフトウェア的
な条件付きジャンプ命令も多用されており、プログラム
が複雑化し、CPUの負担が大きくなる。
【0550】上記した実施例では、プログラムの流れの
中でターニング・ポイントに至るまでに複数のアドレス
経路を設け、ROM装置20内に、プログラムの実行シ
ーケンスがそれらのアドレス経路の途中で指定されてい
る通過監視ポイントのアドレスを通過したか否かを監視
するための経路通過監視手段を設けていた。しかし、後
述する本発明の別の実施例では、ターニング・ポイント
に至るまでに複数のアドレス経路が設定されていなくて
も、CPU10がRAM12またはI/Oポート14内
の所定の番地にアクセスした際の書込みまたは読出しデ
ータの内容を基に、ターニング・ポイントからの分岐先
を決定することが可能である。
【0560】以下、図10〜図13につき本発明の第2
の実施例を説明する。なお、これらの図において、上記
した第1の実施例のものと同様の構成・機能を有する部
分には同一の符号を付してある。
【0570】図12に、上記ゲーム機システム(図1)
のCPU10におけるアドレス・マップの一例を示す。
この例では、I/Oポート14に0000〜0FFF番
地、ROM装置20に1000〜EFFF番地、RAM
12にF000〜FFFF番地がそれぞれ割り振られて
いる。
【0580】I/Oポート14のアドレスのうち002
0番地と0040番地にはそれぞれJOY KEY 1 ,JOY KE
Y 2 のステータス情報《S1 》,《S2 》が割り当てら
れ、各JOY KEY が押されたときは「00」、押されない
ときは「01」のデータ《S1 》,《S2 》がI/Oポ
ート14からCPU10に取り込まれる。RAM12の
アドレスのうちF030番地には弾の位置を表すデータ
《S3 》(「00」〜「FF」)が格納され、FO50
番地には被弾した相手のステータス情報《S4》(「0
0」は味方、それ以外の値は敵)が格納される。
【0590】図10に、この実施例におけるプログラム
のフローチャートを示す。このプログラムにおいて、ス
テップS1 では、JOY KEY 1 が押されたのか否かが判断
される。この場合、CPU10は、I/Oポート14の
0020番地にアクセスしてデータ《S1 》を取り込
み、データ《S1 》が「00」のときはJOY KEY 1 が押
されていると判定し、データ《S1 》が「01」のとき
はJOY KEY 1 が押されていないと判定する。
【0600】次に、ステップS2 では、JOY KEY 2 が押
されたのか否かが判断される。この場合、CPU10
は、I/Oポート14の0040番地からデータ《S2
》を取り込み、その取り込んだデータ《S2 》が「0
0」のときはJOY KEY 2 が押されていると判定し、デー
タ《S2 》が「01」のときはJOY KEY 2 が押されてい
ないと判定する。
【0610】次に、ステップS3 では、味方より発した
砲弾が何かに当たったのかどうか判断される。この場
合、CPU10は、前以てRAM12のF030番地に
格納されているデータ《S3 》を読み出し、そのF03
0番地のデータ《S3 》が「80」未満であれば弾が何
かに当たっていると判定し、データ《S3 》が「80」
以上のときは弾が何にも当たっていないと判定する。
【0620】次に、ステップS4 では、今回被弾したも
のは敵側か味方側か判断される。この場合、CPU10
は、前以てRAM12のF050番地に格納されている
データ《S4 》を読み出し、データ《S4 》が「00」
であれば味方側と判定し、データ《S4 》がそれ以外の
値であれば敵側と判定する。
【0630】この実施例では、プログラムの実行シーケ
ンスがターニング・ポイントのアドレス[B]に来る
と、上記のステップS1 〜S4 でCPU10がI/Oポ
ート14およびRAM12の所定のアドレスから取り込
んだデータ《S1 》〜《S4 》の内容または値が検証さ
れ、その検証結果にしたがって処理1〜7のいずれかに
プログラムの実行シーケンスがジャンプするようになっ
ている。
【0640】図11に、この実施例におけるROM装置
20内の回路構成を示す。この実施例のROM装置20
では、上記実施例と同様の主ROM30,副ROM3
2、セレクタ36、カウンタ40およびターニング・ポ
イントのアドレス[B]に対応するアドレス・コンパレ
ータ44が設けられている。このROM装置20におけ
るROM切替制御部60は、上記セレクタ36、カウン
タ40およびアドレス・コンパレータ44の外に、上記
ステップS1 〜S4 におけるポートアドレスまたはRA
Mアドレス(0020番地,0040番地,F030番
地、F050番地)にそれぞれ対応するアドレス・コン
パレータ62,64,66,68と、データ《S1 》〜
《S4 》にそれぞれ対応する8ビット・レジスタRe
g.a〜Reg.dと、上記検証のためのデコーダ70
とを含んでいる。
【0650】ステップS1 でCPU10がI/Oポート
14内の0020番地にアクセスするために該アドレス
を指定するアドレス信号ADDをアドレス・バス22上
に送出すると、このアドレス信号ADDがROM装置2
0にも入力され、アドレス・コンパレータ62より一致
信号C(a) が出力される。この一致信号C(a) によって
レジスタReg.aが入力イネーブル状態となる。そし
て、I/Oポート14の0020番地からのデータ《S
1 》が、データ・バス24を介してCPU10に取り込
まれると同時に、ROM装置20にも入力され、レジス
タReg.aにロードされる。
【0660】その後、ステップS2 でCPU10がI/
Oポート14内の0040番地を指定するアドレス信号
ADDをアドレス・バス22上に送出すると、このアド
レス信号ADDがROM装置20にも入力され、アドレ
ス・コンパレータ64より一致信号C(b) が出力され
る。この一致信号C(b) によってレジスタReg.bが
入力イネーブル状態となる。そして、I/Oポート14
の0040番地からのデータ《S2 》が、データ・バス
24を介してCPU10に取り込まれると同時にROM
装置20にも入力され、レジスタReg.bにロードさ
れる。
【0670】その後、ステップS3 でCPU10がRA
M12内のF030番地を指定するアドレス信号ADD
をアドレス・バス22上に送出すると、このアドレス信
号ADDがROM装置20にも入力され、アドレス・コ
ンパレータ66より一致信号C(c) が出力される。この
一致信号C(c) に応動してレジスタReg.cが入力イ
ネーブル状態となる。そして、I/Oポート14のF0
30番地からのデータ《S3 》が、データ・バス24を
介してCPU10に取り込まれると同時に、ROM装置
20にも入力され、レジスタReg.cにロードされ
る。
【0680】その後、ステップS4 でCPU10がRA
M12内のF050番地を指定するアドレス信号ADD
をアドレス・バス22上に送出すると、このアドレス信
号ADDがROM装置20にも入力され、アドレス・コ
ンパレータ68より一致信号C(d) が出力される。この
一致信号C(d) に応動してレジスタReg.dが入力イ
ネーブル状態となる。そして、I/Oポート14のF0
50番地からのデータ《S4 》が、データ・バス24を
介してCPU10に取り込まれると同時に、ROM装置
20にも入力され、レジスタReg.dにロードされ
る。
【0690】したがって、プログラムの実行シーケンス
がターニング・ポイントのアドレス[B]に来た時に
は、レジスタReg.a〜dにそれぞれステップS1 〜
S4 でCPU10の取り込んだデータと同一のデータ
《S1 》〜《S4 》が格納されており、デコーダ70か
らはそれらのデータ《S1 》〜《S4 》の内容または組
み合わせに応じたデコード出力(ロウ・アドレス信号)
DEが得られる。
【0700】一方、ターニング・ポイントのアドレス
[B]では、上記実施例と同様に、アドレス・コンパレ
ータ44より一致信号CLB が出力され、カウンタ40
が初期化される。そして、アドレス[B]以下3つのア
ドレス(6000〜6002番地)にわたって、カウン
タ40よりカラム・アドレス信号が副ROM32に供給
され、副ROM32よりロウ・アドレス信号(デコード
出力)DEの値に対応した3バイトのジャンプ命令が読
み出され、セレクタ36よりデータ・バス24上に出力
される。
【0710】図13に、この実施例においてレジスタR
eg.a〜dに格納されるデータ《S1 》〜《S4 》の
内容(組み合わせ)と分岐先の番地(処理1〜7)との
対応関係を示す。
【0720】この実施例でも、ROM装置20内の仕組
み、特にROM切替制御部60における切替制御のアル
ゴリズムを外部から知ることはできず、ROMライタ等
でアドレス経路を辿ってもターニング・ポイントのアド
レス[B]で完全または適確なデータが得られないた
め、事実上コピーは不可能である。また、この実施例に
よる不正コピー防止機能もROM装置20に備わってお
り、汎用性およびコスト性に優れている。さらに、この
実施例によれば、ターニング・ポイントに至るまでのア
ドレス経路が1本でも可能であるため、プログラムをよ
り簡略化できるという利点もある。
【0730】図14に、本実施例の手法を用いないで本
実施例のプログラム(図10)と同様のゲーム機能を奏
する従来のプログラムのフローチャートを参考として示
す。
【0740】上記した実施例では、ターニング・ポイン
トが一箇所だけであったが、1つのプログラム内に複数
のターニング・ポイントを設けてもよい。また、上記第
1実施例の方式と第2実施例の方式とを併用してもよ
い。
【0750】上記実施例ではターニング・ポイントでジ
ャンプ命令を出すようにしたが、これに限るものではな
く、たとえばいったんジャンプ命令以外のデータを出し
ておいて、後で該データの値に基づいた条件付きのジャ
ンプ命令を行うことも可能である。
【0760】上記実施例は、家庭ゲーム機用のROMカ
ートリッジに組み込まれるROM装置に係るものであっ
たが、これは一例にすぎない。本発明は、メモリカー
ド、ICカード、コンピュータ用ROM(BIOS用R
OM、制御用ROM)、業務用ゲーム機向けROMやE
PROM、E2 ROM等にも可能であり、さらにはRA
Mや種々の周辺メモリ装置等にも適用可能である。
【0770】
【発明の効果】以上説明したように、本発明のメモリ装
置によれば、プログラムの実行シーケンスが予め指定し
ているターニング・ポイントのアドレスに達した時に、
それまで通って来たアドレス経路に応じて、あるいはそ
れまで中央演算処理装置が他のメモリ装置または周辺装
置内の所定のアドレスについて書き込みまたは読み出し
たデータの内容に応じて、本メモリ装置より異なるデー
タを出力するようにしたので、該プログラムの不正なコ
ピーを確実かつ安価に防止することができる。しかも、
中央演算処理装置等の他の装置に何ら追加や改変を要し
ないので、種々のシステムに適用可能であり、汎用性の
面でも優れている。
【図面の簡単な説明】
【図1】本発明の一実施例によるメモリ装置を適用した
家庭用ゲーム機のシステム構成を示すブロック図であ
る。
【図2】実施例のROM装置に格納されるプログラムの
フローチャートを簡略的に示す図である。
【図3】実施例において設定されるアドレス経路とター
ニング・ポイント直後の処理との対応関係を示す図であ
る。
【図4】実施例のROM装置内の回路構成を示すブロッ
ク図である。
【図5】実施例のROM装置における各アドレス・コン
パレータの動作を示すタイミング図である。
【図6】実施例のROM装置において各アドレス経路に
対応する最終カウント値、レジスタの内容およびデコー
ド出力を示す図である。
【図7】実施例のROM装置において副ROM内のアド
レスと記憶データとの対応関係を示す図である。
【図8】実施例のROM装置においてターニング・ポイ
ント付近で主ROMと副ROMとが切り替わるときの動
作を示すタイミング図である。
【図9】実施例の手法を用いない従来のプログラムのフ
ローチャートを示す図である。
【図10】本発明の第2の実施例によるROM装置に格
納されるプログラムのフローチャートを簡略的に示す図
である。
【図11】第2の実施例によるROM装置内の回路構成
を示すブロック図である。
【図12】第2の実施例におけるCPUのメモリマップ
を示す図である。
【図13】第2の実施例のROM装置においてターニン
グ・ポイントにおけるレジスタの内容と分岐先との対応
関係を示す図である。
【図14】第2の実施例の手法を用いない従来のプログ
ラムのフローチャートを示す図である。
【図15】従来の不正コピー防止方法の一例を説明する
ためのピン端子配置図である。
【図16】従来の別の不正コピー防止方法の一例を説明
するための家庭用ゲーム機を模式的に示す図である。
【符号の説明】
10 CPU 12 RAM 14 I/Oポート 16 CRTコントローラ 30 主ROM 32 副ROM 34 ROM切替制御部 36 セレクタ 38 デコーダ 40 カウンタ 42〜52 アドレス・コンパレータ 56 カウンタ 60 ROM切替制御部 62〜68 アドレス・コンパレータ 70 デコーダ Reg1〜7 2ビット・レジスタ Reg.a〜d 8ビット・レジスタ

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 プログラムを格納するメモリ装置におい
    て、 前記プログラムの流れの中で予め指定した所定のアドレ
    スに至るまでに複数のアドレス経路が設けられており、
    前記プログラムの実行シーケンスが前記指定アドレスに
    達するまでに通って来たいずれかのアドレス経路を判別
    し、前記判別したアドレス経路に応じたデータを前記所
    定のアドレスで出力するようにしたメモリ装置。
  2. 【請求項2】 プログラムを格納するメモリ装置におい
    て、 前記プログラムのうち予め指定したターニング・ポイン
    トのアドレス以外のアドレスに対応したデータを保持す
    る第1のメモリと、 前記ターニング・ポイントのアドレスに対応したデータ
    を格納する第2のメモリと、 前記プログラムの実行シーケンスが前記ターニング・ポ
    イントのアドレスに達した時に、予め設定されている複
    数のアドレス経路のうちのいずれを通って来たのかを判
    定し、その通って来たアドレス経路に応じたデータを前
    記第2のメモリから読み出して出力するメモリ制御手段
    とを有するメモリ装置。
  3. 【請求項3】 前記メモリ制御手段に、前記プログラム
    の実行シーケンスが前記複数のアドレス経路の途中で指
    定されている通過監視ポイントのアドレスを通過したか
    否かを監視するための経路通過監視手段と、前記プログ
    ラムの実行シーケンスが前記ターニング・ポイントのア
    ドレスに達した時に前記経路通過監視手段の出力に応じ
    て前記プログラムの実行シーケンスの通って来たアドレ
    ス経路を判別する通過経路判別手段とが含まれているこ
    とを特徴とする請求項2に記載のメモリ装置。
  4. 【請求項4】 前記プログラムには前記複数のアドレス
    経路にそれぞれ対応した複数の処理手順が設けられ、前
    記ターニング・ポイントで出力されるデータは前記プロ
    グラムの実行シーケンスがそれまで通って来たアドレス
    経路に対応する処理手順へ分岐するためのジャンプ命令
    を表すデータであることを特徴とする請求項1ないし3
    項のいずれかに記載のメモリ装置。
  5. 【請求項5】 共通のアドレス・バスおよびデータ・バ
    スを介して中央演算処理装置と他のメモリ装置または周
    辺装置とに接続され、プログラムを格納するメモリ装置
    において、 前記メモリ装置に割り当てられているアドレスのうち予
    め指定したターニング・ポイントのアドレス以外のアド
    レスに対応したデータを保持する第1のメモリと、 前記ターニング・ポイントのアドレスに対応したデータ
    を格納する第2のメモリと、 前記プログラムの流れの中で前記ターニング・ポイント
    のアドレスに至るまでに前記中央演算処理装置が前記他
    のメモリ装置または周辺装置内の所定の1つまたは複数
    のアドレスにアクセスして書き込みまたは読み出したデ
    ータを取り込んで保持するデータ保持手段と、 前記プログラムの実行シーケンスが前記第1のアドレス
    に達した時に、前記データ保持手段に保持されている前
    記データの内容に応じたデータを前記第2のメモリから
    読み出して出力するメモリ制御手段とを有するメモリ装
    置。
JP8298251A 1996-10-22 1996-10-22 メモリ装置 Withdrawn JPH10124306A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8298251A JPH10124306A (ja) 1996-10-22 1996-10-22 メモリ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8298251A JPH10124306A (ja) 1996-10-22 1996-10-22 メモリ装置

Publications (1)

Publication Number Publication Date
JPH10124306A true JPH10124306A (ja) 1998-05-15

Family

ID=17857208

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8298251A Withdrawn JPH10124306A (ja) 1996-10-22 1996-10-22 メモリ装置

Country Status (1)

Country Link
JP (1) JPH10124306A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013037554A (ja) * 2011-08-09 2013-02-21 Mega Chips Corp メモリシステム、セキュリティメモリおよび情報保護方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013037554A (ja) * 2011-08-09 2013-02-21 Mega Chips Corp メモリシステム、セキュリティメモリおよび情報保護方法

Similar Documents

Publication Publication Date Title
KR100391080B1 (ko) 1칩 마이크로컴퓨터 및 그것을 이용하는 ic 카드
US6101586A (en) Memory access control circuit
AU643944B2 (en) Interfacing device for a computer games system
US5533126A (en) Key protection device for smart cards
US5335331A (en) Microcomputer using specific instruction bit and mode switch signal for distinguishing and executing different groups of instructions in plural operating modes
US5778444A (en) Method and apparatus for reset-sensitive and controlled register write accesses in a data processing system with user and test modes
KR100543268B1 (ko) 컴퓨터 시스템의 보안성을 향상시키는 보안용 코프로세서
JPH0719231B2 (ja) 改良されたアクセス安全装置を備える集積回路
US5155829A (en) Memory system and method for protecting the contents of a ROM type memory
US20050257016A1 (en) Digital signal controller secure memory partitioning
US6874069B2 (en) Microcontroller having an embedded non-volatile memory array with read protection for the array or portions thereof
KR19980069757A (ko) 마이크로프로세서 및 멀티프로세서 시스템
US7447916B2 (en) Blocking of the operation of an integrated circuit
US6076161A (en) Microcontroller mode selection system and method upon reset
US6473853B1 (en) Method and apparatus for initializing a computer system that includes disabling the masking of a maskable address line
JPH10124306A (ja) メモリ装置
EP0471888B1 (en) Microprocessor for enhancing initiation of instruction execution after the execution of conditional branch instruction
JP2004503860A (ja) データ処理方法及び保護された命令の実行のための装置
JP3653474B2 (ja) 遊技機
US5687354A (en) Memory system and method for protecting the contents of a ROM type memory
RU2198424C2 (ru) Микрокомпьютер
US5644781A (en) Microcomputer having a security function for stored data
US20080155248A1 (en) Smart cards including booting mode rotection and methods of operating
JPH0334103B2 (ja)
JP3501129B2 (ja) 制御装置

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20040106