(57)【特許請求の範囲】
【請求項１】
外部機器との通信のための接触用インターフェース及び非接触用インターフェースと、
どちらのインターフェースで起動されているか判別する判別部と、
システムプログラム及び少なくとも１つのアプリケーションプログラムを格納した第一記憶部と、
外部機器から受信した接触用インターフェースまたは非接触用インターフェースを介したコマンドから抽出されたコマンド情報を格納する第二記憶部と、
外部機器から受信した前記コマンドの各フィールドに含まれる上記コマンド情報を前記アプリケーションプログラムによりアクセス可能に抽出する抽出部とを有し、
前記第二記憶部には、応答送信コマンド情報として、前記外部機器に対してウエイト要求する処理待ち期間を示すウエイト要求値情報が格納されており、
さらに、割り込み処理回路とタイマ回路と、前記入力したコマンドの実行中に所定時間に設定された上記タイマ回路のカウント終了により割り込みが発生した場合、前記ウエイト要求値を初期値とするカウント値が０でなければ前記カウント値を１減算し、０であれば、外部機器に対してウエイト要求コマンドを送信すると共に、前記カウント値を初期値に再設定する再設定手段とを有していることを特徴とするコンビネーション型ＩＣカード。
【請求項２】
前記システムプログラム及び少なくとも１つのアプリケーションプログラムを格納した第一記憶部は書き換え可能な不揮発性記憶素子からなることを特徴とする請求項１記載のコンビネーション型ＩＣカード。
【請求項３】
前記コマンド情報を格納する第二記憶部は、揮発性記憶素子からなることを特徴とする請求項１または２記載のコンビネーション型ＩＣカード。
【請求項４】
前記第二記憶部には、受信コマンド情報として、受信したコマンドの種別あるいは動作を指定する情報、受信したデータの格納場所情報、受信したコマンドの属性を示すプロトコル情報、及び接触及び非接触のいずれで通信するかを示す接続モード情報からなる群から選択される少なくとも１つが格納されていることを特徴とする請求項１ないし３のいずれか１項に記載のコンビネーション型ＩＣカード。
【請求項５】
前記第二記憶部には、応答送信コマンド情報として、送信するデータの格納場所情報、コマンドの実行結果を示すステータス情報、送信するコマンドの属性を示すプロトコル情報、前記外部機器に対してウエイト要求する処理待ち期間を示すウエイト要求値情報からなる群から選択される少なくとも１つが格納されていることを特徴とする請求項１ないし４のいずれか１項に記載のコンビネーション型ＩＣカード。
【請求項６】
外部機器からのコマンドを接触式及び非接触式にてそれぞれ受信でき、接触式及び非接触式の何れで受信したか判別して、コマンドに対応するアプリケーションプログラムを実行し、その実行結果を外部機器に出力する接触式及び非接触式兼用のＩＣカードであるコンビネーション型ＩＣカードの制御方法において、
外部機器から受信したコマンドの各フィールドに含まれるコマンド情報をアプリケーションプログラムからアクセス可能に抽出し、
前記アプリケーションプログラムの実行が、前記外部機器に対してウエイト要求することを必要とする場合、前記外部機器から既にウエイト応答情報を受信しているか確認し、ウエイト応答情報を受信していなければ、ウエイト要求情報を出力し、ウエイト応答情報を受信しており、かつ所定の時間以内に前記アプリケーションプログラムの実行が完了しなかったとき、再度ウエイト要求情報を出力することを特徴とするコンビネーション型ＩＣカードの制御方法。
【請求項７】
前記アプリケーションプログラムが、接触式及び非接触式のいずれの接続モードでも実行可能な場合、判別された接続モードでアプリケーションプログラムを実行することを特徴とする請求項６に記載のコンビネーション型ＩＣカードの制御方法。
【請求項８】
前記アプリケーションプログラムが、接触モードでのみ実行可能な場合、判別された接続モードが接触モードでないとき、エラー応答情報を出力し、判別された接続モードが接触モードであるとき、接触モードで前記アプリケーションプログラムを実行することを特徴とする請求項６に記載のコンビネーション型ＩＣカードの制御方法。
【請求項９】
前記アプリケーションプログラムが、非接触モードでのみ実行可能な場合、判別された接続モードが非接触モードでないとき、エラー応答情報を出力し、判別された接続モードが非接触モードであるとき、非接触モードで前記アプリケーションプログラムを実行することを特徴とする請求項６に記載のコンビネーション型ＩＣカードの制御方法。
【請求項１０】
請求項６ないし９の何れか１項に記載の制御方法を実行処理することを特徴とするコンビネーション型ＩＣカードのシステムプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、接触式ＩＣカードと非接触式ＩＣカードの両機能を併せ持つコンビネーション型のＩＣカード、及びその制御方法、並びにそのシステムプログラムに関する。
【０００２】
【従来の技術】
ＩＣカードは、外部機器との通信に接点を通じて行う接触式ＩＣカードと、外部機器との通信に接点を介さずに非接触で行う非接触式ＩＣカードに分類されてきた。近年その両方のインターフェース（以下、Ｉ／Ｆと略記する）機能を備えた、コンビネーション型ＩＣカードが開発されている。
【０００３】
接触式ＩＣカードの国際規格としては、ＩＳＯ／ＩＥＣ７８１６がありＩＳＯ／ＩＥＣ７８１６−３に外部機器との伝送プロトコルや初期化手順、ＩＳＯ／ＩＥＣ７８１６−４に共通コマンド（コマンド構造）が規格化されている。
【０００４】
また、非接触式ＩＣカードの国際規格としては、ＩＳＯ／ＩＥＣ１４４４３があり、ＩＳＯ／ＩＥＣ１４４４３−３に初期化手順、ＩＳＯ／ＩＥＣ１４４４３−４に外部機器との伝送プロトコルが規格化されている。
【０００５】
コンビネーション型ＩＣカード（以下コンビ型ＩＣカードと略称する）では、接触式ＩＣカードとして動作する場合は、上記ＩＳＯ／ＩＥＣ７８１６−３の伝送プロトコルを適用して、外部機器とのコマンド送受信を行う一方、非接触式ＩＣカードとして動作する場合は、上記ＩＳＯ／ＩＥＣ１４４４３−４の伝送プロトコルを適用して、外部機器とのコマンド送受信を行う。
【０００６】
コンビ型ＩＣカードとしては、例えば特開平１１−２７２８２４号公報に示されるようなものがある。このコンビ型ＩＣカードは、接触用Ｉ／Ｆおよび非接触用Ｉ／Ｆと、接触式で動作しているか非接触式で動作しているかを判別する手段と、判定結果に基づき外部機器と接触式で応答する場合と外部機器と非接触で応答する場合で、実行可能なコマンドを切り替える手段とを有している。
【０００７】
このコンビ型ＩＣカードは、外部機器と通信でコマンドを受信したとき、図１６に示すように、まず接触式による起動か否かを判別し（ステップ１、以下、ステップをＳと略記する）、接触式ならば、接触式のコマンドリストを参照する（Ｓ３）。接触式でないなら、非接触式による起動か否かを判別し（Ｓ２）、非接触式ならば、非接触式のコマンドリストを参照する（Ｓ４）。次に、上記コマンドリストにおいて、受信したコマンドと一致するものがあると判定した場合（Ｓ５）、ＲＯＭのサブルーチンプログラムが実行される（Ｓ６）。受信コマンドが一致しなければ実行不可能と判定され、エラー処理が実行される。
【０００８】
これにより、接触式で駆動される場合および非接触式で駆動される場合の双方において同等の機能を実行でき、さまざまな用途において、誤動作の防止されたコンビ型ＩＣカードを提供することができると記載されている。
【０００９】
【発明が解決しようとする課題】
コンビ型ＩＣカードの場合、接触用Ｉ／Ｆが選択された場合と非接触用Ｉ／Ｆが選択された場合とで、外部機器と通信を行うための伝送プロトコルが異なる。このため、コンビ型ＩＣカード上のアプリケーションプログラムでどちらのＩ／Ｆが選択された場合でも同等の動作を行うためには、この伝送プロトコル上の違いを吸収してアプリケーションプログラムに確実にコマンドを受け渡す必要がある。
【００１０】
また、コンビ型ＩＣカードに搭載されているアプリケーションプログラムにおいて、外部機器から受信したコマンドを処理するのに時間がかかる場合、外部機器に対してタイムアウト（時間切れによる不通となる通信状態）が発生するのを防ぐため、ウエイト(Wait、待機) 要求コマンドを外部機器に送信し、外部機器からウエイト応答を受信することがある。
【００１１】
しかしながら、接触用Ｉ／Ｆの伝送プロトコルと非接触用Ｉ／Ｆの伝送プロトコルとでは、このウエイト要求時間における、パラメータによって設定される時間が異なるため、接触用Ｉ／Ｆで十分なウエイト時間のウエイト要求を外部機器へ送信したとしても、非接触用Ｉ／Ｆでは外部機器でタイムアウトが発生してしまうという問題がある。
【００１２】
また、上述したコンビ型ＩＣカードは、接触用Ｉ／Ｆで接続されている場合は、接触用のコマンドリストを参照してコマンドの実行可否を決定し、非接触用Ｉ／Ｆで接続されている場合は、非接触用のコマンドリストを参照してコマンドの実行可否を決定し、あるいは共通のコマンドリストを設けて接触式または非接触式のみでのコマンドの実行可否、接触式／非接触式両方での実行可否を判定する方式である。
【００１３】
このコンビ型ＩＣカードの場合、一枚のコンビ型ＩＣカードに単一のアプリケーションプログラムが搭載されている場合に有効な方式であるが、一枚のコンビ型ＩＣカード上に、接触式／非接触式両方で動作可能なアプリケーションプログラム、接触式のみで動作可能なアプリケーションプログラム、非接触式のみで動作可能なアプリケーションなど複数のアプリケーションが搭載されるような多目的用途のコンビ型ＩＣカードに適用するための考慮はなされておらず、もしこのような用途に適用したとしてもアプリケーション毎にコマンドリストを用意する必要があり、手順も複雑になるという問題点がある。
【００１４】
また、このコンビ型ＩＣカードにおいては、接触式と非接触式で同じ伝送プロトコルでコマンドの送信／受信を行う必要があり、異なる伝送プロトコルでの動作は考慮されていなかった。
【００１５】
本発明の目的は、以下の３項目である。
【００１６】
１）接触式および非接触式の伝送プロトコル上の違いを吸収して、アプリケーションプログラムに確実にコマンドを受け渡すことができ、確実にコマンド実行結果を外部機器に送信（出力）できるアプリケーション共通化方式を提供する。
【００１７】
２）コンビ型ＩＣカードに搭載しているアプリケーションプログラムから外部機器に対してウエイト要求を行った場合、接触用Ｉ／Ｆが選択されていても非接触用Ｉ／Ｆが選択されていても、外部機器でタイムアウトが発生することが回避されたアプリケーション共通化方式を提供する。
【００１８】
３）一枚のコンビ型ＩＣカードに、接触式／非接触式両方で動作可能なアプリケーションプログラム、接触式のみで動作可能なアプリケーションプログラム、非接触のみで動作可能なアプリケーションなどのような複数のアプリケーションプログラムが搭載された場合にも、アプリケーションプログラムに確実にコマンドを受け渡すことができ、確実にコマンド実行結果を外部機器に送信できるアプリケーション共通化方式を提供する。
【００１９】
【課題を解決するための手段】
本発明のコンビ型ＩＣカードは、上記課題を解決するために、外部機器との通信のための接触用Ｉ／Ｆ及び非接触用Ｉ／Ｆと、どちらのＩ／Ｆで起動されているか判別する判別部と、システムプログラム及び少なくとも１つのアプリケーションプログラムを格納した第一記憶部と、外部機器から受信した接触用Ｉ／Ｆまたは非接触用Ｉ／Ｆを介したコマンドから抽出されたコマンド情報を格納する第二記憶部と、外部機器から受信した前記コマンドの各フィールドに含まれる上記コマンド情報を前記アプリケーションプログラムによりアクセス可能に抽出する抽出部とを有し、前記第二記憶部には、応答送信コマンド情報として、前記外部機器に対してウエイト要求する処理待ち期間を示すウエイト要求値情報が格納されており、さらに、割り込み処理回路とタイマ回路と、前記入力したコマンドの実行中に所定時間に設定された上記タイマ回路のカウント終了により割り込みが発生した場合、前記ウエイト要求値を初期値とするカウント値が０でなければ前記カウント値を１減算し、０であれば、外部機器に対してウエイト要求コマンドを送信すると共に、前記カウント値を初期値に再設定する再設定手段とを有していることを特徴としている。
【００２０】
上記構成によれば、外部機器から受信した前記コマンドの各フィールドに含まれる上記コマンド情報を前記アプリケーションプログラムによりアクセス可能に抽出する抽出部を有することにより、接触式および非接触式の伝送プロトコル上の違いを吸収して、アプリケーションプログラムに確実にコマンドを受け渡すことができ、確実にコマンド実行結果を外部機器に送信（出力）できる。
【００２１】
さらに、上記構成によれば、搭載しているアプリケーションプログラムから外部機器に対してウエイト要求を行った場合、再設定手段を有しているので、接触用Ｉ／Ｆが選択されていても非接触用Ｉ／Ｆが選択されていても、外部機器でタイムアウトが発生することが回避できる。
【００２２】
上記コンビ型ＩＣカードでは、前記システムプログラム及び少なくとも１つのアプリケーションプログラムを格納した第一記憶部は書き換え可能な不揮発性記憶素子からなることが好ましい。
【００２３】
上記コンビ型ＩＣカードにおいては、前記コマンド情報を格納する第二記憶部は、揮発性記憶素子からなることが望ましい。
【００２４】
上記コンビ型ＩＣカードでは、前記第二記憶部には、受信コマンド情報として、受信したコマンドの種別あるいは動作を指定する情報、受信したデータの格納場所情報、受信したコマンドの属性を示すプロトコル情報、及び接触及び非接触のいずれで通信するかを示す接続モード情報からなる群から選択される少なくとも１つが格納されていることが好ましい。
【００２５】
上記コンビ型ＩＣカードにおいては、前記第二記憶部には、応答送信コマンド情報として、送信するデータの格納場所情報、コマンドの実行結果を示すステータス情報、送信するコマンドの属性を示すプロトコル情報、前記外部機器に対してウエイト要求する処理待ち期間を示すウエイト要求値情報からなる群から選択される少なくとも１つが格納されていることが望ましい。
【００２６】
本発明のコンビ型ＩＣカードの制御方法は、前記の課題を解決するために、外部機器からのコマンドを接触式及び非接触式にてそれぞれ受信でき、接触式及び非接触式の何れで受信したか判別して、コマンドに対応するアプリケーションプログラムを実行し、その実行結果を外部機器に出力する接触式及び非接触式兼用のＩＣカードであるコンビネーション型ＩＣカードの制御方法において、外部機器から受信したコマンドの各フィールドに含まれるコマンド情報をアプリケーションプログラムからアクセス可能に抽出し、前記アプリケーションプログラムの実行が、前記外部機器に対してウエイト要求することを必要とする場合、前記外部機器から既にウエイト応答情報を受信しているか確認し、ウエイト応答情報を受信していなければ、ウエイト要求情報を出力し、ウエイト応答情報を受信しており、かつ所定の時間以内に前記アプリケーションプログラムの実行が完了しなかったとき、再度ウエイト要求情報を出力することを特徴としている。
【００２７】
上記方法によれば、外部機器から受信したコマンドの各フィールドに含まれるコマンド情報をアプリケーションプログラムからアクセス可能にすることで、接触式および非接触式の伝送プロトコル上の違いを吸収して、アプリケーションプログラムに確実にコマンドを受け渡すことができ、確実にコマンド実行結果を外部機器に送信（出力）できる。
【００２８】
さらに、上記方法によれば、搭載しているアプリケーションプログラムから外部機器に対してウエイト要求を行った場合、再度ウエイト要求情報を出力するので、接触式が選択されていても非接触式が選択されていても、外部機器でタイムアウトが発生することが回避できる。
【００２９】
上記制御方法では、前記アプリケーションプログラムが、接触式及び非接触式のいずれの接続モードでも実行可能な場合、判別された接続モードでアプリケーションプログラムを実行することが好ましい。
【００３０】
上記制御方法においては、前記アプリケーションプログラムが、接触モードでのみ実行可能な場合、判別された接続モードが接触モードでないとき、エラー応答情報を出力し、判別された接続モードが接触モードであるとき、接触モードで前記アプリケーションプログラムを実行することが望ましい。
【００３１】
上記制御方法では、前記アプリケーションプログラムが、非接触モードでのみ実行可能な場合、判別された接続モードが非接触モードでないとき、エラー応答情報を出力し、判別された接続モードが非接触モードであるとき、非接触モードで前記アプリケーションプログラムを実行することが好ましい。
【００３２】
上記方法によれば、一枚のコンビ型ＩＣカードに、接触式／非接触式両方で動作可能なアプリケーションプログラム、接触式のみで動作可能なアプリケーションプログラム、非接触のみで動作可能なアプリケーションなどのような複数のアプリケーションプログラムが搭載された場合にも、アプリケーションプログラムに確実にコマンドを受け渡すことができ、確実にコマンド実行結果を外部機器に送信できる。
【００３３】
本発明のコンビ型ＩＣカードのシステムプログラムは、前記の課題を解決するために、上記の何れかに記載の制御方法を実行処理することを特徴としている。
【００３４】
【発明の実施の形態】
以下、図１ないし図１５を参照しながら本発明に係るコンビ型ＩＣカードの実施の形態について詳細に説明する。図１に示すように、本発明によるアプリケーション共通化方式が適用される一形態としてのコンビ型ＩＣカード１００では、非接触用Ｉ／Ｆ１０１と、接触／非接触判定手段１０２と、接触用Ｉ／Ｆ１０３と、ＣＰＵ(Central Processing Unit) １０４と、揮発性メモリ１０５と、不揮発性メモリ１０６と、タイマ回路１０７と、割り込み回路１０８とが、共通バスラインを介して互いにデータの送受信可能にそれぞれ設けられている。
【００３５】
不揮発性メモリ１０６には、ＣＰＵ１０４により制御されるシステムプログラムや、少なくとも１つのアプリケーションプログラムが予め格納されている。システムプログラムは、コンビ型ＩＣカード１００と外部とのデータの送受信や、コンビ型ＩＣカード１００内部間でのデータの送受信を制御するためのものである。
【００３６】
このようなコンビ型ＩＣカード１００においては、非接触用外部機器１０９や接触用外部機器１１０からコマンド（命令）をシステムプログラムに沿って受信し、上記コマンドにしたがったアプリケーションプログラムを実行し、その結果を上記コマンドを送信した非接触用外部機器１０９や接触用外部機器１１０に返送（出力）するようになっている。
【００３７】
非接触用Ｉ／Ｆ１０１は、常時、非接触である無線にて信号を送受信可能となっており、非接触用外部機器１０９と無線で互いに通信できるように構成されている。無線で通信している時、コンビ型ＩＣカード１００は非接触用ＩＣカードとして動作する。
【００３８】
また、接触用Ｉ／Ｆ１０３は、接触用外部機器１１０とコンビ型ＩＣカード１００の表面に露出して設けられた電極端子を介して（つまり有線で接触状態にて）互いに通信できるように構成されている。電極端子を介して通信している時、コンビ型ＩＣカード１００は、接触用ＩＣカードとして動作する。
【００３９】
これらの通信状態は同時に接続されて通信することはなく、例えば受信した開始信号の信号強度の大小や、接触用外部機器１１０と電極端子とが接触状態か否かによる電源電圧等といった検出電圧の有無によって、どちらか一方のＩＣカードとして択一的に動作するように設定されている。
【００４０】
接触／非接触判定手段１０２は、通信中のＩ／Ｆが接触式であるか非接触式であるかを判定するものである。判定方法としては、例えば接触モードで使用するクロック端子からクロックが供給されているのか、非接触モードで使用するＲＦ回路からクロックが供給されているかのクロックの供給元をクロック周波数の違いにより判定する方法が挙げられる。判定結果は、例えば接触式であるとき０、非接触式であるとき１がＣＰＵ１０４によって参照可能であるレジスタ（メモリ）に格納されるように構成されている。
【００４１】
判定結果情報は、ＥＥＰＲＯＭ(Electrically Erasable Programmable Read Only Memory) 等の不揮発性メモリ１０６に格納したシステムプログラムに基づきＣＰＵ１０４により参照される。不揮発性メモリ１０６には、システムプログラムの他に、アプリケーションプログラム（後に詳述する）が格納されている。また、揮発性メモリ１０５は、一時記憶データを格納するための、例えばＲＡＭ(Random Access Memory)である。
【００４２】
図１に示した不揮発性メモリ１０６に格納するプログラムの階層構造を示す構成例としては、図２に示すように、システムプログラム上に一つの接触／非接触共通アプリケーションプログラムが構成されている例が挙げられる。
【００４３】
また、上記プログラムの階層構造を示す、他の構成例としては、図３に示すように、システムプログラム上に接触／非接触共通アプリケーションプログラム、接触専用アプリケーションプログラム、非接触専用アプリケーションプログラムなど複数のアプリケーションプログラムがそれぞれ構成されている例が挙げられる。
【００４４】
接触／非接触共通アプリケーションプログラムとしては、例えばバスカードなどの交通系のアプリケーションにおいて、お金のチャージを窓口で接触モードによって行い、バスヘの乗車／降車を非接触モードで行う用途がある。接触専用アプリケーションとしては、接触式でのみ使用が認められている電子マネーなどの金融系の用途がある。また、非接触専用のアプリケーションプログラムには、テレホンカード、入退出システムなどの用途がある。
【００４５】
本発明によるコンビ型ＩＣカードにおいては図１ないし図３に示したいずれのアプリケーション構成においても、適切な処理を行うために次の一連の処理を行う。すなわち、
１．実行すべきアプリケーションプログラムを選択する。
【００４６】
２．接触式または非接触式で外部機器と接続を開始したとき、どちらのＩ／Ｆで起動しているかを接触／非接触判定手段１０２により判定する。
【００４７】
３．接触／非接触判定手段１０２による判定結果に応じたプロトコルで初期応答を行い、通信を確立する。
【００４８】
４．接触／非接触判定手段１０２による判定結果に応じたプロトコルでコマンドを受信する。
【００４９】
５．コマンドにより指定されたアプリケーションプログラムを実行する。
【００５０】
６．アプリケーションプログラムの実行結果を応答として外部機器へ返信する。
【００５１】
７．必要に応じて外部機器に対してウエイト要求送信／応答受信動作を行う。
【００５２】
以下に、各処理の詳細を述べるが、まず接触式と非接触式で用いられる伝送プロトコルについて説明する。
【００５３】
図４に伝送用プロトコルの構成を示す。ここで、図４（ａ）は接触式で用いられる接触用伝送プロトコルコマンドの１フレームの構成、図４（ｂ）は非接触式で用いられる非接触用伝送プロトコルの１フレームの構成、図４（ｃ）は図４（ａ）及び図４（ｂ）に記載の情報フィールド部を示し、コマンド受信時のフィールドの構成、図４（ｄ）は図４（ａ）及び図４（ｂ）に記載の情報フィールド部を示し、コマンド応答送信時のフィールドの構成を各々示している。
【００５４】
より詳しくは、接触用伝送プロトコルコマンドの１フレームは図４（ａ）に示すように先頭フィールド部と情報フィールド部と最終フィールド部の３つの大きなフィールドにより構成される。
【００５５】
このうち先頭フィールド部のＮＡＤは、コマンドブロックの送信元と宛先を示すものである。ここでコマンドブロックとは、図４に示すそれぞれの伝送プロトコルコマンド１フレーム分を示す。先頭フィールド部のＰＣＢは、プロトコル制御情報を示し、データ転送に必要な制御情報が格納されている。例えば、後に詳述するコマンド受信やウエイト応答受信などの情報が格納される。先頭フィールド部のＬＥＮには、後に続く情報フィールド部のデータの長さが格納される。
【００５６】
情報フィールド部にコマンド本体が格納される。最終フィールド部には、伝送ブロックの誤り検出符号（ＥＤＣ：Error Detection Code）が格納される。情報フィールド部の構成はコマンド受信時とコマンド応答送信時でフィールドが異なり、その構成は下記の図４（ｃ）と図４（ｄ）とに関する欄にて詳述する。
【００５７】
また、非接触用伝送プロトコルコマンドの１フレームは、図４（ｂ）に示すように、先頭フィールド部と情報フィールド部と最終フィールド部により構成される。
【００５８】
このうち先頭フィールド部のＰＣＢは、プロトコル制御情報を示しデータ転送に必要な制御情報が格納される。例えば、後に詳述するコマンド受信やウエイト応答受信などの情報が格納される。先頭フィールド部のＣＩＤは、ＩＣカードの番号が格納される。
【００５９】
情報フィールド部にコマンド本体が格納される。最終フィールド部には、伝送ブロックの誤り検出符号（ＣＲＣ：Cyclic Redundancy Check）が格納される。情報フィールド部の構成はコマンド受信時とコマンド応答送信時でフィールドが異なり、その構成は次の図４（ｃ）と図４（ｄ）に関する欄にて詳述する。
【００６０】
図４（ａ）と図４（ｂ）に示した情報フィールド部はコマンド受信時とコマンド応答送信時とでは構成が異なる。
【００６１】
すなわち、コマンド受信時の情報フィールド部は図４（ｃ）に示すデータが格納される。このうち、ＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２はコマンドの種別／動作などを指定するパラメータであり、ＬＣは後に続く、ＤＡＴＡ（コマンド本体）の長さを示す。ＬＥは、コマンド応答時に期待するデータの最大長さを示す。
【００６２】
次に、コマンド応答時の情報フィールド部は図４（ｄ）に示すデータが格納される。ここで、ＤＡＴＡはデータフィールドを示し、ＳＷｌ、ＳＷ２は応答に対するステータス情報を示す。以上説明したように、伝送プロトコルのフレーム構成は接触用と非接触用とでは互いに異なっている。
【００６３】
そのため、本発明においては、接触用伝送時及び非接触用伝送時のいずれにおいても、また、本発明によるコンビ型ＩＣカードに格納されるシステムプログラム及びアプリケーションプログラムのいずれもが参照可能な共有情報のテーブルを揮発性メモリ１０５に設けている。
【００６４】
コマンド受信時に用いられる共有情報を図５に示し、コマンド応答送信時に用いられる共通情報を図７に示す。詳細は後述するが、図５のＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２、ＬＣ、ＬＥの各値は図４（ｃ）に示したコマンド受信時の情報フィールド部における同名の各フィールドに対応し、格納アドレスＲ＿ＤＡＴＡ＿ＡＤ、受信データ長Ｒ＿ＤＡＴＡ＿ＬＥＮはコマンド受信時の情報フィールド部におけるＤＡＴＡの格納場所を示す。
【００６５】
また、プロトコル情報Ｒ＿ＰＳＴＡＴには、図６に示すコマンド受信時のプロトコル情報が対応し、受信ＩＮＦ長Ｒ＿ＩＮＦ＿ＬＥＮは、図４（ａ）に示した先頭フィールド部のＬＥＮに対応する。さらに非接触／接触識別フラグＩＣＣ＿ＦＬＡＧは前述した接触／非接触判定手段１０２が判定した接続モードを示し、例えばこの値が０であれば接触モード、１であれば非接触モードであることを示す。
【００６６】
同様に詳細は後述するが、図７における送信データ格納アドレスＴ＿ＤＡＴＡ＿ＡＤ、送信データ長Ｔ＿ＤＡＴＡ＿ＬＥＮ、コマンド実行結果ＳＷは、図４（ｄ）に示すコマンド応答送信時情報フィールド部のＤＡＴＡ、ＳＷ１、ＳＷ２に対応する。また、プロトコル情報Ｔ＿ＰＳＴＡＴには、図８に示すコマンド応答送信時のプロトコル情報に示す、コマンド応答送信ＴＲＳ＿Ｉまたはウエイト要求送信ＴＲＳ＿ＷＲｅｑを格納する。
【００６７】
以下に上述した共有情報を用いて本発明による多目的用途のコンビ型ＩＣカードのアプリケーション実行方法を詳細に説明する。
【００６８】
まず、コンビ型ＩＣカードは、接触式または非接触式で外部機器と接続を開始したとき、どちらのＩ／Ｆで起動しているかを、接触／非接触判定手段１０２により判定して、ＣＰＵ１０４がシステムプログラムの動作を開始し、システムプログラムに沿って、コンビ型ＩＣカード１００を制御する。このシステムプログラムに沿った制御動作を図９のフローチャートに従って説明する。
【００６９】
システムプログラムスタート後（ＳＰ１）、システムプログラムに基づきＣＰＵ１０４によって図２または図３に示す最初に実行したいアプリケーションプログラムの情報を揮発性メモリ１０５にセット、例えば、不揮発性メモリ１０６から得た情報を揮発性メモリ１０５に格納して登録しておく（ＳＰ２）。
【００７０】
なお、実行すべきアプリケーションプログラムを予め選択するのは、後述のＳＰ１２において、アプリケーション選択コマンドを外部機器から発行しなくとも直ちに最初に登録したアプリケーションに分岐できるようにするためである。このステップは、必須ではなく、また接触式／非接触式を判定する前でなくともよい。最初のコマンドを受信するまで、例えば後述のＳＰ５の直後や、ＳＰ９直後に、上記ＳＰ２を実行するように設定してもよい。
【００７１】
アプリケーションプログラムの情報として、例えばアプリケーションプログラム登録時、予め、不揮発性メモリ１０６の特定アドレスに対してアプリケーションのＩＤとアプリケーションの格納先（分岐先）情報が格納されている。
【００７２】
接触式で接続しているか非接触式で接続しているかを接触／非接触判定手段１０２の判定結果を参照することにより判断する（ＳＰ３）。接触式であると判定した場合、ＳＰ４以後の処理を行う。
【００７３】
続いて、揮発性メモリ１０５に接触モードであることを示す内部フラグを０にセットする(ＳＰ４）。その後、接触用Ｉ／Ｆ１０３を使用して初期応答情報（ＡＴＲ：Answer to Reset）を接触用外部機器１１０に送信する（ＳＰ５）。ＡＴＲは、接触式ＩＣカードと接触用外部機器１１０とが互いに接続されたとき、最初にＩＣカードから接触用外部機器１１０に対して送信するＩＣカード情報である。接触用外部機器１１０に通知される情報には、通信速度などの接続情報も含まれている。
【００７４】
ＳＰ５にて示した送信が終了すると、接触用外部機器１１０とコンビ型ＩＣカード１００の接触用Ｉ／Ｆ１０３との間でコマンドの送信／受信が可能になる。コマンドは、接続された接触用外部機器１１０から図４（ａ）に示した接触用伝送プロトコルコマンドの形式によってコンビ型ＩＣカード１００に送信される。コマンド実行結果に対応する応答も同一形式によって、コンビ型ＩＣカード１００から接触用外部機器１１０に送信される。
【００７５】
ＳＰ６では、図４（ａ）に示した接触式伝送プロトコルによるコマンド受信処理を行う。接続された接触用外部機器１１０からコマンドを送信し、接触用Ｉ／Ｆ１０３で受信した情報をコマンドブロック１フレーム分、揮発性メモリ１０５に格納する。ここでコマンドブロックとは、図４に示すそれぞれの伝送プロトコルコマンド１フレーム分を示す。
【００７６】
続いて、受信したコマンド情報を上位のアプリケーションプログラムが参照できるようにするため、揮発性メモリ１０５に格納されたコマンドブロックから情報を切り出し、図５に示した共有情報として揮発性メモリ１０５に格納する（ＳＰ７）。
【００７７】
すなわち、ＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２、ＬＣ、ＬＥの各値は、揮発性メモリ１０５のアドレスＲ＿ａ、Ｒ＿ｂ、Ｒ＿ｃ、Ｒ＿ｄ、Ｒ＿ｅ、Ｒ＿ｆにそれぞれ格納される。ＤＡＴＡの格納アドレスＲ＿ＤＡＴＡ＿ＡＤ、及び受信データ長Ｒ＿ＤＡＴＡ＿ＬＥＮは、揮発性メモリ１０５の各アドレスＲ＿ｇ、Ｒ＿ｈにそれぞれ格納される。
【００７８】
プロトコル情報Ｒ＿ＰＳＴＡＴは、先頭フィールド部のプロトコル制御情報を示すＰＣＢを参照した図６のコマンド受信時のプロトコル情報として、揮発性メモリ１０５のアドレスＲ＿ｉに格納される。コマンド受信の場合、ＲＣＶ＿Ｉを格納し、ウエイト要求に対する応答受信の場合、ＲＣＶ＿ＷＲｅｓを、それぞれ格納する。
【００７９】
受信ＩＮＦ長Ｒ＿ＩＮＦ＿ＬＥＮは、先頭フィールド部における、情報フィールド部の長さを示すＬＥＮを参照して揮発性メモリ１０５のアドレスＲ＿ｊに格納される。非接触／接触識別フラグＩＣＣ＿ＦＬＡＧには、ＳＰ４のステップでセットされたフラグの値０が揮発性メモリ１０５のアドレスＲ＿ｋに格納される。次に、後述するＳＰ１２の処理を行う。
【００８０】
一方、ＳＰ３において、非接触式であると判定された場合、ＳＰ８以後の処理を行う。まず、揮発性メモリ１０５に非接触モードであることを示す内部フラグを１にセットする（ＳＰ８）。その後、非接触用外部機器１０９と非接触用Ｉ／Ｆ１０１を使用して初期応答コマンドの交換を行う（ＳＰ９）。
【００８１】
ＳＰ９における初期応答コマンドの交換が終了すると、非接触用外部機器１０９とコンビ型ＩＣカード１００の非接触用Ｉ／Ｆ１０１との間でコマンドの送信／受信が可能になる。
【００８２】
コマンドは、非接触用外部機器１０９から図４（ｂ）に示す非接触用伝送プロトコルコマンドの形式によってコンビ型ＩＣカード１００に送信される（ＳＰ１０）。コマンド実行結果に対する応答も同一形式によって、コンビ型ＩＣカード１００から非接触用外部機器１０９に送信される。
【００８３】
ＳＰ１０では、非接触式伝送プロトコルによるコマンド受信処理を行う。非接触用外部機器１０９からコマンドを送信し、非接触用Ｉ／Ｆ１０１で受信した情報を前述した接触式の場合と同様にコマンドブロック１フレーム分を揮発性メモリ１０５に格納する。なお、情報フィールド部に格納されるデータ構成は、前述した接触式の場合と同一である。
【００８４】
続いて、受信したコマンド情報を上位のアプリケーションプログラムが参照できるようにするため、揮発性メモリ１０５に格納されたコマンドブロックから情報を切り出し、図５に示す共有情報として揮発性メモリ１０５にそれぞれ格納する（ＳＰ１１）。
【００８５】
共有情報として揮発性メモリ１０５に格納するデータのうち、受信ＩＮＦ長Ｒ＿ＩＮＦ＿ＬＥＮは、非接触伝送プロトコルの場合、情報として存在しないため、コマンドブロック１フレーム受信時に、システムプログラム内で受信データ数をカウントして、情報フィールド部の長さを算出した値が揮発性メモリ１０５のアドレスＲ＿ｊに格納される。非接触／接触識別フラグＩＣＣ＿ＦＬＡＧには、ＳＰ８のステップでセットしたフラグの値１が揮発性メモリ１０５のアドレスＲ＿ｋに格納される。
【００８６】
その他の共有情報は、前述した接触式と同様に揮発性メモリ１０５のそれぞれのアドレスに格納される。次にＳＰ１２の処理を行う。
【００８７】
ＳＰ１２では、非接触用外部機器１０９あるいは接触用外部機器１１０から送信されたコマンドがシステムプログラム上に搭載した特定のアプリケーションを選択する選択コマンドかどうかを、アプリケーションプログラムが揮発性メモリ１０５をアクセスして判定する。
【００８８】
アプリケーションの選択コマンドであるとアプリケーションプログラムが判定した場合、上記アプリケーションプログラムは、以降の処理を続行し、ＳＰ１４へ進み選択したアプリケーションの分岐先の情報を揮発性メモリ１０５に格納する。アプリケーションプログラムの分岐先情報は、ＳＰ２のステップで格納した揮発性メモリ１０５の領域から分岐先情報を参照することにより得られる。
【００８９】
また、アプリケーションの選択コマンドに対する応答を非接触用外部機器１０９及び接触用外部機器１１０へ送信するため、図７に示したコマンド応答送信時に、指定する情報を揮発性メモリ１０５に格納する。アプリケーションの選択コマンドでない場合、ＳＰ１３に進み揮発性メモリ１０５から現在選択されているアプリケーションの分岐先情報を読み出した後、上記アプリケーションプログラムに分岐する。
【００９０】
ＳＰ１５では、コマンドの実行結果に対する応答を接触用Ｉ／Ｆ１０３か非接触用Ｉ／Ｆ１０１のどちらで非接触用外部機器１０９または接触用外部機器１１０へ送信するかを判定する。判定は、ＳＰ４、ＳＰ８の各ステップでセットした内部フラグの値によりなされる。内部フラグの値が０の時、接触式と判定し、ＳＰ１６を実行する。内部フラグの値が１の時、非接触式と判定し、ＳＰ１７を実行する。
【００９１】
接触式の場合、ＳＰ１６において、図７に示すコマンド応答送信時に指定する情報（送信データ格納アドレスＴ＿ＤＡＴＡ＿ＡＤ及び送信データ長Ｔ＿ＤＡＴＡ＿ＬＥＮ）を参照し、図４（ａ）に示す接触用伝送プロトコルコマンド構成に変換して送信データとして揮発性メモリ１０５に格納する。そして、送信データを揮発性メモリ１０５から順番に読み出し、接触用Ｉ／Ｆ１０３を介して接触用外部機器１１０に送信する。データ送信後は、次のコマンドを受信するためにＳＰ６へ戻る。
【００９２】
図７に示すコマンド応答送信時に指定する情報は、ＳＰ１３またはＳＰ１４において、次のように揮発性メモリ１０５に対して予め格納しておく。
【００９３】
図７における揮発性メモリ１０５のアドレスＴ＿ａに送信データ格納アドレスＴ＿ＤＡＴＡ＿ＡＤ、アドレスＴ＿ｂに送信データ長Ｔ＿ＤＡＴＡ＿ＬＥＮ、アドレスＴ＿ｃにコマンド実行結果ＳＷを格納する。これらは、図４（ｂ）のコマンド応答送信時情報フィールド部のＤＡＴＡ、ＳＷ１、ＳＷ２にデータを格納するための情報である。
【００９４】
また、アドレスＴ＿ｄにプロトコル情報Ｔ＿ＰＳＴＡＴを格納する。プロトコル情報Ｔ＿ＰＳＴＡＴには、図８のコマンド応答送信時のプロトコル情報に示す、コマンド応答送信ＴＲＳ＿Ｉまたはウエイト要求送信ＴＲＳ＿ＷＲｅｑが格納される。これは、図４（ａ）に示した接触用伝送プロトコルコマンドにおける先頭フィールド部のＰＣＢにデータを格納するための情報である。また、ウエイト要求を送信する場合は、アドレスＴ＿ｅにウエイト要求値Ｔ＿ＷＡＩＴを格納する。
【００９５】
これらの情報については、常にすべての情報を格納しておく必要はない。
【００９６】
コマンドに対する応答を送信したい場合は、送信データ格納アドレスＴ＿ＤＡＴＡ＿ＡＤ、送信データ長Ｔ＿ＤＡＴＡ＿ＬＥＮ、コマンド実行結果ＳＷに情報を格納する。プロトコル情報Ｔ＿ＰＳＴＡＴには、図８に示したコマンド応答送信ＴＲＳ＿Ｉを格納する。
【００９７】
ウエイト要求を送信するときは、プロトコル情報Ｔ＿ＰＳＴＡＴ、ウエイト要求値Ｔ＿ＷＡＩＴのみ格納する。プロトコル情報Ｔ＿ＰＳＴＡＴには、ウエイト要求送信ＴＲＳ＿ＷＲｅｑを格納する。
【００９８】
上述の格納情報を参照し、図４（ａ）の接触用伝送プロトコルコマンド構成への変換は、次のように行う。先頭フィールド部、情報フィールド部、最終フィールド部の順番に揮発性メモリ１０５に格納する。
【００９９】
先頭フィールド部のＮＡＤには、コマンド受信時のＮＡＤの送信元と宛先を反対にしたデータを格納する。ＰＣＢには、プロトコル情報Ｔ＿ＰＳＴＡＴの制御情報を格納する。ＬＥＮには、情報フィールド部の長さを格納する。情報フィールド部のＤＡＴＡは、揮発性メモリ１０５に格納した送信データ格納アドレスＴ＿ＤＡＴＡ＿ＡＤから送信データ長Ｔ＿ＤＡＴＡ＿ＬＥＮ分読み出したデータを格納する。ＳＷ１、ＳＷ２には、コマンド実行結果ＳＷのデータを格納する。最終フィールド部には、伝送ブロックの誤り検出符号を格納する。
【０１００】
ウエイト要求を送信する場合は、先頭フィールド部のＬＥＮに１を格納し、情報フィールド部にウエイト要求値Ｔ＿ＷＡＩＴの値を情報フィールドＤＡＴＡ部に１バイト格納する。
【０１０１】
一方、非接触式の場合、ＳＰ１７において図７に示すコマンド応答送信時に指定する情報を参照し、図４に示す非接触用伝送プロトコルコマンド構成に変換し、送信データとして揮発性メモリ１０５に格納する。そして、送信データを揮発性メモリ１０５から順番に読み出し、非接触用Ｉ／Ｆ１０１を介して非接触用外部機器１０９に送信する。データ送信後は、次のコマンドを受信するためにＳＰ１０へ戻る。
【０１０２】
図７に示すコマンド応答送信時に指定する情報は、ＳＰ１３またはＳＰ１４において、上述したように揮発性メモリ１０５にあらかじめ格納しておく。
【０１０３】
上述の格納情報を参照し、図４（ｂ）の非接触用伝送プロトコルコマンド構成への変換は、次のように行う。先頭フィールド部、情報フィールド部、最終フィールド部に関する各情報を、それらの順番にて揮発性メモリ１０５にそれぞれ格納する。
【０１０４】
先頭フィールド部のＰＣＢには、プロトコル情報Ｔ＿ＰＳＴＡＴの制御情報を格納する。ＣＩＤには、コマンド受信時に得られたＣＩＤの値を格納する。情報フィールド部のＤＡＴＡは、揮発性メモリ１０５に格納した送信データ格納アドレスＴ＿ＤＡＴＡ＿ＡＤから送信データ長Ｔ＿ＤＡＴＡ＿ＬＥＮ分読み出したデータを格納する。ＳＷ１、ＳＷ２には、コマンド実行結果ＳＷのデータを格納する。最終フィールド部には、伝送ブロックの誤り検出符号を格納する。
【０１０５】
ウエイト要求を送信する場合は、情報フィールド部にＴ＿ＷＡＩＴの値を情報フィールドＤＡＴＡ部に１バイト格納する。
【０１０６】
次に、図９に示したＳＰ１３のステップで実行するアプリケーションプログラムの動作手順について図１０、図１１、図１２を用いて説明する。
【０１０７】
図１０は、接触式／非接触式両方で実行可能な共有アプリケーションプログラムの動作フローチャートである。システムプログラムからこのアプリケーションプログラムに分岐し（ＳＡＰ００）、続いて、図５に示したコマンド受信時に格納される共有情報の内、揮発性メモリ１０５のアドレスＲ＿ｋから接触／非接触識別フラグＩＣＣ＿ＦＬＡＧを読み出し、現在の接続モードを判定する（ＳＡＰ０１）。接触モードであると判定したとき、接触モードでのコマンド判定処理を行う（ＳＡＰ０２）。
【０１０８】
コマンドの判定処理は、図５に示した、揮発性メモリ１０５に格納された共通情報である、ＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２の値を揮発性メモリ１０５の各アドレスＲ＿ａ、Ｒ＿ｂ、Ｒ＿ｃ、Ｒ＿ｄから読み出して判定される。
【０１０９】
次に、非接触モードのコマンド処理を実行して（ＳＡＰ０３）、ＳＡＰ０６へ進む。
【０１１０】
ＳＡＰ０１において、非接触モードであると判定したとき、非接触モードでのコマンド判定処理を行う（ＳＡＰ０４）。コマンドの判定処理は、図５に示した、揮発性メモリ１０５に格納された共有情報である、ＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２の値を揮発性メモリ１０５の各アドレスＲ＿ａ、Ｒ＿ｂ、Ｒ＿ｃ、Ｒ＿ｄから読み出して判定される。
【０１１１】
次に、非接触モードのコマンド処理を実行して（ＳＡＰ０５）、ＳＡＰ０６へ進む。ＳＡＰ０６では、ＳＡＰ０３またはＳＡＰ０５において実行したコマンドの応答情報を図７に示したコマンド応答送信時に指定する情報に従って、揮発性メモリ１０５に格納する。この後、システムプログラムヘ復帰する（ＳＡＰ０７）。
【０１１２】
図１１は、接触式のみで実行可能なアプリケーションプログラムの動作フローチャートである。システムプログラムからこのアプリケーションプログラムに分岐し（ＳＡＰ１０）、図５に示したコマンド受信時に格納される共有情報の揮発性メモリ１０５のアドレスＲ＿ｋから接触／非接触識別フラグＩＣＣ＿ＦＬＡＧを読み出し、現在の接続モードを判定する（ＳＡＰ１１）。
【０１１３】
接触モードであると判定したとき、接触モードでのコマンド判定処理を行う（ＳＡＰ１２）。コマンドの判定処理は、図５に示した、揮発性メモリ１０５に格納された、共通情報であるＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２の値を揮発性メモリ１０５の各アドレスＲ＿ａ、Ｒ＿ｂ、Ｒ＿ｃ、Ｒ＿ｄから読み出して判定される。
【０１１４】
次に、接触モードのコマンド処理を実行して（ＳＡＰ１３）、ＳＡＰ１５へ進む。
【０１１５】
ＳＡＰ１１において、非接触モードであると判定したとき、受信コマンドは非接触モードで実行不可と判定し、エラー応答情報を用意する（ＳＡＰ１４）。
【０１１６】
ＳＡＰ１５では、ＳＡＰ１３によって実行したコマンドの応答情報、またはＳＡＰ１４のエラー応答情報を図７に示したコマンド応答送信時に指定する情報に従って、揮発性メモリ１０５に格納する。この後、システムプログラムヘ復帰する（ＳＡＰ１６）。
【０１１７】
図１２は、非接触式のみで実行可能なアプリケーションプログラムの動作フローチャートである。システムプログラムから、このアプリケーションプログラムに分岐し（ＳＡＰ２０）、図５に示したコマンド受信時に格納される共有情報である、接触／非接触識別フラグＩＣＣ＿ＦＬＡＧを揮発性メモリ１０５のアドレスＲ＿ｋから読み出し、現在の接続モードを判定する（ＳＡＰ２１）。
【０１１８】
非接触モードであると判定したとき、非接触モードでのコマンド判定処理を行う（ＳＡＰ２２）。コマンドの判定処理は、図５に示した、揮発性メモリ１０５に格納された、共通情報であるＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２の値を揮発性メモリ１０５の各アドレスＲ＿ａ、Ｒ＿ｂ、Ｒ＿ｃ、Ｒ＿ｄからそれぞれ読み出して判定される。
【０１１９】
次に、非接触モードのコマンド処理を実行して（ＳＡＰ２３）、ＳＡＰ２５へ進む。
【０１２０】
一方、ＳＡＰ２１において、接触モードであると判定されたとき、受信コマンドは接触モードで実行不可と判定して、エラー応答情報を用意する（ＳＡＰ２４）。
【０１２１】
ＳＡＰ２５では、ＳＡＰ２３において実行したコマンドの応答情報または、ＳＡＰ１４のエラー応答情報を図７に示したコマンド応答送信時に指定する情報に従って、揮発性メモリ１０５に格納する。この後、システムプログラムヘ復帰する（ＳＡＰ２６）。
【０１２２】
次に、図１０のＳＡＰ０３またはＳＡＰ０５、図１１のＳＡＰ１３、図１２のＳＡＰ２３の各ステップで実行する、コマンド実行処理について図１３、図１４を用いて説明する。
【０１２３】
コマンド実行処理には、時間がかかるものがあり、非接触用外部機器１０９、接触用外部機器１１０から受信したコマンドをアプリケーションプログラムが実行している間に、時間超過のため、非接触用外部機器１０９、接触用外部機器１１０がコマンドに対する応答なしと判定する場合がある（いわゆる、タイムアウト）。
【０１２４】
このようにコマンド処理に時間がかかる場合、非接触用外部機器１０９、接触用外部機器１１０に対してウエイト要求を送信し、ウエイト応答を受信することで、非接触用外部機器１０９、接触用外部機器１１０は、送信したコマンドに対する応答を受信するまで待つことができる。
【０１２５】
また、ウエイト時間を延長したい場合は、再度、非接触用外部機器１０９、接触用外部機器１１０に対してウエイト要求を行う。このウエイト要求送信／応答受信の各動作は、図１３、図１４におけるコマンド処理で行うように設定されている。
【０１２６】
図１３に示すように、まず、コマンド処理がスタートしたとき（ＳＣ００）、コマンド処理にウエイト要求が必要かどうかを判定する（ＳＣ０１）。ウエイト要求が必要なコマンドとして、例えば認証など暗号処理を伴う演算処理に時間がかかるコマンドが挙げられる。ウエイト要求が必要ないコマンドとして、例えばアプリケーションプログラムが管理するファイルを読み出すような時間がかからないコマンドが挙げられる。
【０１２７】
コマンド処理にウエイト要求が必要かどうかを判定する方法としては、予め処理に長時間を要することが既知のコマンドをアプリケーションが判定したり、内蔵するフラッシュメモリの消去等処理に長時間を要する内部処理中に、受信したコマンドをシステムプログラムが判定したりする等がある。
【０１２８】
ウエイト要求が必要なコマンドでは、コマンド実行前にウエイト要求を非接触用外部機器１０９、接触用外部機器１１０に送信する必要がある。ウエイト要求が必要であると判定した場合、図５における共有情報の揮発性メモリに格納された、プロトコル情報Ｒ＿ＰＳＴＡＴをアドレスＲ＿ｉから読み出して、受信ステータスがウエイト応答受信ＲＣＶ＿ＷＲｅｓかどうかを判定する（ＳＣ０２）。
【０１２９】
ＲＣＶ＿ＷＲｅｓでない場合は、まだウエイト要求を行っていないのでＳＣ０４へ進み、ウエイト要求送信を行うための情報を用意する。図７の送信時に指定する情報のうち、プロトコル情報Ｔ＿ＰＳＴＡＴに格納する情報として図８のウエイト要求送信ＴＲＳ＿ＷＲｅｑとウエイト要求値Ｔ＿ＷＡＩＴに格納する情報を用意する。
【０１３０】
また、コンビ型ＩＣカード１００のタイマ回路１０７と割り込み回路１０８を利用してウエイトの自動延長を行うために、自動延長の時間間隔をタイマカウント数として揮発性メモリ１０５にセットする（ＳＣ０４）。続いて、タイマ回路１０７を起動する（ＳＣ０５）。
【０１３１】
ＳＣ０２における判定において、受信ステータスがＲＣＶ＿ＷＲｅｓすなわち、ウエイト要求に対する応答有りと判定されたとき、次に進みコマンドを実行する（ＳＣ０６）。続いて、ウエイト要求の自動延長用タイマを停止する（ＳＣ０７）。
【０１３２】
一方、ＳＣ０１における判定において、ウエイトが必要ないコマンドと判定した場合、受信ステータスがコマンド受信ＲＣＶ＿Ｉであることを確認し（ＳＣ０３）、ＳＣ０６に進みコマンドを実行する。受信ステータスがコマンド受信ＲＣＶ＿Ｉでない場合は、エラー応答送信のための情報を用意するようになっている（ＳＣ０８）。
【０１３３】
ウエイト要求が必要なコマンド実行において１度目のウエイト要求／応答後、ＳＣ０６のステップでコマンド実行中に、ＳＣ０４、ＳＣ０５で起動したタイマ割り込みを利用して、ウエイト再延長要求を行うようになっている。コマンド実行中にタイマ割り込みが発生したとき、図１４に示すフローでウエイト再延長要求送信／応答受信を行う。
【０１３４】
まず、タイマ−割り込みがスタートすると（ＳＴ００）、揮発性メモリ１０５からタイマカウント値を読み出し、０かどうか確認する（ＳＴ０１）。０でなければ、まだ再延長時間経過していないと見なし、タイマカウント値を１減じて揮発性メモリ１０５に格納し（ＳＴ０３）割り込み処理を終了する。
【０１３５】
タイマカウント値が０になっていれば、再延長時間経過したとみなし、接続されている外部機器１０９、１１０との間でウエイト要求を送信し（ＳＴ０２）、続いて、応答受信を行う（ＳＴ０４）。そして、ＳＴ０４−１のステップによってタイマカウント数を再セットして割り込み処理を終了する（ＳＴ０５）。図１３に示したＳＣ０６のコマンド実行が終了するまで、ウエイト時間の再延長処理が行われる。
【０１３６】
図１５は、図９、図１０、図１１、図１２、図１３、図１４に記載の動作において、外部機器、システムプログラム、アプリケーション間のデータのやりとりを簡単に示したタイミングチャートである。
【０１３７】
図９のＳＰ６からＳＰ１６の接触用Ｉ／Ｆによるコマンドの送受信およびＳＰ１０からＳＰ１７の非接触用Ｉ／Ｆによるコマンドの送受信ループにおいて、外部機器１０９、１１０からウエイトを必要としない第１のコマンドを送信したとき、コンビ型ＩＣカード１００のシステムプログラムでコマンドの受信を行い、図１０、図１１、図１２のいずれかのアプリケーションプログラムヘコマンド情報が渡される。
【０１３８】
それぞれのアプリケーションプログラム内でコマンドを実行し、終了するとコマンドの応答情報をシステムプログラムヘ返却する。システムプログラムにおいて、接触式または非接触用Ｉ／Ｆを判定し、接続されている外部機器１０９、１１０にコマンド応答を送信する。
【０１３９】
上記外部機器１０９、１１０からウエイトを必要とする第２のコマンドを送信したとき、システムプログラムでコマンドの受信を行い、図１０、図１１、図１２のいずれかのアプリケーションプログラムへコマンド情報が渡される。
【０１４０】
それぞれのアプリケーションプログラム内のコマンド実行ステップを示す、図１３において、ウエイト要求が必要と判定されたとき、第１のウエイト要求情報をシステムプログラムヘ返却する（戻す）。
【０１４１】
システムプログラムにおいて、接続状態にあるのが、接触式Ｉ／Ｆ１０３または非接触用Ｉ／Ｆ１０１かを判定し、その判定結果に応じた接続されている外部機器１０９、１１０にウエイト要求を送信する。次に外部機器１０９、１１０がシステムプログラムヘ第１のウエイト要求に対するウエイト応答をシステムプログラムヘ送信する。
【０１４２】
ウエイト応答情報は、各アプリケーションプログラムヘ渡され図１３において、コマンド実行を開始する。コマンド実行が第１のウエイト要求による時間内に終了しない場合、第２のウエイト要求を行うために、図１４における割り込み処理によって、ウエイトの再延長要求／応答を行う。
【０１４３】
コマンド実行が終了したとき、コマンドの応答情報をシステムプログラムヘ返却する。システムプログラムにおいて、接続状態にあるのが、接触式Ｉ／Ｆ１０３または非接触用Ｉ／Ｆ１０１かを判定し、その判定結果に応じた接続されている、外部機器１０９、１１０にコマンド応答を送信する。
【０１４４】
以上のような実施の形態により、接触式および非接触式の伝送プロトコル上の違いを吸収して、アプリケーションプログラムに確実にコマンドを受け渡すことができ、確実にコマンド実行結果を外部機器に返却することができるアプリケーション共通化方式を提供することができる。
【０１４５】
また、コンビ型ＩＣカードに搭載しているアプリケーションプログラムから外部機器に対してウエイト要求を行った場合、接触用Ｉ／Ｆ１０３が選択されていても、非接触用Ｉ／Ｆ１０１が選択されていても、外部機器１０９、１１０でタイムアウトが発生することがないアプリケーション共通化方式を提供することができる。
【０１４６】
一枚のコンビ型ＩＣカードに、接触式／非接触式の両方で動作可能なアプリケーションプログラム、接触式のみで動作可能なアプリケーションプログラム、非接触式のみで動作可能なアプリケーションなどのような複数のアプリケーションプログラムが搭載された場合にも、アプリケーションプログラムに確実にコマンドを受け渡すことができ、確実にコマンド実行結果を外部機器に返却（出力）することができるアプリケーション共通化方式を提供することができる。
【０１４７】
本発明は、前記の課題を解決するために、以下の各手段１．〜６．をそれぞれ提供している。
【０１４８】
手段１．接触用Ｉ／Ｆと非接触用Ｉ／Ｆを有し、どちらのＩ／Ｆで起動されているか判別可能なシステムプログラムを搭載したコンビ型ＩＣカードにおいて、前記システムプログラムは、外部機器から受信した接触用Ｉ／Ｆのコマンドと非接触用Ｉ／Ｆのコマンドとからコマンド情報を抽出して揮発性メモリに格納しＩＣカードアプリケーションプログラムにコマンド情報を受け渡すように構成されているコンビ型ＩＣカードのアプリケーション共通化方式が提供される。
【０１４９】
手段２．接触用Ｉ／Ｆと非接触用Ｉ／Ｆを有し、どちらのＩ／Ｆで起動されているか判別可能なシステムプログラムを搭載したコンビ型ＩＣカードにおいて、前記システムプログラムは、ＩＣカードアプリケーションプログラムからの送信情報を揮発性メモリに格納し、接触用Ｉ／Ｆのコマンドまたは非接触用Ｉ／Ｆのコマンドに変換して、外部機器へ送信するように構成されているコンビ型ＩＣカードのアプリケーション共通化方式が提供される。
【０１５０】
手段３．接触用Ｉ／Ｆと非接触用Ｉ／Ｆを有し、どちらのＩ／Ｆで起動されているか判別可能なシステムプログラムを搭載したコンビ型ＩＣカードにおいて、前記システムプログラムは、外部機器から受信した接触用Ｉ／Ｆのコマンドと非接触用Ｉ／Ｆのコマンドからコマンド情報を抽出して揮発性メモリに格納しＩＣカードアプリケーションプログラムにコマンド情報を受け渡す。前記コマンド情報に、接触用Ｉ／Ｆまたは非接触用Ｉ／Ｆのプロトコル情報を含み、ＩＣカードアプリケーションプログラムが参照できるように構成されているコンビ型ＩＣカードのアプリケーション共通化方式が提供される。
【０１５１】
手段４．接触用Ｉ／Ｆと非接触用Ｉ／Ｆを有し、どちらのＩ／Ｆで起動されているか判別可能なシステムプログラムを搭載したコンビ型ＩＣカードにおいて、前記システムプログラムは、外部機器から受信した接触用Ｉ／Ｆのコマンドと非接触用Ｉ／Ｆのコマンドからコマンド情報を抽出して揮発性メモリに格納しＩＣカードアプリケーションプログラムにコマンド情報を受け渡す。前記コマンド情報に、接触用Ｉ／Ｆまたは非接触用Ｉ／Ｆの接触モード／非接触モードの識別フラグを含み、ＩＣカードアプリケーションプログラムが参照できるように構成されているコンビ型ＩＣカードのアプリケーション共通化方式が提供される。
【０１５２】
手段５．接触用Ｉ／Ｆと非接触用Ｉ／Ｆを有し、どちらのＩ／Ｆで起動されているか判別可能なシステムプログラムを搭載したコンビ型ＩＣカードにおいて、前記システムプログラムは、ＩＣカードアプリケーションプログラムから送信指定したウエイト要求コマンドに対し、ウエイト要求／応答を外部機器に対して送受信し、ウエイト時間延長が必要な場合はウエイト要求コマンドの送受信を自動で行うように構成されているコンビ型ＩＣカードのアプリケーション共通化方式が提供される。
【０１５３】
手段６．接触用Ｉ／Ｆと非接触用Ｉ／Ｆを有し、どちらのＩ／Ｆで起動されているか判別可能なシステムプログラムを搭載したコンビ型ＩＣカードにおいて、前記システムプログラムは、一枚のコンビ型ＩＣカード上に、接触式／非接触式両方で動作可能なアプリケーションプログラム、接触式のみで動作可能なアプリケーションプログラム、非接触のみで動作可能なアプリケーションプログラムなど複数アプリケーションプログラムを搭載した場合に、アプリケーションプログラムを選択できるように構成されている、コンビ型ＩＣカードのアプリケーション共通化方式が提供される。
【０１５４】
また、本発明のコンビ型ＩＣカードの制御方法は、前記の課題を解決するために、以下の各制御方法１．〜５．をそれぞれ提供している。
【０１５５】
制御方法１．は、外部機器との接触用Ｉ／Ｆ及び非接触用Ｉ／Ｆを有し、どちらのＩ／Ｆで起動されているか判別可能なシステムプログラム及び少なくとも１つのアプリケーションプログラムを格納した記憶領域を備えた接触式及び非接触式兼用のＩＣカードであるコンビ型ＩＣカードの制御方法において、前記システムプログラムにより、現在の外部機器との接続モードが接触式か非接触式かを判別し、前記判別結果を記憶する第１のステップと、前記外部機器から受信したコマンドの各フィールドに含まれるコマンド情報を抽出して前記アプリケーションプログラムからアクセス可能な記憶領域に記憶する第２のステップと、前記受信したコマンドが実行すべきアプリケーションの選択コマンドであるか判別する第３のステップと、前記第３のステップでアプリケーションの選択コマンドであれば選択されたアプリケーション実行に必要な情報を記憶する第４のステップと、前記第３のステップでアプリケーションの選択コマンドでなければ既に選択されているアプリケーションプログラムを実行する第５のステップと、前記コマンドあるいはアプリケーションプログラムの実行結果情報を前記記憶領域へ記憶する第６のステップと、前記第６のステップで記憶した実行結果情報を前記外部機器へ応答として送信（出力）する第７のステップとを含むことを特徴としている。
【０１５６】
制御方法２．は、さらに、前記第５のステップで実行すべきアプリケーションプログラムが、接触式及び非接触式のいずれの接続モードでも実行可能な場合、前記５のステップはさらに、前記第１のステップで判別した接続モードを確認する第８のステップと、前記第８のステップで確認された接続モードでアプリケーションを実行する第９のステップと、前記第９のステップで実行した結果情報を前記記憶領域へ記憶する第１０のステップを含んでいてもよい。
【０１５７】
制御方法３．は、前記第５のステップで実行すべきアプリケーションプログラムが、接触モードでのみ実行可能な場合、前記第５のステップはさらに、前記第１のステップで判別した接続モードを確認する第１１のステップと、前記第１１のステップで確認された接続モードが接触モードでない場合、エラー応答情報を前記記憶領域へ記憶する第１２のステップと、前記第１１のステップで確認された接続モードが接触モードである場合、接触モードで前記アプリケーションプログラムを実行する第１３のステップと、前記第１３のステップで実行した結果情報を前記記憶領域へ記憶する第１４のステップを含んでいてもよい。
【０１５８】
制御方法４．は、前記第５のステップで実行すべきアプリケーションプログラムが、非接触モードでのみ実行可能な場合、前記第５のステップはさらに前記第１のステップで判別した接続モードを確認する第１５のステップと、前記第１５のステップで確認された接続モードが非接触モードでない場合、エラー応答情報を前記記憶領域へ記憶する第１６のステップと、前記第１５のステップで確認された接続モードが非接触モードである場合、非接触モードで前記アプリケーションプログラムを実行する第１７のステップと、前記第１７のステップで実行した結果情報を前記記憶領域へ記憶する第１８のステップを含んでいてもよい。
【０１５９】
制御方法５．は、前記第５のステップで実行すべきアプリケーションプログラムが、前記外部機器に対してウエイト要求することを必要とする場合、前記５のステップはさらに、前記外部機器から既にウエイト応答情報を受信しているか確認する第１９のステップと前記第１９のステップでウエイト応答情報を受信していなければ、ウエイト要求情報を前記記憶領域へ記憶する第２０のステップと、前記第１９のステップでウエイト応答情報を受信しており、かつ所定の時間以内に前記アプリケーションの実行が完了しなかった場合、再度ウエイト要求情報を前記記憶領域へ記憶する第２１のステップとを含んでいてもよい。
【０１６０】
上記のような、本発明に係るコンビ型ＩＣカードの各制御方法は、それぞれ、コンピュータにて解読可能で実行可能な形態、例えばＣ言語にて記述されたシステムプログラムを、例えばＣＤ−ＲＯＭの形態にて市場に流通させることができる。
【０１６１】
【発明の効果】
以上説明したように、この発明によれば、接触用および非接触用Ｉ／Ｆを有するコンビ型ＩＣカードにおいて、共通に動作するアプリケーションプログラム、接触式でのみ動作するアプリケーションプログラム、非接触式でのみ動作するアプリケーションプログラムを搭載するシステムプログラムを有する、さまざまな用途に対応可能なコンビ型ＩＣカードを実現するアプリケーション共通化方式が提供できるという効果を奏する。
【図面の簡単な説明】
【図１】  本発明のコンビ型ＩＣカードを示すブロック図である
【図２】  上記コンビ型ＩＣカードにおける、システムプログラム上に一つの接触／非接触共通アプリケーションプログラムが構成されている場合を示すブロック図である。
【図３】  上記コンビ型ＩＣカードにおける、システムプログラム上に接触／非接触共通アプリケーションプログラム、接触専用アプリケーションプログラム、非接触専用アプリケーションプログラムなど複数のアプリケーションプログラムが構成されている場合を示すブロック図である。
【図４】  （ａ）〜（ｄ）は、上記コンビ型ＩＣカードにおける、接触式および非接触式のプロトコルの各フレーム構成図である。
【図５】  上記コンビ型ＩＣカードにおける、コマンド受信時にシステムプログラムとアプリケーションプログラムとが共有する共有情報の表である。
【図６】  上記コンビ型ＩＣカードにおける、コマンド受信時のプロトコル情報を示す表である。
【図７】  上記コンビ型ＩＣカードにおける、コマンド応答送信時に指定する情報を示す表である。
【図８】  上記コンビ型ＩＣカードにおける、コマンド応答送信時のプロトコル情報を示す表である。
【図９】  上記コンビ型ＩＣカードにおける、システムプログラムの動作フローチャートである。
【図１０】  上記コンビ型ＩＣカードにおける、接触式／非接触式共有アプリケーションの動作フローチャートである。
【図１１】  上記コンビ型ＩＣカードにおける、接触式専用アプリケーションの動作フローチャートである。
【図１２】  上記コンビ型ＩＣカードにおける、非接触式専用アプリケーションの動作フローチャートである。
【図１３】  上記コンビ型ＩＣカードにおける、アプリケーションプログラムコマンド実行の動作フローチャートである。
【図１４】  上記コンビ型ＩＣカードにおける、割り込み処理を使用したウエイト要求交換の動作フローチャートである。
【図１５】  上記コンビ型ＩＣカードにおける、外部機器、システムプログラム、アプリケーション間のデータのやりとりを示したタイミングチャートである。
【図１６】  従来のコンビ型ＩＣカードの動作を示すフローチャートである。
【符号の説明】
１０１    非接触用Ｉ／Ｆ（インターフェース）
１０２    接触／非接触判定手段（判定部）
１０３    接触用Ｉ／Ｆ（インターフェース）
１０４    ＣＰＵ（抽出部）
１０５    揮発性メモリ（第二記憶部）
１０６    不揮発性メモリ（第一記憶部）
１０９    非接触用外部機器（外部機器）
１１０    接触用外部機器（外部機器）
【図１】
0003863011.tif 000002
【図２】
0003863011.tif 000003
【図３】
0003863011.tif 000004
【図４】
0003863011.tif 000005
【図５】
0003863011.tif 000006
【図６】
0003863011.tif 000007
【図７】
0003863011.tif 000008
【図８】
0003863011.tif 000009
【図９】
0003863011.tif 000010
【図１０】
0003863011.tif 000011
【図１１】
0003863011.tif 000012
【図１２】
0003863011.tif 000013
【図１３】
0003863011.tif 000014
【図１４】
0003863011.tif 000015
【図１５】
0003863011.tif 000016
【図１６】
0003863011.tif 000017