(57)【特許請求の範囲】
【請求項１】
ＣＰＵと書換可能なメモリと書換不能なメモリとを有し、
前記ＣＰＵに依存しない所定の言語で記述されたアプリケーションプログラムを、外部から取り込み、このアプリケーションプログラムを前記書換可能なメモリへ格納する機能と、
所定の言語で記述されたアプリケーションプログラムを、前記ＣＰＵが解釈できる形式に翻訳し、これを前記内蔵ＣＰＵに実行させる機能をもったインタープリタプログラムを用い、前記書換可能なメモリ内に格納されたアプリケーションプログラムを実行する機能と、
を有するＩＣカードにおいて、
メモリ内には、
それぞれ異なる言語の翻訳に対応した複数ｎ個のインタープリタプログラムと、これら各インタープリタプログラムを特定するための複数ｎ個の識別コードと、
前記ｎ個の識別コードを外部に報知する処理を行う報知用プログラムと、
外部からロードアプリケーションコマンドが与えられたときに、所定のアプリケーションプログラムと、当該アプリケーションプログラムの翻訳が可能なインタープリタプログラムを特定するための識別コードと、を外部から取り込み、前記書換可能なメモリへ格納する処理を行うアプリケーション格納プログラムと、
外部からアプリケーション選択コマンドが与えられたときに、前記書換可能なメモリに格納されているいずれかのアプリケーションプログラムを選択する処理を行うアプリケーション選択プログラムと、
外部から特定のアプリケーションに対するコマンドが与えられたときに、前記アプリケーション選択プログラムによって選択されている選択アプリケーションプログラムを、当該選択アプリケーションプログラムについて格納されている識別コードによって特定されるインタープリタプログラムを用いて実行するアプリケーション実行プログラムと、
が格納されていることを特徴とするＩＣカード。
【請求項２】
請求項１に記載のＩＣカードにおいて、
外部装置との間でデータの送受を行うためのＩ／Ｏ信号線を介して、報知用プログラムがｎ個の識別コードを前記外部装置へ伝達することを特徴とするＩＣカード。
【請求項３】
請求項２に記載のＩＣカードにおいて、
外部装置からＣＰＵにリセット信号が与えられた場合に、Ｉ／Ｏ信号線を介して前記外部装置へ前記リセット信号に対する応答信号を返す機能を有し、報知用プログラムが、この応答信号に、ｎ個の識別コードを付加するようにしたことを特徴とするＩＣカード。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はＩＣカードに関し、特に、ＣＰＵとメモリとを有し、メモリ内に格納されたアプリケーションプログラムをＣＰＵによって実行させることにより、種々の処理を行うＩＣカードに関する。
【０００２】
【従来の技術】
キャッシュカードやクレジットカードとして利用されてきた磁気カードに代わって、光カードやＩＣカードが普及し始めている。特に、ＣＰＵを内蔵したＩＣカードは、高度なセキュリティを確保することができるため、高額な商取引にも利用することができる利点を有する。
【０００３】
現在、一般に利用されているＣＰＵを有するＩＣカードには、メモリとして、ＲＯＭ，ＥＥＰＲＯＭ，ＲＡＭが内蔵されている。通常、ＲＯＭには、ＣＰＵに実行させるべき基本的なプログラムが格納され、ＥＥＰＲＯＭには、ユーザデータや種々のアプリケーションプログラムが格納され、ＲＡＭはＣＰＵの作業領域として利用される。ＥＥＰＲＯＭは書換可能なメモリであるため、ここにユーザごとに必要なデータやアプリケーションプログラムを格納することができる。ＩＣカードに内蔵されたＣＰＵは、いわゆるマシン語のコードを直接実行することにより、種々の処理を行う。ところが、アプリケーションプログラムは、通常、ＣＰＵに依存しない汎用言語で記述される。したがって、ＣＰＵは、このアプリケーションプログラムを直接解釈して実行することはできない。そこで、一般的なＩＣカードでは、アプリケーションプログラムをＣＰＵが解釈できる形式に翻訳し、これをＣＰＵに実行させる機能をもった解釈実行用プログラム（インタープリタプログラム）が用意されている。
【０００４】
ＩＣカードにデータやプログラムを書き込んだり、これらを読み出したりする際には、いわゆるリーダライタ装置と呼ばれる外部装置が用いられる。この外部装置とＩＣカードとの間では、物理的な伝送線を介してまたは非接触な伝送路を介して、相互にデータやプログラムの伝送が行われる。通常、外部装置からＩＣカードへの情報伝送は、コマンドという形式で与えられ、種々の指示やデータは、このコマンドの中の一情報としてＩＣカード側へと伝えられる。これに対して、ＩＣカードから外部装置への情報伝送は、レスポンスという形式で与えられ、処理結果やデータは、このレスポンスの中の一情報として外部装置側へと伝えられる。
【０００５】
【発明が解決しようとする課題】
前述したように、従来の一般的なＩＣカードでは、ＲＯＭ内の解釈実行用プログラムを用いて、アプリケーションプログラムをマシン語のコードに逐次翻訳し、これをＣＰＵに実行させるという方式が採られている。したがって、ＲＯＭ内の解釈実行用プログラムが解釈可能な所定の言語で記述されたアプリケーションプログラムであれば、これを常にマシン語のコードに翻訳してＣＰＵに実行させることが可能である。しかしながら、このＲＯＭ内の解釈実行用プログラムが対応していない別な言語で記述されたアプリケーションプログラムについては、全く実行することができない。
【０００６】
従来は、同一のＩＣカードで実行させるアプリケーションプログラムは、すべて同一の言語で記述するのが一般的であった。しかしながら、最近は、ＩＣカードの内蔵メモリの集積度も向上してきており、多数のアプリケーションプログラムをＩＣカード内にロードしておき、必要に応じてこれらを選択して実行させるという環境が一般化しつつある。このような環境下では、同一のＩＣカードで実行させるアプリケーションプログラムをすべて同一の言語で記述するという制約は、ソフトウエアの開発効率を低下させる要因となり好ましくない。特に、最近は、ＪＡＶＡ、ＭＥＬ、といったＣＰＵに依存しない種々の汎用言語が普及しつつあり、個々のアプリケーションプログラムごとに、それぞれ最も適した言語を用いて開発が行われるようになってきている。このため、複数の言語に対応できるＩＣカードが望まれており、また、そのＩＣカードがどのような言語に対応しているかを外部から認識することが可能なＩＣカードが望まれている。
【０００７】
そこで本発明は、複数の言語で記述されたアプリケーションプログラムに対応し、かつ、対応言語を外部から認識することが可能なＩＣカードを提供することを目的とする。
【０００８】
【課題を解決するための手段】
(1)   本発明の第１の態様は、ＣＰＵと書換可能なメモリと書換不能なメモリとを有し、
ＣＰＵに依存しない所定の言語で記述されたアプリケーションプログラムを、外部から取り込み、このアプリケーションプログラムを書換可能なメモリへ格納する機能と、
所定の言語で記述されたアプリケーションプログラムを、ＣＰＵが解釈できる形式に翻訳し、これを内蔵ＣＰＵに実行させる機能をもったインタープリタプログラムを用い、書換可能なメモリ内に格納されたアプリケーションプログラムを実行する機能と、
を有するＩＣカードにおいて、
メモリ内に、
それぞれ異なる言語の翻訳に対応した複数ｎ個のインタープリタプログラムと、これら各インタープリタプログラムを特定するための複数ｎ個の識別コードと、
このｎ個の識別コードを外部に報知する処理を行う報知用プログラムと、
外部からロードアプリケーションコマンドが与えられたときに、所定のアプリケーションプログラムと、当該アプリケーションプログラムの翻訳が可能なインタープリタプログラムを特定するための識別コードと、を外部から取り込み、書換可能なメモリへ格納する処理を行うアプリケーション格納プログラムと、
外部からアプリケーション選択コマンドが与えられたときに、書換可能なメモリに格納されているいずれかのアプリケーションプログラムを選択する処理を行うアプリケーション選択プログラムと、
外部から特定のアプリケーションに対するコマンドが与えられたときに、アプリケーション選択プログラムによって選択されている選択アプリケーションプログラムを、当該選択アプリケーションプログラムについて格納されている識別コードによって特定されるインタープリタプログラムを用いて実行するアプリケーション実行プログラムと、
を格納したものである。
【０００９】
(2)   本発明の第２の態様は、上述の第１の態様に係るＩＣカードにおいて、
外部装置との間でデータの送受を行うためのＩ／Ｏ信号線を介して、報知用プログラムがｎ個の識別コードを外部装置へ伝達するようにしたものである。
【００１０】
(3)   本発明の第３の態様は、上述の第２の態様に係るＩＣカードにおいて、
外部装置からＣＰＵにリセット信号が与えられた場合に、Ｉ／Ｏ信号線を介して外部装置へリセット信号に対する応答信号を返す機能を利用し、報知用プログラムが、この応答信号に、ｎ個の識別コードを付加するようにしたものである。
【００１１】
【発明の実施の形態】
以下、本発明を図示する実施形態に基づいて説明する。図１は、一般的なＩＣカード１０と、外部装置（リーダライタ装置）２０との間で、情報の伝送を行っている状態を示すブロック図である。この例では、ＩＣカード１０は、種々の演算処理機能をもったＣＰＵ１１と、外部装置２０に対する情報の送受を行うＩ／Ｏインターフェイス１２と、ＲＯＭ１３，ＥＥＰＲＯＭ１４，ＲＡＭ１５なるメモリとを備えている。ＲＯＭ１３は書換不能な不揮発性メモリであり、ＣＰＵ１１は、このＲＯＭ１３内に格納されている基本プログラムに基づいて所定の処理を実行する。ＥＥＰＲＯＭ１４は、書換可能な不揮発性メモリであり、ユーザデータや種々のアプリケーションプログラムが格納される。アプリケーションプログラムは、ＣＰＵ１１に依存しない汎用言語で記述されており、これをＣＰＵ１１に実行させるためには、プログラムの内容をＣＰＵ１１が解釈できる形式に翻訳し、これをＣＰＵ１１に実行させる処理を行う解釈実行プログラムが必要になる。通常、逐次実行型の解釈実行プログラムは、インタープリタプログラムと呼ばれており、本実施形態でも、このインタープリタプログラムにより解釈実行が行われる。後述するように、本実施形態では、複数のインタープリタプログラムが、ＲＯＭ１３内に用意されている。また、ＲＡＭ１５は、ＣＰＵ１１が種々の処理を実行する際の作業領域として利用される書換可能な揮発性メモリである。
【００１２】
ＩＣカード１０と外部装置２０とは、物理的な信号線による接続、赤外線による接続、電磁気を利用した非接触型接続、などの方法によって互いに接続され、情報の送受が行われる。図１に示す例では、５本の物理的な信号線によって両者が接続されている。ここで、信号線ＶｃｃおよびＣＬＫは、外部装置２０からＩＣカード１０に、電源電圧ＶｃｃおよびクロックＣＬＫを供給するための線であり、信号線ＲＳＴは、外部装置２０からＩＣカード１０へ、ＣＰＵ１１に対するリセット信号を供給するための線である。一方、信号線Ｉ／Ｏは、外部装置２０からＩＣカード１０に対して所定のコマンドを送信する信号伝送路として機能するとともに、ＩＣカード１０から外部装置２０に対して所定のレスポンスを送信する信号伝送路として機能する線である。また、信号線ＧＮＤは、外部装置２０とＩＣカード１０とで共通の電源接地レベルを確保するための線である。
【００１３】
ＩＣカード１０が外部装置２０に接続されると、ＩＣカード１０内の各構成要素に、電源電圧ＶｃｃおよびクロックＣＬＫが供給される。外部装置２０側から信号線ＲＳＴを通じてリセット信号を与えると、ＩＣカード１０側のＣＰＵ１１はリセットルーチンを実行し、コマンドを受け入れる準備ができたことを示すために、このリセットに対する応答信号であるＡＴＲ（Answer To Reset ）信号を、信号線Ｉ／Ｏを通じて外部装置２０へと返す処理を行う。外部装置２０は、このＡＴＲ信号を受けた後、必要な処理を行うためのコマンドを信号線Ｉ／Ｏを通じてＩＣカード１０側へと送信する。送信されたコマンドは、Ｉ／Ｏインターフェイス１２を介してＣＰＵ１１に与えられ、ＲＯＭ１３内の基本プログラムに従って、与えられたコマンドに応じた処理が実行される。コマンドの処理結果は、レスポンスという形式で、ＣＰＵ１１からＩ／Ｏインターフェイス１２を介して、外部装置２０へと送信される。
【００１４】
図２は、ＲＯＭ１３内に用意されている基本プログラムの構成例を示すメモリマップである。図示の例では、ＲＯＭ１３内には５つの領域が定義されており、個々の領域には、それぞれ特定の機能を実行するための基本プログラムが格納されている。これらの基本プログラムは、ＣＰＵ１１が直接実行することができるマシン語で記述されている。
【００１５】
まず、リセット処理領域１３ａには、信号線ＲＳＴを通じてＣＰＵ１１にリセット信号が与えられたときに、ＣＰＵ１１が最初に実行すべきリセット処理プログラムが格納されている。このリセット処理プログラムは、必要な初期設定を行うとともに、上述したＡＴＲ信号を送信する機能を有する。ＡＴＲ信号は、数バイトからなる特定のコード（以下、ＡＴＲ固定情報と呼ぶ）から構成され、リセット処理領域１３ａには、このＡＴＲ固定情報自身も格納されている。この実施形態では、図３に示すような５バイト（ＸＸは特定の１バイトコードを示す）からなるＡＴＲ固定情報がリセット処理領域１３ａに格納されており、ＡＴＲ信号の送信処理は、この５バイトからなるＡＴＲ固定情報を、Ｉ／Ｏインターフェイス１２および信号線Ｉ／Ｏを介して外部装置２０側へと送信する処理ということになる。外部装置２０は、この特定の５バイトからなるコードを受信することによって、ＡＴＲ信号の受信とみなし、コマンドの送信処理を開始することになる。
【００１６】
一方、通信制御処理領域１３ｂには、Ｉ／Ｏインターフェイス１２を介した外部装置２０との通信処理を行うための通信制御処理プログラムが格納されている。ＣＰＵ１１は、このプログラムに基づいて、外部装置２０との間での情報の送受に必要な処理を実行することになる。上述したＡＴＲ信号の送信処理も、この通信制御処理プログラムの一部を利用して行われることになる。
【００１７】
また、ロードアプリケーションコマンド処理領域１３ｃには、外部装置２０から、図４に示すようなフォーマットをもった「ロードアプリケーションコマンド」が与えられた場合に実行されるプログラムが格納されている。このプログラムは、ＣＰＵに依存しない所定の言語で記述されたアプリケーションプログラムを、外部装置２０から取り込み、このアプリケーションプログラムをＥＥＰＲＯＭ１４へ格納するための処理プログラムである。図４に示す「ロードアプリケーションコマンド」の先頭の１バイトはコマンドコードであり、当該コマンドが、「ロードアプリケーションコマンド」であることを示す特定の１バイトコードからなる。続く１６バイトには、このアプリケーションの名前を示す文字列が記述される。その次の１バイトであるインタープリタ識別コードは、このアプリケーションプログラムを解釈実行するために必要なインタープリタプログラム（解釈実行用プログラム）を特定するためのコードである。次の２バイトは、後続するアプリケーションプログラムの長さＬａを示すデータであり、この後に、長さＬａバイトのアプリケーションプログラム本体が続くことになる。
【００１８】
アプリケーション選択コマンド処理領域１３ｄには、外部装置２０から、図５に示すようなフォーマットをもった「アプリケーション選択コマンド」が与えられた場合に実行されるプログラムが格納されている。このプログラムは、特定のアプリケーションプログラムを選択する指示を、外部装置２０から取り込み、選択されたアプリケーションプログラムを、必要な解釈実行用プログラムを利用して、ＣＰＵ１１に実行させるための環境を整えるプログラムである。図５に示す「アプリケーション選択コマンド」の先頭の１バイトはコマンドコードであり、当該コマンドが、「アプリケーション選択コマンド」であることを示す特定の１バイトコードからなる。次の１６バイトには、選択対象となる特定のアプリケーションの名前を示す文字列が記述される。
【００１９】
最後のインタプリタ格納領域１３ｅには、複数のインタープリタプログラムが格納されている。上述したように、インタープリタプログラムは、所定の言語で記述されたアプリケーションプログラムを、ＣＰＵ１１が解釈できる形式に翻訳し、これをＣＰＵ１１に実行させる機能をもった解釈実行プログラムであり、特定の言語にのみ対応している。本発明に係るＩＣカードのひとつの特徴は、それぞれ異なる言語に対応した複数のインタープリタプログラム（解釈実行プログラム）を内蔵させた点にある。図２に示す例では、インタープリタプログラム格納領域１３ｅには、合計ｎ個のインタープリタプログラムが格納されており、これらのインタープリタプログラムはいずれも対応言語を異にするものである。別言すれば、このＩＣカード１０は、ｎとおりの異なる言語で記述されたアプリケーションプログラムに対応していることになる。
【００２０】
図２において、第１のインタープリタプログラム１が格納されている領域をみると、この領域内の先頭の１バイトには、この第１のインタープリタプログラム１についてのインタープリタ識別コード（たとえば、Ｆ１）が格納されており、次の２バイトには、この第１のインタープリタプログラム１の長さ（この例の場合、Ｌｉ１）が格納されており、続くＬｉ１バイトの領域には、この第１のインタープリタプログラム１の本体部分（ＣＰＵ１１が直接実行できるマシン語のプログラム）が格納されている。同様にして、たとえば、第ｎのインタープリタプログラムｎが格納されている領域をみると、この領域内の先頭の１バイトには、この第ｎのインタープリタプログラムｎについてのインタープリタ識別コード（たとえば、Ｆｎ）が格納されており、次の２バイトには、この第ｎのインタープリタプログラムｎの長さ（この例の場合、Ｌｉｎ）が格納されており、続くＬｉｎバイトの領域には、この第ｎのインタープリタプログラムｎの本体部分が格納されている。
【００２１】
図６は、上述した「ロードアプリケーションコマンド」を実行した後のＥＥＰＲＯＭ１４内の状態の一例を示すメモリマップである。図示の例では、ＥＥＰＲＯＭ１４内には、アプリケーション登録領域１４ａとデータ記録領域１４ｂとが設けられている。アプリケーション登録領域１４ａは、「ロードアプリケーションコマンド」の実行により、外部装置２０からロードしたアプリケーションプログラムを登録するための領域であり、図示の例では、３つのアプリケーションＸ〜Ｚが登録された状態が示されている（アプリケーションＹの登録領域の図示は省略）。図４に示すようなフォーマットをもった１つの「ロードアプリケーションコマンド」を実行することにより、１つのアプリケーションが登録されることになる。図６に示すアプリケーション登録領域１４ａの先頭に格納された１６バイトからなるアプリケーションの名前、次の１バイトからなるインタープリタ識別コード、その次の２バイトからなるアプリケーションプログラムの長さ、そしてこれに後続するアプリケーションプログラムの本体は、いずれも、図４に示す「ロードアプリケーションコマンド」内に含まれていた情報である。
【００２２】
この図６に示す例では、アプリケーションＸは、識別コード「Ｆ３」で示される第３番目のインタープリタによって解釈実行が可能な言語で記述されており、プログラム本体の長さはＬａＸバイトである。一方、アプリケーションＺは、識別コード「Ｆ２」で示される第２番目のインタープリタによって解釈実行が可能な言語で記述されており、プログラム本体の長さはＬａＺバイトである。このように、アプリケーションＸとＺとは、それぞれ異なる言語によって記述されたプログラムであるが、本発明に係るＩＣカードでは、これらの言語に対応したインタープリタプログラムがＲＯＭ１３内に用意されている限り、いずれのアプリケーションプログラムも支障なく実行することができる。
【００２３】
なお、データ記録領域１４ｂは、ユーザデータや管理データを格納するための領域であり、アプリケーションＸ〜Ｚは、これらのデータを用いて所定の処理を実行することになる。
【００２４】
さて、上述したように、本発明に係るＩＣカードでは、ＲＯＭ１３内に用意されているインタープリタプログラムが対応している言語で記述されたアプリケーションプログラムであれば実行することが可能であるが、ＲＯＭ１３内のインタープリタプログラムが対応していない言語で記述されたアプリケーションプログラムは実行することができない。たとえば、図６に示すＥＥＰＲＯＭ１４にロードされたアプリケーションプログラムＸを実行するためには、このプログラムＸのインタープリタ識別コードがＦ３であることから、Ｆ３なるインタープリタ識別コードをもったインタープリタプログラムがＲＯＭ１３内に用意されていなければならない。もし、そのようなインタープリタプログラムが用意されていなければ、プログラムＸは実行不能であり、せっかくＥＥＰＲＯＭ１４内にロードした意味はなくなってしまう。
【００２５】
そこで、本発明では、内蔵しているインタープリタプログラム（解釈実行プログラム）が対応する言語を、外部に報知する機能をもたせるようにしている。この機能が本発明の重要な特徴である。たとえば、図２に示すように、ｎとおりのインタープリタプログラムがＲＯＭ１３内に用意されている場合には、これらのインタープリタプログラムが解釈実行可能なｎとおりの言語が何であるか、という情報を外部に報知することができる。
【００２６】
このような情報を外部に報知する方法としては、種々の方法が考えられるが、本実施形態では、外部装置２０との間でデータの送受を行うための信号線Ｉ／Ｏを介して、対応する言語を示すコードを外部装置２０へ伝達する方法を採っている。ロードアプリケーションコマンドを用いて、ＥＥＰＲＯＭ１４内に特定のアプリケーションプログラムをロードさせる処理を行うのは外部装置２０であるため、上述の方法により、対応言語を示すコードを外部装置２０へ直接伝達するようにすれば、外部装置２０に極めて有用な情報を与えることができる。すなわち、外部装置２０側では、この対応言語を示すコードに基づいて、特定の言語で記述されたアプリケーションプログラムが、ＩＣカード１０内で実行可能かどうかを事前に確認することができ、実行可能である場合にのみ、当該アプリケーションプログラムについてのロードアプリケーションコマンドを送信する処理を実行することができる。
【００２７】
本実施形態では、更に効率的な処理が可能になるように、対応言語を示すコードの送信タイミングについても工夫を凝らしている。すなわち、前述したように、外部装置２０からＣＰＵ１１にリセット信号が与えられると、このリセット信号に対する応答信号、すなわちＡＴＲ信号が、信号線Ｉ／Ｏを通じて外部装置２０側へと返されることになるが、本実施形態では、このＡＴＲ信号に、対応言語を示すコードを付加するようにしている。図７は、このようなコードを付加したＡＴＲ信号の一例を示す。先頭の５バイトは、図３に示すＡＴＲ固定情報であり、従来のＩＣカードにおいてＡＴＲ信号として返送されていた通常の情報である。続く３バイトの情報が、本発明に固有の情報であり、対応言語を示すコード、すなわち、インタープリタ識別コードである。図示の例の場合、３とおりのインタープリタ識別コードＦ１，Ｆ２，Ｆ３が付加されているが、これは、ＲＯＭ１３内にこの３とおりのインタープリタ識別コードに対応する３とおりのインタープリタプログラムが用意されていた場合の例である。図２に示すＲＯＭ１３のように、ｎとおりのインタープリタプログラムが用意されている場合には、合計ｎバイトからなるインタープリタ識別コードが付加されることになる。
【００２８】
外部装置２０は、このようなＡＴＲ信号を受信することにより、ＩＣカード１０側のコマンド受信準備が整ったことを確認することができ、また、このＩＣカード１０がどのような言語で記述されたアプリケーションプログラムを実行可能であるかという情報を得ることができる。対応言語を外部に報知する手段として、ＡＴＲ信号を利用することは、次の２つの点でメリットがある。第１のメリットは、現在普及している規格では、ＩＣカード１０と外部装置２０とを接続し、両者間の交信を開始する際には、必ず外部装置２０側からリセット信号を送信し、ＩＣカード１０側からＡＴＲ信号を返信することになっているため、ＡＴＲ信号の送信は不可欠の手順であるという点である。別言すれば、ＡＴＲ信号の送信手順は、規格上必ず行わねばならない手順であるため、この必須の手順に便乗して対応言語を示す情報を送信するようにすれば、余分な手順を付加する必要が一切ない、というメリットが得られることになる。そして、第２のメリットは、ＩＣカード１０と外部装置２０とを接続した後、ＩＣカード１０側から最初に送信される信号がこのＡＴＲ信号であるため、初期段階において、対応言語を外部装置２０側に報知することができるという点である。すなわち、アプリケーションプログラムをＥＥＰＲＯＭ１４内にロードする処理は、必ず、このＡＴＲ信号の送信処理の後に行われることになるので、外部装置２０は、ロードアプリケーションコマンドを送信する時点では、必ず対応言語を示す情報を入手していることになる。したがって、ＩＣカードが対応していない言語で記述されたアプリケーションプログラムを誤ってロードするような無駄な手順を必ず避けることが可能になる。
【００２９】
最後に、図８および図９の流れ図を参照しながら、このＩＣカード１０内で実行される処理動作を説明する。まず、ＩＣカード１０が外部装置２０に接続され、信号線ＲＳＴを通じてＣＰＵ１１がリセットされると、ＲＯＭ１３のリセット処理領域１３ａ内のリセットルーチンが実行され、ステップＳ１において、ＡＴＲ情報の編集処理が行われる。この編集処理は、図７に示すようなＡＴＲ信号を作成する処理であり、具体的には、リセット処理領域１３ａ内に格納された５バイトのＡＴＲ固定情報（図３参照）に、インタープリタ格納領域１３ｅ内に格納された複数のインタープリタについての各インタープリタ識別コードを付加する処理ということになる。こうして、図７に示すようなＡＴＲ信号が準備できたら、ステップＳ２において、このＡＴＲ信号が信号線Ｉ／Ｏを介して送信されることになる。外部装置２０は、このＡＴＲ信号の受信により、ＩＣカード１０側が準備完了であることを認識するとともに、ＩＣカード１０の対応言語を認識することができる。
【００３０】
外部装置２０は、続いて、信号線Ｉ／Ｏを介して、所望のコマンドを送信することになる。ＩＣカード１０は、ステップＳ３において、コマンドの受信を確認し、コマンドを受信するまで待機状態となる。外部装置２０側からコマンドが与えられると、そのコマンドの先頭１バイトに相当するコマンドコードを認識し、このコマンドコードに基づいて、与えられたコマンドがどのようなコマンドであるかを把握し、必要な処理を実行する。
【００３１】
与えられたコマンドが、図４に示すような「ロードアプリケーションコマンド」であった場合には、ステップＳ４からステップＳ５へと進み、ＲＯＭ１３内のロードアプリケーションコマンド処理領域１３ｃ内に用意されたマシン語プログラムに基づいて、ＥＥＰＲＯＭ１４内のアプリケーション登録領域１４ａ内に、与えられたアプリケーションに関する情報をロードする処理を行う。
【００３２】
また、与えられたコマンドが、図５に示すような「アプリケーション選択コマンド」であった場合には、ステップＳ６からステップＳ７へと進み、ＲＯＭ１３内のアプリケーション選択コマンド処理領域１３ｄ内に用意されたマシン語プログラムに基づいて、ＥＥＰＲＯＭ１４内のアプリケーション登録領域１４ａ内にロードされている複数のアプリケーションを検索し、選択コマンドで指定された名前と一致するアプリケーションを該当アプリケーションとして選択する処理を行う。
【００３３】
なお、与えられたコマンドが、上述した２つのコマンドのいずれでもなかった場合には、これを特定のアプリケーションプログラムに対するコマンドであると認識し、まず、ステップＳ８において、選択済のアプリケーションの有無が調べられる。既にアプリケーションの選択が行われている場合には、ステップＳ９へと進み、当該アプリケーションが実行される。一方、アプリケーションの選択が行われていない場合には、ステップＳ８からステップＳ１０へと進み、「与えられたコマンドは解釈できない」旨のエラーがセットされる。かくして、最終的に、ステップＳ１１において、与えられたコマンドに対する処理結果を示すレスポンスを、外部装置２０に対して送信した後、ステップＳ３へと戻り、次のコマンド受信を待つ状態になる。エラーがセットされていた場合には、ステップＳ１１では、エラーを示すレスポンスが送信されることになる。
【００３４】
図９は、ステップＳ９のアプリケーション実行処理の手順を詳細に示す流れ図である。まず、ステップＳ１２において、選択されたアプリケーションの「インタープリタ識別コード」と同一の「インタープリタ識別コード」をもつインタープリタプログラムを、ＲＯＭ１３内から検索する処理が行われる。そして、該当するインタープリタがあれば、ステップＳ１３からステップＳ１４へと進み、ＲＯＭ１３内のこの該当インタープリタプログラムを実行することにより、与えられたコマンドの解釈実行が行われる。一方、該当するインタープリタがなければ（外部装置２０には、対応言語が報知されているので、通常、このような事態は生じ得ないはずであるが）、選択されたアプリケーションプログラムは、現時点では解釈実行することができないので、ステップＳ１３からステップＳ１５へと進み、「実行に必要なインタープリタが存在しない」旨のエラーをセットする。このエラーは、ステップＳ１１において、レスポンスとして送信されることになる。
【００３５】
以上、本発明を図示する実施形態に基づいて説明したが、本発明はこの実施形態に限定されるものではなく、この他にも種々の態様で実施可能である。たとえば、上述の実施形態では、インタープリタプログラムをＲＯＭ１３内に予め用意するようにしているが、外部装置２０側からインタープリタプログラムをＥＥＰＲＯＭ１４内にロードすることができるような機能を設けておき、必要に応じて、ＥＥＰＲＯＭ１４内のインタープリタプログラムを利用して、アプリケーションプログラムを実行するようにしてもかまわない。この場合、ＡＴＲ信号を利用して報知するインタープリタ識別コードには、ＲＯＭ１３内のインタープリタだけでなく、その時点でＥＥＰＲＯＭ１４内にロードされているインタープリタの識別コードも含ませるようにする。
【００３６】
また、上述の実施形態では、アプリケーションプログラムについての解釈実行用プログラムとして、逐次実行型のインタープリタプログラムを用いた例を述べたが、マシン語への翻訳をまとめて行った後にこれを実行させるようなコンパイラプログラムを用いてもかまわない。
【００３７】
【発明の効果】
以上のとおり本発明に係るＩＣカードによれば、複数の解釈実行プログラムを内蔵させるとともに、その対応言語を外部に報知する機能をもたせるようにしたため、複数の言語に記述されたアプリケーションプログラムに対応し、かつ、対応言語を外部から認識することが可能なＩＣカードを実現することができる。
【図面の簡単な説明】
【図１】一般的なＩＣカード１０と、外部装置（リーダライタ装置）２０との間で、情報の伝送を行っている状態を示すブロック図である。
【図２】本発明に係るＩＣカード内のＲＯＭに用意されているプログラムの構成例を示すメモリマップである。
【図３】図２のメモリマップのリセット処理領域１３ａ内に用意されているＡＴＲ固定情報の一例を示す図である。
【図４】本発明に係るＩＣカードで実行されるロードアプリケーションコマンドのフォーマット例を示す図である。
【図５】本発明に係るＩＣカードで実行されるアプリケーション選択コマンドのフォーマット例を示す図である。
【図６】本発明に係るＩＣカード内のＥＥＰＲＯＭの状態の一例を示すメモリマップである。
【図７】本発明に係るＩＣカードから外部装置へと返送されるＡＴＲ信号の一例を示す図である。
【図８】本発明に係るＩＣカードの動作を示す第１の流れ図である。
【図９】本発明に係るＩＣカードの動作を示す第２の流れ図である。
【符号の説明】
１０…ＩＣカード
１１…ＣＰＵ
１２…Ｉ／Ｏインターフェイス
１３…ＲＯＭ
１３ａ…リセット処理領域
１３ｂ…通信制御処理領域
１３ｃ…ロードアプリケーションコマンド処理領域
１３ｄ…アプリケーション選択コマンド処理領域
１３ｅ…インタープリタ格納領域
１４…ＥＥＰＲＯＭ
１４ａ…アプリケーション登録領域
１４ｂ…データ記録領域
１５…ＲＡＭ
２０…外部装置（リーダライタ装置）
ＣＬＫ…クロック供給用信号線
ＧＮＤ…接地電源用信号線
Ｉ／Ｏ…データ伝送用信号線
ＲＳＴ…リセット信号線
Ｖｃｃ…電源供給用信号線
【図１】
0004176889.tif 000002
【図２】
0004176889.tif 000003
【図３】
0004176889.tif 000004
【図４】
0004176889.tif 000005
【図５】
0004176889.tif 000006
【図６】
0004176889.tif 000007
【図７】
0004176889.tif 000008
【図８】
0004176889.tif 000009
【図９】
0004176889.tif 000010