JP2000514215A - プログラム可能でインテリジェントなデバイスのための、移植可能な安全なトランザクションシステム - Google Patents

プログラム可能でインテリジェントなデバイスのための、移植可能な安全なトランザクションシステム

Info

Publication number
JP2000514215A
JP2000514215A JP10502361A JP50236198A JP2000514215A JP 2000514215 A JP2000514215 A JP 2000514215A JP 10502361 A JP10502361 A JP 10502361A JP 50236198 A JP50236198 A JP 50236198A JP 2000514215 A JP2000514215 A JP 2000514215A
Authority
JP
Japan
Prior art keywords
module
terminal
program
virtual machine
logical address
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.)
Pending
Application number
JP10502361A
Other languages
English (en)
Inventor
ハインズ,ギードウ
ヨハネス、ピーター
Original Assignee
ユーロペイ・インターナショナル・ナムローゼ・フエンノートシャップ
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 ユーロペイ・インターナショナル・ナムローゼ・フエンノートシャップ filed Critical ユーロペイ・インターナショナル・ナムローゼ・フエンノートシャップ
Publication of JP2000514215A publication Critical patent/JP2000514215A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • G06Q20/3552Downloading or loading of personalisation data

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Input From Keyboards Or The Like (AREA)
  • Programmable Controllers (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

(57)【要約】 この発明は、第1の装置(1)と第2の装置との間でのトランザクションを実行するためのトランザクション管理システムを提供する。第1および第2の装置は、相互間での通信に適合され、その少なくとも1つは集積回路カードである。このシステムは、少なくとも1つの入出力装置(25)と、第1の装置上のコンピュータプログラムを解釈するるための移植可能な仮想マシン(20)とを含み、仮想マシンは少なくとも1つの入出力装置(25)用のドライバと仮想マイクロプロセッサとを含む。このシステムはさらに、プログラムを実行するための、解釈されたプログラムに応答する実行手段を含む。この発明の基礎となる一般的リンク技術の着想は、コンパイル時のチェックが成功裡に行なわれれば、ターゲットの実装に依存しない、トランザクションシステムにおける実行時間の保証およびデータのセキュリティと移植性とを組合せることである。アプリケーションプログラムは入出力装置と共通のインターフェイスを有ししたがって広範に異なった環境において移植可能な仮想マシン内に入出力装置用ドライバを含む仮想マシンをインタープリタとして使用し、メモリを割当て、解除し、そしてアプリケーションプログラム内にメモリの量の表示を含み、これはずなわち、プログラムが常にうまく実行されるかまたは全く実行されないということ、そしてセキュリティ管理機能が最小限に抑えられそれによって動作速度が向上するということを意味するのだが、そして、アプリケーションプログラムおよびデータベースにデータをインポートしデータをエクスポートする安全な方策を提供することにより、この着想が達成される。

Description

【発明の詳細な説明】 プログラム可能でインテリジェントなデバイスのための、 移植可能な安全なトランザクションシステム 本発明は、端末および集積回路カード等のプログラム可能な、インテリジェン トなデバイスを含むシステムに関し、また、現金自動預け払い機、パーソナルコ ンピュータ、有料テレビユニット、販売時点情報管理端末、ヘルスカード等を含 むそうしたカードおよび端末の操作の方法に関する。本発明は、金銭取引きを行 なう際に使用するのに特に好適である。 技術背景 代価の転送または交換を含む金銭取引き、もしくは、ヘルスケアカードを用い た取引き等の商用の取引きを行なうのに、または、GSM移動電話のSIMカー ド等の、一般にデータにアクセスするのに、種々の端末が知られており、販売時 点情報管理(POS)装置、現金自動預け払い機(ATM)またはGSM移動電 話等の端末が公知である。実際の製品は、米国、インテル社(Intel Corp.)に よって提供されるIntel 8031/8051シリーズ、または、集積回路カード (ICC)等の簡単な8ビットマイクロプロセッサを有する小さなハンドヘルド 装置から、UNIX(商標)または米国、マイクロソフト社(Microsoft Corp. )によって提供されるWindows NT等のオペレーティングシステムを実行する、3 2ビットのコンピュータという範囲に広がっている。これらの機械のいくつかは 、磁気ストライプカード、スマートカード、または、ユーザと端末との間で通信 を開始する前に必要な特定のユーザ識別および検証情報を記憶するICC等の、 個人ユーザカードとの間で交信する。ユーザがそのカードを端末に取付けられた カードリーダ内に配置すると、端末内の端末常駐プログラムが実行される。この プログラムは、カードを調べてユーザ情報の有効性をチェックし、必要であれば 、パスワードまたはPIN(個人識別番号)等の個人番号を要求する。検証が済 むと、プログラムは通常、ユーザが、現金の引出し、現時点の残高の照合等の、 実行されるべき所望のサービスを選択することができるようにする。端末は独立 (スタンドアローン)型であってもよく、または、ローカルにもしくは電気 通信ネットワークを介してより大きなコンピュータに接続されていてもよい。こ のような端末はしばしば、24時間いつでも利用可能とされ、最小のメンテナン スでかつ高い保全レベルで稼動せねばならない。 このような端末はハードウェアに巨額の投資がなされていることを示し、通常 は頻繁に置換されることはない。このような端末上で実行されるソフトウェアお よびプログラムは、新しいサービスが提供されると変更が必要となり、しかも、 安全に実行されなければならない。通常、銀行等の端末を操作している組織は、 各変更が保証されることを求める。このような変更は手による作業でも行なわれ るしまたは私有のもしくは公共の通信ネットワークを通じて遠隔作業でも行なわ れる。このことは米国特許番号第5,434,999号から知られている。この ような公知の方法では、端末の種類および型が新しい開発に際してわかっていな ければならない。これは、各端末のソフトウェアがその種類の端末のために特に 作られなければならず、したがってコスト集約的であるためである。さらに、た とえばすべての銀行またはクレジット会社等の、同様のサービスを提供する可能 性のあるすべての組織からのサービスを提供することができるように、端末はす べての組織のすべてのプログラムを処理することができなければならない。私用 および商用のいずれの人々も非常によく移動するので、1つの国の中で提供され るすべてのサービスが各端末で利用可能であれば有利である。このことはしかし 、各端末が不必要に大きな処理能力およびメモサイズを要する結果につながる。 さらに、これらのプログラムの各々は必要に応じて更新されなければならない。 1つの解決策として、各端末に、電気通信システムに接続可能な、小さいワーク ステーションを使用する方法がある。このようなシステムはオフライン処理が可 能であり、かつ、通常とは異なる取引きの場合または常駐プログラムを自動的に 変更する場合にはオンライン処理に切換えることが可能であろう。こうしたワー クステーションはたとえば、公衆電話ネットワークを介した攻撃を受ける可能性 のあるシステム上でのセキュリティを維持するのに必要な、複雑な検証および暗 号化方式を実行しなければならないであろう。サイズおよび複雑さが増すにつれ て、セキュリティを維持する問題もまた増大することになる。 このようなシステムにおいても、バージョンの管理に関する問題が生じ得る。 同じ組織のサービスを受けるすべてのユーザがそのサービスの最新バージョンに 適したカードを持っているわけではない。このような事態は、多国籍の組織が異 なる国で異なる時間にサービスを導入または変更する際に生じ得る。WO 96 /18979号には、ユーザのパーソナルICCから、関連するセッションにつ いてのみ端末を更新する方法が提案されている。サブルーチンを表わすプログラ ム命令がそのカードに記憶されており、それらが端末にエクスポートされて解釈 されるようにすることができる。端末内でインタープリタを使用することによっ て、インタープリタを備えるどの端末でも同じカードを使用することが可能とな り、したがって、トランザクションを端末上のホストプロセッサとは独立して行 なうことができるようになる。しかし、危険なサブルーチンという危険性を排除 するためのセキュリティコントロールの方法は記載されていない。 上述の種類の端末はまた、何らかの形のメモリを含むプロセッサを有する。メ モリは通常、プログラムを実行するための何らかのランダムアクセスメモリ(R AM)、端末のオペレーティングシステムのためのプログラムを含み得る、読出 のみが必要なデータを記憶するための何らかの読出専用メモリ(ROM)、およ び、変更され得る一般的なデータを記憶するための不揮発性読出/書込メモリを 含む。ユーザの個人データの秘密は保たれなければならず、したがって、あるユ ーザが、偶然にでもまたは悪意を持って故意にでも、他の人のデータにアクセス できる可能性があってはならない。さらに、端末の種々の書込可能メモリは、時 間の経過とともに断片化することがあってはならない。メモリの断片化が進むと 、連続したメモリのブロックのサイズが減じられて何らかのプログラムを実行す ることができなくなるおそれがある。この問題を防ぐために、Java(商標)等の プログラム言語はガーベッジコレクションを利用する。ガーベッジコレクション とは、メモリ内のもはや必要とされないデータを識別するよう試みてその割当を 解除するルーチンである。現時点における経験からは、プログラムが自身の記憶 したデータの割当を明示的に解除するようにするよりも、ガーベッジコレクショ ンの方が、メモリを管理するのにより信頼できる方法である、ということが知ら れている。明示的なメモリの割当および割当の解除が、CまたはC++等の一般 的な高級プログラム言語におけるプログラミングエラーの、単一の原因としては 最 大のものである、という意見もある。 ガーベッジコレクションにはいくつかの欠点がある。第1に、ガーベッジコレ クションはアプリケーションに特有の機能ではなく、オペレーティングシステム の機能である。したがって、ガーベッジコレクションは各アプリケーションのデ ータがアプリケーションの最後で割当を解除されることを保証できない。むしろ 、そのようなデータはアクセスがないためにガーベッジコレクションがトリガさ れるまで、ある程度の時間期間存在し得る。金銭取引きにおいては、個人ユーザ データがアクセスされる危険性を排除する、より安全な方法が求められる。第2 に、ガーベッジコレクションはオペレーティングシステムのために要求されるメ モリ空間のサイズを増す。ICCおよびある種の端末上では、メモリは制限され る場合があり、ガーベッジコレクションの使用は深刻な欠点となり得る。上述の ように、端末はあまり頻繁に置換されることはなく、したがって、異なるプロセ ッサ能力およびメモリサイズを含む多種多様な端末が通常、システム内で並行に 運用される。古い端末においてはその能力がしばしば非常に制限される。非常に 古い種類の端末は置換されるかもしれないが、より精巧で複雑なサービスへの要 求のため、比較的古い端末が置換されていくとしても、それらのいくつかがその 能力において後れをとることのないほど頻繁に置換されることは、おそらくは決 してないであろう。したがって、多種多様なプロセッサ上で動作することが可能 な、小型のオペレーティングシステムへの要求は、おそらくは要求として残るで あろう。最後に、ガーベッジコレクションでは、メモリが明示的な割当の解除に よって自由にされるときと異なり、すぐにそのメモリを解放するということがな い。メモリが解放可能なときでも実際には拘束されているので、必要とされるメ モリの量がやはり増大することになる。 実行時メモリ管理のための安全な方法の1つが、米国特許番号第5,434, 999号に記載されている。たとえば、この公知の方法に従えば、端末内のイン タープリタがメモリアドレスを操作するいかなる命令に対しても、組織的な検査 を行なって、アクセスが要求されているメモリの領域へのアクセスが許可されて いるかどうかを確認する。このシステムは、すべての命令をこの方法でチェック しなければならず、それによって処理速度が大いに低減される、という欠点を有 する。プログラム実行時検査は、それを実行するのにコストが高くつく。 アプリケーションプログラマが移植可能であって異種の端末にわたって中立な 、すなわち、端末で使用されるプロセッサとは独立した、かつ、端末の種類また は構造ごとにその種類を承認する必要のないソフトウェアを生成することができ るようにする、プログラム可能な端末を提供するシステムが必要とされている。 端末常駐オペレーティングシステムおよびアプリケーションプログラムは、小型 であり高速で実行し、かつ、保全の要件を満たすものであることが好ましい。さ らに、そのアプリケーションプログラムは、容易に更新することが可能であり、 少なくとも、各ユーザが端末の地理的な位置に関係なく、期待されるサービスを 得ることが可能であることが望ましい。 本発明の1つの目的は、取引きのための安全なトランザクション管理システム およびそのようなシステムを操作する方法を提供することである。 本発明のさらなる目的は、トランザクションのための安全な端末およびICC 、ならびにそのような装置を操作する方法を提供することである。 本発明のさらに別の目的は、ICC等の小さなハンドヘルドの装置上に実装す ることが可能な、トランザクションにおいて使用可能な装置を提供することであ る。 本発明のまた別の目的は、端末またはICCをその端末またはICCを変更情 報のソースとして使用して更新することが可能である、トランザクションシステ ムを提供することである。 本発明のさらなる目的は、トランザクション管理システムおよび、高速動作で 高い保全性を提供するそのシステムを操作する方法を提供することである。 発明の概要 本発明は、第1の装置と第2の装置との間でトランザクションを実行するため のトランザクション管理システムに関する。ここで、上記第1および第2の装置 は互いとの通信に適合され、かつ上記第1および第2の装置のうち少なくとも1 つの装置は集積回路カードである。上記システムは、少なくとも1つの入出力装 置と、 上記第1の装置上のコンピュータプログラムを解釈するための移植可能な仮想 マシンとを含み、上記仮想マシンは仮想マイクロプロセッサおよび上記少なくと も1つの入出力装置のためのドライバとを含み、上記システムはさらに、上記解 釈されたプログラムに応答して上記プログラムを実行するための実行手段を含む 。 上述の移植可能な仮想マシンは、スタックマシンであることが好ましい。これ は、それによって動作速度および小型化が促進されるためである。 本発明はまた、第2の装置とのトランザクションを実行するための第1の装置 を含む、端末を提供する。ここで、上記第1および第2の装置のうち少なくとも 1つの装置は集積回路カードである。上記端末は、上記第1の装置上のコンピュ ータプログラムを解釈する移植可能な仮想マシンを含み、上記移植可能な仮想マ シンは仮想マイクロプロセッサと少なくとも1つの入出力装置のためのドライバ とを含む。 上記端末はさらに、上記解釈されたプログラムに応答して上記プログラムを実行 するための実行手段を含む。 本発明はさらに、第2の装置とのトランザクションを実行するための第1の装 置を含む、自立型の移植可能なインテリジェントカードを提供する。上記インテ リジェントカードは、仮想マイクロプロセッサおよび少なくとも1つの入出力装 置のためのドライバを含む、移植可能な仮想マシンを含む。 本発明はさらに、トランザクション管理システムを提供する。上記トランザク ション管理システムは、第1の装置および第2の装置を含み、上記第1および第 2の装置は互いと通信するよう適合され、上記第1および第2の装置のうち少な くとも1つの装置は集積回路カードである。上記第2の装置は、上記第1の装置 上のコンピュータプログラムの実行時間動作を少なくとも修正することが可能な 少なくとも1つのプログラム命令を提供するための手段を含む。上記第1の装置 は仮想マシンを含み、上記仮想マシンは上記コンピュータプログラムをロードし 解釈するための手段を含み、上記ロードし解釈するための手段はさらに、上記ロ ードし解釈するための手段が上記コンピュータプログラムをロードし終わり上記 コンピュータプログラムが実行している間に、予め規定されたセキュリティ条件 に従って、上記少なくとも1つのプログラム命令をロードし解釈するよう適合さ れる。上記トランザクション管理システムはさらに、上記ロードされ解釈された プログラム命令に応答して上記ロードされ解釈されたコンピュータプログラムを 上記修正された動作で実行するための実行手段を含む。 本発明はさらに、第2の装置とのトランザクションを実行するための第1の装 置を含む、端末を提供する。ここで、上記第1および第2の装置のうち少なくと も1つの装置は集積回路カードであり、上記第2の装置は上記第1の装置上のコ ンピュータプログラムの実行時間動作を少なくとも修正することが可能である少 なくとも1つのプログラム命令を提供するための手段を含む。上記端末は、仮想 マシンを含む上記第1の装置を含み、上記仮想マシンは上記コンピュータプログ ラムをロードし解釈するための手段を含み、上記ロードしかつ解釈するための手 段は、上記ロードし解釈するための手段が上記コンピュータプログラムをロード し終わった後に上記コンピュータプログラムが実行中に、予め規定されたセキュ リティ条件に従って上記少なくとも1つのプログラム命令をロードし解釈するよ うさらに適合される。上記端末はさらに、上記ロードされ解釈されたプログラム 命令に応答して上記修正された動作で上記ロードされ解釈されたコンピュータプ ログラムを実行するための実行手段を含む。 本発明は、第2の装置とのトランザクションを実行するための第1の装置を含 む、自立型の移植可能なインテリジェントカードを提供する。ここで、上記第2 の装置は、上記第1の装置上のコンピュータプログラムの実行時間動作を少なく とも修正することの可能な少なくとも1つのプログラム命令を提供するための手 段を含む。上記インテリジェントカードは、仮想マシンを含む上記第1の装置を 含み、上記仮想マシンは上記コンピュータプログラムをロードし解釈するための 手段を含み、上記ロードし解釈するための手段はさらに、上記ロードし解釈する ための手段が上記コンピュータプログラムをロードし終わった後に上記コンピュ ータプログラムが実行している間に、予め規定されたセキュリティ条件に従って 上記少なくとも1つのプログラム命令をロードし解釈するように適合される。上 記インテリジェントカードはさらに、上記ロードされ解釈されたプログラム命令 に応答して上記ロードされ解釈されたコンピュータプログラムを上記修正された 動作で実行するための実行手段を含む。 本発明はまた、第1の装置と第2の装置との間でトランザクションを実行する ためのトランザクションシステムを提供する。上記システムは、自身に提供され るカスタマイズされたバイトコードトークンの組を解釈するための仮想マシンを 含み、上記仮想マシンは仮想処理ユニットおよび読出/書込可能な論理アドレス 空間を含む。上記システムはさらに、自身の実行のために必要な読出/書込可能 な論理アドレス空間の量の表示を含む少なくとも1つの第1のアプリケーション プログラムを含み、上記少なくとも1つの第1のアプリケーションプログラムは 上記トークンの組から選択されたトークンのストリームおよび対応するインライ ンデータとして書かれ、上記仮想マシンはまた、上記少なくとも1つの第1のア プリケーションプログラムをロードするためのローダと、上記少なくとも1つの 第1のアプリケーションプログラムに対して第1の量の読出/書込可能な論理ア ドレス空間を上記表示に従って割当てるための手段とを含み、上記割当てられた 読出/書込可能な論理アドレス空間は規定されかつ保護された境界を有する。本 発明に従った第1の装置は、インターネットに接続されてブラウザを実行するパ ーソナルコンピュータであってもよく、ブラウザによって受取られる各モジュー ルがそのメモリの要件の表示を含まなければならないという要件は、そのブラウ ザのセキュリティを向上させ、インポートしたモジュール内に含まれるウイルス によって受けるおそれのあるダメージを制限する。 本発明は、第2の装置とのトランザクションを実行するための第1の装置を含 む、端末を提供する。上記第1の端末は、それに提供されるカスタマイズされた バイトコードトークンの組を解釈するための仮想マシンを含み、上記仮想マシン は仮想処理ユニットおよび読出/書込可能な論理アドレス空間を含む。上記端末 はさらに、自身の実行のために必要とされる読出/書込可能な論理アドレス空間 の量の表示を含む少なくとも1つの第1のアプリケーションプログラムと、他の アプリケーションプログラムにエクスポートすることが可能な少なくとも1つの 関数の第1の排他的リストとを含み、上記少なくと1つの第1のアプリケーショ ンプログラムは上記トークンの組から選択されたトークンのストリームおよび対 応するインラインデータとして書かれ、上記仮想マシンはまた、上記少なくとも 1つの第1のアプリケーションプログラムをロードするためのローダと、第1の 量の読出/書込可能な論理アドレス空間を特に上記少なくとも1つの第1のアプ リケーションプログラムに上記表示に従って割当てるための手段とを含み、上記 割当てられた読出/書込可能な論理アドレス空間は規定されかつ保護された境界 を有する。 本発明はまた、第2の装置とのトランザクションを実行するための第1の装置 を含む、自立型の移植可能なインテリジェントカードを提供することが可能であ る。上記第1の装置は、それに提供されるカスタマイズされたバイトコードトー クンの組を解釈するための仮想マシンを含み、上記仮想マシンは仮想処理ユニッ トと読出/書込可能な論理アドレス空間とを含み、上記インテリジェントカード はさらに、自身の実行のために必要とされる読出/書込可能な論理アドレス空間 の量の表示を含む少なくとも1つの第1のアプリケーションプログラムを含み、 上記少なくとも1つの第1のアプリケーションプログラムは上記トークンの組か ら選択されたトークンのストリームおよび対応するインラインデータとして書か れ、上記仮想マシンはまた、 上記少なくとも1つの第1のアプリケーションプログラムをロードするための ローダと、第1の量の読出/書込可能な論理アドレス空間を特に上記少なくとも 1つの第1のアプリケーションプログラムに対して上記表示に従って割当てるた めの手段とを含み、上記割当てられた読出/書込可能な論理アドレス空間は規定 されかつ保護された境界を有する。 本発明はまた、第1の装置と第2の装置との間でトランザクションを実行する ためのトランザクションシステムを提供することが可能である。ここで、上記第 1および第2の装置のうち少なくとも1つの装置は集積回路カードである。上記 システムは、それに提供されるカスタマイズされたバイトコードトークンの組を 解釈するための仮想マシンを含み、上記仮想マシンは仮想処理ユニットおよび読 出/書込可能な論理アドレス空間を含む。上記システムはさらに、少なくとも1 つのレコードおよび上記仮想マシンによって実行するための少なくとも1つのコ ンピュータプログラムを含む少なくとも1つのデータベースを含み、上記コンピ ュータプログラムは上記組から選択された上記トークンのストリームで書かれた モジュールであり、かつ上記モジュールの実行のために必要である初期化されて いない読出/書込可能な論理アドレス空間の量の表示を含み、上記システムはさ らに、上記モジュールをロードし上記表示に従って必要量の初期化されていない 論理アドレス空間を割当てるためのローダと、上記データベース内のレコードに アクセスするための手段とを含み、上記データベース内のレコードは上記モジュ ールを介してのみアクセス可能であり、上記アクセスするための手段は上記デー タベースの現時点のレコード上へのウィンドウを提供し上記レコードを上記アプ リケーションプログラムによってアドレス指定可能な上記初期化されていない読 出/書込可能な論理アドレス空間のある位置にコピーする。 本発明はさらに、第2の装置とのトランザクションを実行するための第1の装 置を含む、端末を提供することもまた可能である。ここで、上記第1および第2 の装置のうち少なくとも1つの装置は集積回路カードである。上記第1の装置は 、それに提供されるカスタマイズされたバイトコードトークンの組を解釈するた めの仮想マシンを含み、上記仮想マシンは仮想処理ユニットおよび読出/書込可 能な論理アドレス空間を含む。上記端末はさらに、少なくとも1つのレコードお よび上記仮想マシンによって実行するための少なくとも1つのコンピュータプロ グラムを含む少なくとも1つのデータベースを含み、上記コンピュータプログラ ムは上記組から選択されたトークンのストリームで書かれたモジュールでありか つ上記モジュールの実行のために必要な初期化されていない読出/書込可能な論 理アドレス空間の量の表示を含み、上記端末はさらに、上記モジュールをロード し上記表示に従って必要量の初期化されていない論理アドレス空間を割当てるた めのローダと、上記データベース内のレコードにアクセスするための手段とを含 み、上記データベース内のレコードは上記モジュールを介してのみアクセス可能 であり、上記アクセスするための手段は上記データベースの現時点におけるレコ ード上へのウィンドウを提供し上記レコードを上記初期化されていない読出/書 込可能論理アドレス空間の、上記アプリケーションプログラムによってアドレス 指定可能な位置にコピーする。 本発明は、第2の装置とのトランザクションを実行するための第1の装置を含 む、自立型の移植可能なインテリジェントカードを提供することが可能である。 上記第1の装置は、それに提供されるカスタマイズされたバイトコードトークン の組を解釈するための仮想マシンを含み、上記仮想マシンは仮想処理ユニットお よび読出/書込可能な論理アドレス空間を含む。上記インテリジェントカードは さらに、少なくとも1つのレコードおよび上記仮想マシンによって実行するため の少なくとも1つのコンピュータプログラムを含む少なくとも1つのデータベー スを含み、上記コンピュータプログラムは上記組から選択されたトークンのスト リームで書かれた文字でありかつ上記モジュールの実行のために必要な初期化さ れていない読出/書込可能な論理アドレス空間の量の表示を含み、上記インテリ ジェントカードはさらに、上記モジュールをロードしかつ上記表示に従って必要 量の初期化されていない論理アドレス空間を割当てるためのローダと、上記デー タベース内のレコードにアクセスするための手段とを含み、上記データベース内 のレコードは上記モジュールを介してのみアクセス可能であり、上記アクセスす るための手段は上記データベースの現時点におけるレコード上にウィンドウを提 供しかつ上記レコードを上記初期化されていない読出/書込可能な論理アドレス 空間の上記アプリケーションプログラムによってアドレス指定可能な位置内にコ ピーする。 本発明はまた、第1の装置と第2の装置との間でトランザクションを実行する ための方法を提供する。ここで、上記第1および第2の装置のうち少なくとも1 つは集積回路カードである。上記方法は、上記第2の装置上に上記第1の装置上 のコンピュータプログラムの実行時間動作を少なくとも修正することが可能な少 なくとも1つのプログラム命令を提供するステップと、上記コンピュータプログ ラムをロードし解釈し、さらに、上記コンピュータプログラムが実行している間 に予め規定されたセキュリティ条件に従って上記少なくとも1つのプログラム命 令をロードし解釈するステップと、上記ロードされ解釈されたプログラム命令に 応答して上記ロードされ解釈されたコンピュータプログラムを上記修正された動 作で実行するステップとを含む。 本発明はまた、第1の装置と第2の装置との間でトランザクションを実行する ための方法を提供する。上記方法は、トークンの組から選択されたバイトコード トークンのストリームおよび対応するインラインデータとして書かれた少なくと も1つのアプリケーションプログラムを解釈するステップと、上記少なくとも1 つのアプリケーションプログラムをロードするステップと、上記アプリケーショ ンプログラム内に含まれるその実行のために必要な読出/書込可能な論理アドレ ス空間の量に関する表示に従って上記少なくとも1つのアプリケーションプログ ラムに対して具体的に第1の量の読出/書込可能な論理アドレス空間を割当てる ステップと、上記割当てられた読出/書込可能な論理アドレス空間の境界を規定 しかつ保護するステップとを含む。この方法は、インタープリタの使用をメモリ の割当および選択的な明示的割当解除と組合せる。これにより、コンパイルの段 階でアプリケーションプログラムが完全にチェックされた後に実行時の保証を提 供しながら、柔軟性と移植性とを併せて提供することが可能となる。これにより 、インポートされたアプリケーションモジュールに含まれるウイルスによって引 き起こされるおそれのあるダメージが低減される。 本発明はまた、第1の装置と第2の装置との間でトランザクションシステムを 実行するための方法を含む。ここで、上記第1および第2の装置のうち少なくと も1つの装置は集積回路カードである。上記方法は、トークンの組から選択され た上記トークンのストリームで書かれたモジュール内のトークンを解釈するステ ップと、上記モジュール内の上記モジュールの実行のために必要な初期化されて いない読出/書込可能な論理アドレス空間の量に関する表示に従ってある量の初 期化されていない論理アドレス空間を割当てるステップと、上記データベースの 現時点におけるレコード上にウィンドウを提供することによってデータベース内 のレコードにアクセスするステップとを含み、データベース内のレコードは上記 モジュールを介してのみアクセス可能であり、上記方法はさらに、上記レコード を上記初期化されていない読出/書込可能な論理アドレス空間の上記モジュール によってアドレス指定可能な位置内にコピーするステップを含む。 本発明はまた、第1の装置と第2の装置との間でトランザクションを実行する ための方法を含み、上記第1および第2の装置のうち少なくとも1つは集積回路 カードである。上記方法は、仮想マイクロプロセッサおよび少なくとも1つの入 出力装置のためのドライバを含む移植可能な仮想マシンを提供するステップと、 上記移植可能な仮想マシンを使用して上記第1の装置上のコンピュータプログラ ムを解釈するステップと、上記解釈されたプログラムに応答して上記プログラム を実行するステップとを含む。 本発明に従えば、好ましくは移植可能な仮想マイクロプロセッサを含む、安全 なトランザクション管理システムが提供される。好ましくは、各モジュールは他 のいかなる仮想アドレス空間からも区別されていることが保証された、仮想アド レス空間の組を所有する。移植可能な仮想マイクロプロセッサはまた、好ましく は、種々のスタックまたはデータベース等の共有資源へのアクセスを保護する。 最小限の保護としては、好ましくは、読出および書込のためのデータ空間へのア クセスの境界をメモリがチェックすること、および、コード空間への書込を絶対 的に禁止することが挙げられる。さらに、データスタックおよびリターンスタッ ク上のアンダーフローおよびオーバーフローに対して検査がなされることが好ま しい。好ましくは、モジュールは他の何らかのモジュールが明示的にエクスポー トするものにのみアクセスすることが可能である。好ましくは、モジュールによ って提供される関数を通じて以外は、エクスポートされていないデータにアクセ スする方法はない(仮想マイクロプロセッサはリークしない)。モジュールは好 ましくは通常の意味でデータをエクスポートすることはできない。すなわち、モ ジュールは好ましくは関数のエクスポートのみを行なうことができる。論理的境 界は好ましくは、データ空間のリーケッジを禁止する。換言すれば、モジュール によって所有されるすべてのデータは好ましくは厳密に秘密にされる。このよう な制限は好ましくはコンパイル時および実行時の双方で行使される。これは、モ ジュールが別個のアドレス空間を有するためである。このことは、何らかのモジ ュール内の何らかのデータのアドレスがその所有するモジュールの外部では全く 無意味であることを意味する。モジュールは好ましくは、特定の動作の開始また は終了をトリガするハンドルの組のみをエクスポートすることが可能である。好 ましくは、うまく動作するモジュールは欠陥なく実行され、一方、あまりうまく 動作しないモジュールは、違法な操作が試みられた際に移植可能な仮想マイクロ プロセッサによって直接発生される例外によって中断される。 従属項は、本発明の個々の実施例を規定する。本発明、その実施例および利点 を、以下の図面を参照して次に記載する。 図面の簡単な説明 図1は、本発明に従った端末を概略的に示す図である。 図2は、本発明に従ったICCを概略的に示す図である。 図3は、本発明に従ったモジュールを開発しかつ実行するプロセスを示す概略 的なフロー図である。 図4は、端末上に実装された、本発明に従った移植可能な仮想マイクロプロセ ッサを概略的に示す図である。 図5は、本発明に従った移植可能な仮想マイクロプロセッサを概略的に示す図 である。 図6は、本発明に従ったメモリ内にロードされたモジュールを概略的に示す図 である。 図7は、本発明に従ったデータベースレコードへのアクセスを得るための方法 を概略的に示す図である。 図8は、本発明に従ったプラグおよびソケット手順を概略的に示す図である。 図9は、本発明のモジュールのローディング手順を示すフロー図である。 図10は、本発明のモジュールの実行手順を示すフロー図である。 図11は、本発明のソケットのプラギング手順を示すフロー図である。 図12は、本発明に従ったカードモジュールのローディング手順を示すフロー 図である。 補遺は、トークンコードおよび標準的な例外の例を示す。 実施例の説明 本発明を、特定の図およびある実施例を参照して以下に説明するが、本発明は それらによって限定されるものではなく、請求の範囲によってのみ限定されるも のである。図面は概略的なものであって限定を加えるものではない。本発明は金 銭取引きに関連して説明されるが、それに限定されるものではない。さらに、本 発明は主に端末に関連して説明されるが、本発明はまた、WO94/10657 号に記載されたような、パーソナルコンピュータ(PC)、ICC、またはIC Cとインターフェイスとの組み合わせ等の、好適な装置上に本発明に従った移植 可能な仮想マイクロプロセッサを提供することをも包含する。WO94/106 57号は、ここに引用により援用される。 本発明の背景となっている一般的なリンキング技術の概念は、コンパイル時で のチェックをパスしたことを条件として、ターゲットの実装とは独立した、デー タのセキュリティおよびトランザクションシステム内の実行時保証と、移植性と を組合せたものである。この概念は、以下の特徴のうち1または複数の特徴によ って達成される。すなわち:インタープリタとして仮想マシンを使用すること、 アプリケーションプログラムがI/O装置と共通のインターフェイスを有するよ うにしたI/O装置のためのドライバを仮想マシン内に含ませること、したがっ て非常に多岐にわたる環境にわたって移植可能であるようにすること、アプリケ ーションプログラム内にメモリの量の指示を含ませてその指示に従ってメモリを 割当てること、明示的にメモリの割当を解除すること、ならびに、アプリケーシ ョンプログラムおよび/またはデータベース内にデータをインポートしそれらか らデータをエクスポートする安全な方法を提供すること、という特徴である。 図1は、本発明に従った端末1を概略的に表わす。典型的に、端末1は中央処 理装置(CPU)2を含み、これはメモリ4および入出力(I/O)装置6と、 双方向通信のためのバス3を介して接続されている。I/O装置6はデータを入 力するためのキーボード、および、トランザクションの進捗状況を表示しおよび /またはメッセージもしくはプロンプトを表示するための、液晶(LCD)もし くは発光ダイオード(LED)ディスプレイ等の、視覚表示装置などのスクリー ンであり得る。I/O装置6のうちの1つは、カードリーダ7であってもよく、 ICC5はそのリーダ7の受入スロット内に導入されるとそのカードリーダ7に よって読出可能となる。端末の実際の形は多岐にわたり得る。たとえば、それは 販売時点情報管理(POS)端末であってもよく、Intel8051からPentium( 商標)までのプロセッサを含んでもよい。さらに、端末1がすべて1カ所に配置 されている必要はなく、カードリーダ7等の端末の種々の部品、キーボードおよ びディスプレイ等のI/O装置、ならびにプロセッサが異なる位置に配置されて ケーブル、無線伝送等によって接続されてもよく、または、ローカルエリアネッ トワークの一部であるか、または、電気通信ネットワークで相互接続されてい てもよい。 図2は、本発明に従ったICC5を概略的に表わす。本発明はしかし、これに 限定されるものではない。ICC5は、少なくとも1つの入出力(I/O)ポー ト10と、不揮発性メモリ等の何らかの永久記憶装置とを含む。この永久記憶装 置は、たとえば、バス17を介してI/Oポート10に接続されたEEPROM 15によって、または、バッテリバックアップ付きのランダムアクセスメモリ( RAM)によって、提供され得る。I/Oポート10は、カードリーダ7を介し て端末1との通信に使用することが可能である。集積回路カードは、少なくとも メモリファンクションを実行するよう1または複数の集積回路がその中に挿入さ れているカードである。選択的に、ICC5は自立型の移植可能なインテリジェ ントなカードであってもよく、たとえばRAM14によって提供される揮発メモ リ等の読出/書込可能作業用メモリと、中央処理装置12と、カードICC5が マイクロプロセッサとして動作できるようにするのに必要なすべての回路、たと えば、コードを記憶するための読出し専用メモリ13、シーケンサ16、ならび に、電源VssおよびVDD、プロセッサ12のためのリセット、およびシーケ ンサ16へのクロックCLKを受取るための、カードリーダ7との接続、を含ん でもよい。本発明に従えば、ICC5はバンクカード、クレジットカード、デビ ットカード、電子財布、ヘルスカード、SIMカード等として使用することが可 能である。 本発明は、ICC5と中央装置に接続されるかまたは接続されていない端末1 との間で、以下のシーケンスのうち少なくとも1つを実行することを含むトラン ザクションを実行するように意図された、集積回路で制御されたトランザクショ ン管理システムを提供する: 1.ICC5と端末1との間に通信リンクを作成する; 2.ICC5と端末1とが機械的にかつ電気的に互換可能であることを確認する ために、互換性の検査を行なう; 3.対象となる特定のICC5と端末1との組合せによってトランザクションを 規定する、コンピュータプログラムおよび関連するデータの組の選択を含む、ア プリケーションの選択; 4.アプリケーションの実行; 5.トランザクションの終了、これはさらに、ICC5と端末1との間の通信リ ンクの切断を含んでもよい;ここで、インタープリタが、ICC5上もしくは端 末上のいずれか、またはその双方上で、アプリケーションを実行するのに使用さ れる。トランザクションとは2以上の装置間で少なくともデータを交換すること を意味し、本発明に従えば、商用の金銭取引きに特定されるものではない。この ようなシステムがPCT/BE 95/00017から公知である。ICC5は 単なるメモリICC、すなわちプロセッサ12を含んでいなくてもよく、このI CC5は端末1によって決定されたトランザクションを行なう。代替的にICC 5は、自立型の移植可能なインテリジェントカードであってもよく、この場合の トランザクションは、端末1によって、ICC5によって、またはそれら双方に よって決定することも可能である。本発明に従えば、ICC5は端末の処理を安 全に強化するためのプログラムコードを含んでもよい。具体的には、ICC5は 、端末1内に記憶されるアプリケーションを更新するのに使用することが可能な 、1または複数のメンテナンスカードであってもよい。 本発明に従えば、ソフトウェアは「仮想マシン」として端末1で実行され、さ らに、ICC5内で実行されてもよい。本発明に従った仮想マシン(VM)は、 アドレス指定モード、スタックの使用、レジスタの使用、アドレス空間、I/O 装置のアドレス指定等を総称的に規定するという標準的な特性を有する、理論的 すなわち仮想のマイクロプロセッサを、明示的に利用可能とする。端末1または ICC5で使用される各特定のCPUに対するカーネルを、それぞれのプロセッ サ2、12がVMをエミュレートするように書く。このVMのためのカーネルが I/O装置のためのドライバならびにすべてのローレベルのCPU論理算術演算 機能、フロー制御、時間管理を提供するということが、本発明に特有の局面であ る。VM内にI/Oドライバを備えることで、本発明に従ったVMのために書い たプログラムであれば標準的な仮想I/O装置をアドレス指定するという利点が 得られる。この場合、特定のCPU上にVMを実装することで、端末1またはI CC5に接続された物理的なI/O装置がアドレス指定された仮想I/O装置の ように動作することが可能となる。本発明に従ったVMは非常に小型であって、 ICC5上に含まれ得るSiemens SLC044CRチップ(INTEL8051ファ ミリから派生したものである)上に実装することができた。本発明に従ったVM は、多種多様のCPUおよびI/Oにわたって、高度の標準化を可能にし、かつ 、プログラムの移植性、検査および保証を簡素化する。本願では、このようなV Mは移植可能な仮想マシン20として記載する。この移植可能VM20は、仮想 マイクロプロセッサおよびI/O装置のためのドライバを含む。VM20は、論 理算術演算機能と、メモリのアドレス指定と、少なくとも1つの入出力装置とを 提供する。本発明に従った移植可能VM20は、端末および/またはカードのプ ログラムをコンパイラの中間コードとして取扱うことにより、異種の端末1およ びカード5にわたるプログラムの移植性を提供する。このコードは、トークンと 呼ばれるバイトコードのストリームからなる。端末1またはICC5がこのコー ドを処理するが、この処理は、このコードを解釈するかまたはネイティブコード コンパイル等の他の手段によって行なわれる。トークンの仮想マシンによる解釈 は、好ましくは、以下の3つの方法のうち1つの方法によって達成され得る。す なわち:仮想マシン命令を直接解釈するか、仮想マシン言語を直接実行可能な中 間形式に翻訳するか、または、それをターゲットCPUのための実際のコードに 、実行時直前にコンパイルするか、のいずれかの方法である。後者2つの方法は 、複雑さをそれほど要求せずに、改善された性能を提供する。トークンはセット として提供され、これは、VM20のための機械命令セットとみなすことができ る。 本発明に従ったアプリケーションプログラムは、実行可能なコードとしてのト ークンのリストを含み得るモジュールとして実現される。本発明に従えば、2種 類の基本的なモジュールの種類がある。すなわち、実行可能なモジュール、これ はモジュールがロードされたときにVM20によって直接呼出されるエントリポ イントを有し、ライブラリモジュール、これはモジュール間呼出しによって個別 に実行され得るエクスポート可能な手順を提供することによって、他のモジュー ルへの資源としての役割を果たす。 本発明に従ったトークンの組は、第1に、VM20の命令セットを含む。これ は、一般的な処理言語に期待される命令を提供しプログラムの効率的な実行のた めに必要とされる。本発明に従ったトークンの組は第2に、通常「オペレーティ ングシステム機能」と称されるものを提供するトークンを含む。端末1またはカ ード5において、オペレーティングシステム機能は本発明に従えば、ディスプレ イおよびキーボードのため等のI/Oドライバ等の特定の機能を含み、端末1お よびカード5において、システム機能はまた、データオブジェクトの通信および I/Oポートを介した伝送の管理、ならびに、モジュール間のアクセスおよびア クセス制御メカニズムもまた含み得る。トークンは、VMのオペレーティングシ ステムのために、スタックの操作のために、ソケットの処理のために、例外処理 等の制御のために、ソケットのアクセス権を含むソケット自身のために、I/O 装置のアクセスのために、時間管理のために、言語およびメッセージの処理のた めに、ICC、磁気ストライプカードおよびモデムの処理等のI/Oリーダの処 理のために、ブラックリストの管理のために、セキュリティアルゴリズムのため に、端末のサービスのために、データベースのサービスのために、TLV処理等 のデータオブジェクトの処理のために、モジュールの処理のために、ならびに、 拡張可能なメモリの処理のために、提供されることが好ましい。 単一バイトのトークンは、一次(primary)トークンと称される。これらは、 いかなる命令セットにおいても通常あるような、基本命令に関する。複数バイト トークンは、二次(secondary)トークンと称され、使用頻度の低いサービスに 使用される。VM20のための完全なトークンセットを補遺に示す。図3に概略 的に示すように、アプリケーションプログラムはPCホストの開発システム70 上でForth、C、Pascal等の適切な高級言語で書かれ、デバッグされて、型承認 される。その後、プログラムのソースコードはトークンコンパイラ71上でトー クンのストリームへとコンパイルされる。このトークンのストリームはプログラ ムおよびヘッダによって必要とされる他のデータ(対応するインラインデータ) と別個に結合されて、モジュールデリバリファイル内にカプセル化されて、好ま しくは標準化モジュールデリバリフォーマットでモジュール72が作成される。 もしこのモジュールが実行可能なトークンを含んでいる場合には、これは実行可 能プログラムフォーマットとして提供される。実行可能なモジュールがトークン のストリームばかりではなくすべての対応するインラインデータをも含むこと (カプセル化)は、本発明の特別な局面である。本発明に従ったモジュールがそ のモジュールを実行するためにVM20によってどの程度の量の読出/書込可能 メモリを割当てられるべきかを示す指示を含むことは、本発明に特定の、さらな る別個の局面である。 モジュール72は、好適な手段によって、たとえば、ICC5においては電気 通信ネットワークを介して、端末1に配信される。モジュールはダウンロードさ れた後に、「モジュールリポジトリ」内に記憶される。その機能が必要になると 、端末1またはカード5はトークンローダ/インタープリタ73を使用して、端 末のCPU2上での実行のためにトークンを処理する。この処理は、各トークン に関連する機能を実行するプロセスからなる。本発明に従えば、トークンローダ /インタープリタ73は、VM20によって提供される。 端末1上のVMに関連したソフトウェアは、以下の4つの主要なカテゴリに分 類することが可能である: ・カーネル、これはI/OドライバおよびVM20をサポートするのにこの仕様 において必要とされるすべての関数の、端末に依存する実装を含む。VM20に 関連する他のソフトウェアは全て、機械とは独立したトークンで書かれる。 ・端末常駐サービス(TRS)は、アプリケーションマネージャーとしてVM2 0上で実行される少なくとも1つのモジュールであって、これは、すべての非ア プリケーション機能、これらの機能をサポートするライブラリ、モジュールロー ディング機能、ならびに、端末の動作を規定するメインループを含む。(たとえ ばDIOCTL等の)特別なトークンによって、I/O装置の端末に依存する局 面をインラインファンクションとして規定できる。 ・端末選択サービス(TSS)は、支払いサービス機能等のアプリケーションと 、それらの機能をサポートするライブラリとを含む。TSSは、端末とは独立な トークンのみを含み、端末1上に常駐する。TRSメインプログラムループは、 特定のトランザクションに必要とされるTSSファンクションを選択し呼出す。 ・カード選択サービス(CSS)は、TSSアプリケーションの一部として使用 される支払いサービス機能等の、端末のトランザクションをサポートする機能を 含む。CSSはICC5上に常駐しており、必要に応じて端末1にダウンロード される。(たとえば通常のトランザクションのために1つおよびメンテナンスの ために1つ等の)2つのICCリーダ8を有する端末1においては、CSSの2 つの別個の組(CSS1およびCSS2)が存在し得る。 カーネルより上位の、本発明に従った端末1上のすべてのソフトウェアは、別 個のモジュールの組として構成される。モジュールの基本的特性は、それが端末 1またはICC5等のターゲット環境に提供するために、単一のパッケージにカ プセル化された、トークンコンパイラ71を介して渡された定義またはプログラ ム機能の集まりであることである。主たる端末プログラム(TRS)、各アプリ ケーション、各ライブラリ、および各CSSダウンロードは、モジュールの例で ある。好ましくは、すべてのモジュールは標準フォーマットを使用する。本発明 に従ったシステム内のカーネルは、VM20を規定し、これは、これらのモジュ ールに対して以下のような種々のハイレベルのサービスを提供する: ・トークンによって表わされる、汎用CPUおよび命令セット; ・追加される可能性のある新たな装置をサポートするよう包括的I/Oを備えた 、共通の装置のための汎用I/Oサポート; ・データベース管理機能; ・フォーマット変換および他の機能を含む、データオブジェクト伝送管理; ・トークンモジュールの管理、これは、それらを記憶装置内に維持し、(必要に 応じて更新し、)およびオンデマンドでそれらを実行するプロセスを含む。本発 明の好ましい実施例においては、モジュールの実行は常に、VM20の制御下に 置かれる。したがって、モジュールはホストプロセッサの制御をとることは決し てなく、VM20に対しては単に受動的である。好ましくは、VM20は常に、 スーパーバイザモードで動作し、そのトークンセットで規定された命令のみを実 行することが可能であって、どのモジュールもユーザモードで動作することはで きない、すなわち、VM20の制御をとることはない。したがって、メモリマッ プを使用したVM20の実装においては、1つのメモリマップのみが、すなわち スーパーバイザマップのみが作成される。 いずれのモジュールも、VM20によって規定されるオペレーティングシステ ムを変更することはできない。このことは、モジュールがVMのトークンセット からのトークンのみを含むことが可能であってそれらトークンがいずれもカーネ ルが記憶されているコード空間にはアクセスすることができないことから、保証 されている。もし規定されたセット以外のトークンがVM20によって発見され た場合には、例外が出力される(ILLOP)。 図4に概略的に示すように、端末1はVM20のTRSモジュールをロードす る役割を有する、端末に特有のオペレーティングシステム8を含む(ローディン グ手順は後に説明する)。VM20のためのコードは、端末の読出専用不揮発性 メモリ11内に記憶される。TRSがロードされるまでは、端末1の端末用揮発 性メモリ19にはトランザクションに関連するデータは全く含まれておらず、端 末の読出/書込不揮発性メモリ18がVM20によって実行されるべきアプリケ ーションを、モジュール72の形でモジュールリポジトリ内に所持している。こ の不揮発性データベースは、ユーザ特有のデータ、および、後に説明するプラグ ライブラリ等のライブラリを含む。VM20がICC5上にも実装される場合に は、上述の原理と同じ原理がICC5の読出専用不揮発性メモリ13、揮発性メ モリ14および読出/書込不揮発性メモリ15に当てはまる。 VM20は仮想マシンであるため、これはすべての形の端末またはICCのメ モリ11、18、19;13、14、15を仮想メモリとしてアドレス指定する 。すなわち、それらはすべて、VM20から見た論理アドレス空間内でアドレス 指定される。VM20の実際の実装においては、これらの論理アドレス空間はメ モリマップ等によって端末1またはICC5のメモリ内の実際のアドレス空間内 にマッピングされる。以下に、VM20の一部分としての、揮発性、読出/書込 不揮発性、および読出専用不揮発性メモリを参照する。ここで、端末1またはI CC5上のVM20の実装において実際のアドレスに関する記載が特になされな い限り、論理的にアドレス指定されるメモリ空間が参照されるものと理解された い。 揮発性メモリの内容は、プログラムローディングまたはパワーダウンおよび/ま たはリブートにより消滅する。揮発性メモリの内容がパワーダウンにより消滅す ることは、安全の理由から好ましい。不揮発性メモリの内容は、プログラムロー ディングまたはパワーダウンおよびリブートの後にも残る。 仮想マシンの説明 本発明に従ったVM20の概略的表現を図5に示す。好ましくは、VM20は スタックマシンであって、好ましくはオンチップメモリ内のプッシュダウンデー タスタック27を指す、(データスタックポインタレジスタ32内に記憶された )データスタックポインタを有する。すべての演算はこのスタック27上で実行 される。データスタック27は、手順のパラメータおよび数式評価の一時的な結 果を保持するのに使用される。データはこのデータスタック27へとプッシュさ れたりそれからポップされる。VM20はまた、リターンスタック28を含む。 リターンスタック28は、VM20によって、リターンアドレスを含むのに使用 されてもよく、また、一時記憶のために使用されてもよい。この複数のスタック を有するアーキテクチャは、Forthプログラム言語(ANSI X3.215− 1994)から知られている。このアーキテクチャは、移植性、コードの密度、 セキュリティ、コンパイルの簡易性、および他のプログラム言語とともに使用す るために、さらに修正されている。たとえば、このアーキテクチャは、C等の高 級プログラム言語で使用される局所変数フレームにも対応する。したがって、本 発明に従ったトークンコンパイラ71は、Forthのためばかりではなく、Cおよ び他のプログラム言語のためにも書くことが可能である。 本発明に従えば、VM20に関連したデータスタック27およびリターンスタ ック28は各々1つのみ存在する。データスタック27およびリターンスタック 28は、処理用の各スレッドごとに作成されるのではない。本発明に従えば、ア プリケーションプログラムは、現時点における手順中にリターンスタック28上 に明示的においたもののみを、リターンスタック28から取出すことが可能であ って、現時点の手順を終了する前に、その手順中にリターンスタック28上に置 いたデータを取除かなくてはならない。場合によっては、VM20は実行時の完 全性を提供するためのセキュリティマネージャーを含んでもよく、これは、リタ ーンスタックに対するすべての動作を監視して、現時点における手順中にすべて のデータが取除かれるかどうかをチェックする。VM20は、リターンスタック 28上に、一時的な記憶のために明示的にそこに置かれたデータに加えて、例外 実行状態情報、局所変数のためのフレーム、ループ制御パラメータ、およびデー タベースコンテクストを保持することができる。 本発明に従えば、VM20は複数のスタックを含み得る。たとえば、リターン スタック28のみを使用するのではなく、さらに加えて、例外およびフレームス タック等の、さらなるスタック29が提供されてもよい。例外スタックは、例外 処理中の実行状態を記憶するのに使用される。フレームスタックは、局所変数情 報、および、C言語的起動レコードを維持するのに使用される。上述のように、 例外およびフレームスタック29は、リターンスタック28上に実装され得る。 データスタック27、リターンスタック28、および例外スタック等の他のス タック29は、いずれかのアプリケーションプログラムによって直接にアクセス 可能なメモリ空間内には存在しない。データスタック27またはリターンスタッ ク28は、直接アドレス指定することができず、それらはスタックオペレーショ ンを介してのみアクセスが可能である。セキュリティの理由のために、データが 実際の実装においてどのように記憶されるかについては何ら限定はない。これは 、悪意を持つ人がデータが物理的にどのように記憶されているかについて仮定す ることができないようにするためである。 VM20は、仮想中央処理装置22を含み、これは仮想算術論理演算ユニット 23を含む。VM20は、仮想または論理的データ空間24をアドレス指定し、 これは、VM20によってランダムアクセスメモリ(RAM)として取扱われ、 かつ、通常は、実際の端末1またはカード5内のRAM内等の、揮発性メモリ1 9の一部として実装される。論理的データ空間24は、データの記憶のためにの みアクセスが可能である。モジュールのトークンのストリームは、VM20によ って読出専用メモリ(ROM)として取扱われるコードメモリ26内に、VM2 0によって記憶される。VM20のみがトークンを読出すことが可能である。コ ードメモリ26は、アプリケーションプログラムのためにも、いかなるトークン によっても、アクセスが不可能である。 VM20は、仮想レジスタ30を含んでもよい。VM20のレジスタ30は、 以下のレジスタを含み得る。すなわち、実行されるべき次のトークンを指し示す ポインタを保持するトークンポインタレジスタ31、データスタック27の現時 点における最上部(TOS)の位置を指し示すポインタを保持するデータスタッ クポインタレジスタ32、リターンスタックの現時点における最上部の位置を指 し示すポインタを保持するリターンスタックポインタレジスタ33、データ空間 24内のフレームの開始点を指し示すポインタを保持するフレームポインタレジ スタ34、および、データ空間24内のフレームの最終点を指し示すポインタを 保持するフレームエンドポインタレジスタ35、である。レジスタ31から36 へのアクセスは、トークンの組によって直接行なわれることはなく、レジスタア クセストークンを介してのみ行なわれる。 最後に、仮想I/O装置25は仮想バスシステム21によってCPU22にリ ンクされている。仮想バスシステム21はスタック27〜29、ALU23、レ ジスタ30、コードメモリ26、およびデータ空間24もまたリンクする。 本発明に従ったVM20は、好ましくは、32ビットレジスタおよびスタック エレメントを有する、バイトでアドレス指定される、2の補数の、32ビットマ シンとして定義されているが、本発明はこれに限定されるものではない。レジス タ/スタックのサイズはVM20のセルサイズと呼ばれる。セルはスタック上で の、VMレジスタ31〜36による、操作の基本単位である。VM20によって 使用されるセルのサイズは、本発明に実質的な影響をもたらすとは考えられない 。 モジュールから実行されるすべてのプログラムは、以下の規則を遵守しなくて はならない。 ・プログラムは、上のカテゴリのいずれのデータもリターンスタック28内に保 持されているものと保証されていると仮定してはならず、したがって、セキュリ ティマネージャーがそのようなデータのいずれをも削除するおそれがあるため、 所与のカテゴリに対して明示的に特定された取出機構のみ、使用できる。 ・これらカテゴリの1つのカテゴリ内のデータをVM20に渡すプログラムは、 データがその中で送られた手順を終了する前に、VM20からデータ記憶領域を 回復するための適切な動作を行なわなければならない。さもなければ、VM20 は関連するメモリの部分の割当を解除してしまうであろう。 ・プログラムは、リターンスタック28上に先に置かれていたいかなるデータも 、それらカテゴリの1つのカテゴリ内のデータをVM20に渡すことによって、 アクセスが不可能となると仮定しなくてはならない。 ・プログラムは、VM20に渡されたこれらカテゴリの1つのカテゴリ内のいか なるデータも、リターンスタック28上に値を置くコードを実行することによっ て、それらの値が取除かれるまではアクセス不可能となると仮定しなくてはなら ない。なぜなら、リターンスタックは特定のトークン手順によってのみアクセス が可能であるためである。 本発明に従えば、VM20のオペレーティングシステムは、各モジュールにつ き利用可能な単一のアドレス空間24を規定する。このアドレス空間24は、デ ータ記憶のためにのみアクセスが可能であって、「データ空間」24と称される 。 データ空間24は、3つの論理領域および1つのオプションの論理領域に分割 され、その各々は個々に連続している: 1.初期化されたデータ空間41、これは、コンパイル時に特定され、VMカー ネルが起動された際およびその後初期化されたデータを含むモジュールがロード された際に設定される、初期値を含む; 2.初期化されていないデータ空間42、これは、プログラムのコンパイル中に 割当てられた変数および静的なバッファを含む。このデータ空間42はVM20 によってゼロに初期化される; 3.フレームメモリ46、これはフレームトークンによって管理される; 4.オプションとして:拡張可能メモリ45、これは、プログラムの実行中に動 的に割当てられる1または複数のバッファを含む。 以下のような付加的な2つのデータ領域があるが、これらは直接アドレス指定 することはできない: 5.典型的には大容量記憶装置である、拡張可能メモリ43、これは、データオ ブジェクトおよび揮発性データベースを所持するのに使用される; 6.不揮発性メモリ44は、モジュールローディングまたはパワーダウンおよび リブートの後にも(端末のハードウェアの制限内で)消滅しないことがVM20 によって保証されているデータを所持するのに使用され、これは、モジュールリ ポジトリおよび不揮発性データベースを含む。これは、バッテリバックアップ付 きRAM、ディスク、または他の恒久的な記億装置内に実装され得る。不揮発性 メモリ44は、読出/書込永久記憶装置18の一部として実装されてもよい。 データのセキュリティを向上するために、拡張されたメモリ43および不揮発 性メモリ44は、初期化されていないデータ空間42内のバッファの形式で選択 されたデータへの「ウィンドウ」を提供するトークンを通じてのみアクセスされ る。したがって、プログラマはレコードを要求することのみができ、データにア クセスするためにそのデータの厳密な位置を知ることはできない。プログラマが 個人的ファイルまたはデータベースの位置をつきとめることを可能にするファイ ルまたはツリー構造はどのようなものであれ存在しないことが好ましい。 モジュールによって使用される各データ空間24内において、メモリは相対ア ドレス指定によって、実行時にのみ割当てられる。このことは、アドレスが、各 モジュール内で、それがロードされた際にのみ意味を持つことを意味する。絶対 アドレス指定が使用されないため、モジュールが別のモジュールのデータに対す るアクセスを獲得することは、後に示す安全なモジュールアクセス機構によって 以外には、不可能である。 フレーム(frame)機構は、局所変数が実行時に定義されることを可能とする C等の言語の要件を、VM20が満たすことができるようにする。フレームはデ ータスタック27上で渡される手順パラメータ、および、「局所」変数(フレー ムが解放された際に、通常は手順の実行の最後に、自動的に自由にされる一時的 なデータ記憶)を保持する。フレームの開始および終了ポインタは、VM20に よって自動的にフレーム内に維持される。フレームポインタレジスタ34は、フ レームの論理的ベースを指し示し、フレームエンドポインタ35は、データ空間 24内のフレームの論理的終点を指し示す。パラメータは、フレームアクセスト ークンを使用して、フレームから取出すことが可能である。 VM20はオプションとして、VM20によって管理される単一の拡張可能な バッファとして、拡張可能メモリ45の動的に割当てられるプールを提供しても よい。これは、プログラムの初期化されていないデータ空間42の外部に現われ る。プログラムは、拡張可能メモリ45の特定量の割当を要求することができ、 そのメモリ45のためのベースアドレスへのポインタを戻される。その後プログ ラムはたとえばプログラムの終了時に、所与のアドレスからメモリ45を解放す ることができ、それにより、そのアドレスを超えるすべての割当てが解放される ようにする。 モジュールは単一のスレッド内で実行されることが好ましいが、本発明はそれ に限定されるものではない。このことは、1つのモジュールが第2のモジュール を呼出した場合、その第2のモジュールが終了してVM20が第1のモジュール に戻る前にその第2のモジュールのすべての資源が割当解除され、処理が続けら れることを意味する。図6は、VM20によって見られる論理メモリを概略的に 示す。図6に概略的に示すように、初期化されたメモリ41、初期化されていな いメモリ42およびフレームメモリ46ならびにトークンコード空間26を有す る(左側の)第1のモジュールが、読出/書込可能メモリ内の、アドレス1で開 始している位置にロードされている。この第1のモジュールはまた、拡張可能バ ッファの位置45を要求しそれを割当てられている。(右側の)第2のモジュー ルが(たとえば、モジュール1のヘッダ内の、インポート可能な関数の限定的リ スト内に存在する関数fghをインポートするために)第1のモジュールによっ て呼出されると、初期化されたメモリ41’、初期化されていないメモリ42’ およびフレームメモリ46’を含むデータ空間24’が、アドレス2から始まっ て必要に応じて割当てられる。モジュール2のトークンは、本発明に従って可能 であるオプションであるモジュールリポジトリから、VM20によって直接読出 される。モジュール2から呼出されると、第2のモジュールのための拡張可能メ モリ45’はVM20によって、メモリ内の第1のモジュールのための拡張可能 メモリ45よりも上位に、割当てられる。第2のモジュールが完了すると、メモ リのアドレスよりも上位のすべてが割当てを解除される(「ゴムバンド効果」) 。好ましくは、一時記憶されたすべてのデータは、割当解除時に消去される。必 要であれば、より多くの拡張可能メモリ45を第1のモジュールに戻った際に要 求することが可能である。第2のモジュールがその後再び呼出された場合、それ には、拡張可能メモリ45’に対する開始アドレスとして、最初にそれが呼出さ れた際とは異なるアドレスが割当てられる。 拡張可能メモリ管理トークンEXTEND、CEXTEND、およびRELE ASE、ならびに例外処理トークンTHROWおよびQTHROWを除くすべて のトークンには、拡張可能メモリポインタに対して正味の影響を何ら有さないこ とが要求される。トークンが拡張可能メモリ45を割当てる場合、トークンはそ れを、セルの位置合わせの影響も含めて、解放することもまたせねばならない。 拡張可能メモリ45の順番の割当ては、1モジュール内では連続的であることが 好ましいが、複数のモジュール間では連続である必要はない。ただし、IMCA LLまたはDOSOCKETトークンを使用するモジュール間の呼出しは連続性 を保つ。モジュールの実行が完了すると、動的に割当てられた拡張可能メモリ4 5が自動的に解放される。これは、プログラムがメモリをきれいに解放しないと きの影響を限定的なものとする。さらに、もしTHROW例外が生じた場合、動 的に割当てられた拡張可能メモリ45の割当てが、統御するCATCH例外の際 の条件に復元され得る。 ユーザ変数は、MV20がクライアントプログラムのためのコンテキスト情報 をその中に保持する、セルサイズの変数である。ユーザ変数のための記憶は、V M20によって予め割当てられる。たとえば16個の変数(0から15で参照さ れる)等の、有限数の変数が提供され得る。マルチタスクを支持するVM20の 実装の場合、各タスクにつき1組のユーザ変数が提供されてもよい。 VM20は、CATCH、THROWおよびQTHROWのトークンを介して 、単一の例外処理機構を提供する。これらのトークンは、Lispの例外処理機構か ら派生したものであり、ANS ForthにおいてはCATCHおよびTHROW として表わされる。この機構の目的は、ソフトウェアの種々のレベルにおいて、 プログラム制御の下での例外の局所的な処理を可能にすることである。この概念 は、プログラムが関数の実行ポインタをトークンCATCHに渡して、これが、 その関数を実行して、もしその実行中に生じた例外があれば、それを示すコード を戻す、というものである。CATCHは、THROWが実行のためにCATC Hに渡された関数内で生じた場合に、その現時点における実行状態を復元するの に十分な、実装に依存する情報を記録する。これは、データおよびリターンスタ ックの深さ、フレームポインタ、ならびに、場合によっては拡張可能メモリポイ ンタを含む(が、これらに限定されるものではない)。実行状態を表わす情報の 集まりは、「例外フレーム」と称される。例外フレームは、例外スタック上に保 持される。CATCHの後に、プログラムは戻されたいかなる例外コードをも調 べることが可能であり、かつ、それを局所的に処理するかまたはより上位レベル に処理のためTHROWするかを決定することができる。VM20は、例外がト ラップされるであろうデフォルトの最も外側のレベルを提供する。この最も外側 のレベルは、CATCHの内側のレベルが何ら確立されなかった際に起動される 。デフォルトの例外ハンドラは、現時点のいかなる端末トランザクションも中止 して、TRSモジュールを再びロードするよう、また、TRSのメインループに 再度入るよう試みる。VM20は、そのような条件が発生した場合には、ANS Forth例外−10(ゼロ除算)を出力する。VM20は、たとえば添付の補遺 に示すように、ANS Forthによってサポートされる他の一般的な例外を出力 することもまた可能である。 装置および入出力(I/O)サービスの処理に関して、低レベルのオペレーシ ョンが装置に特有の機能の背後にVM20によって隠されている装置を含み、各 装置には、(結果コードを分類するのに使用される)装置の種類および、一意の 装置番号が割当てられる。装置番号は任意であるが、装置番号−1から15(4 ビット)の参照は単一のトークンでのみ行なわれることが可能であって、したが って、それらは、キーボード、ICCリーダ、磁気ストライプカードリーダ、デ ィスプレイ、プリンタ、電力管理装置または自動販売機等の、最も一般的な装置 に割当てられる。通常のI/Oの機能は、装置番号を入力パラメータとしてとる 関数によって提供される。 本発明に従った端末1は、好ましくは、少なくとも3つの主要な不揮発性デー タベースを含む。すなわち:アプリケーション特有のトランザクションログと、 1または複数の言語によるメッセージのデータベースと、モジュールのデータベ ースとである。VM20は、データベースが個人的な情報を含み得るためそれら を可能な限り保護する。データベースへのアクセスは制限される。VM20は、 アプリケーションソフトウェア(「クライアント」してのアプリケーション)か ら実装の詳細を隠す、データベース(「サーバ」としてのVM20)を処理する ためのメカニズムを提供する。VM20上で実行されるモジュールからデータベ ースへの、直接のアクセスは決して許されない。サービスは、図7を参照して説 明される以下の特徴を実現する: ・いかなる時にも、クライアントすなわちモジュール内で実行されるプログラム は、現時点で選択されている1つのデータベース(DBCURRENT)へのア クセスを有し、かつ、規定されたすべてのデータベースを通じて共有される、現 時点で選択されている1つのレコード番号(DBRECNUM)を有する。 ・各データベースに関する情報は、クライアントとサーバとの間で、データベー スパラメータブロック(DPB)51を介して転送される。DPB51には、サ ーバが読出および書込のためにアクセスすることが可能である。クライアントは 、DPB51がクライアントのデータ空間24内にあるという意味で、DPB5 1を「所有する」が、クライアントはそれに直接アクセスすることは許されない 。代わりに、データベースサービストークンのみがそのデータにアクセスするの に使用され得る。DPB51は、少なくともDPBリンク、データベースポイン タ、データベースの種類およびレコードサイズの表示、ならびに、次に利用可能 なレコード番号のためのフィールドを含む、標準的な構造を有する。データベー スを特定するすべての情報は、DPB51内に予めセットされなければならない 。クライアントのソフトウェアは、DPB51に対してその後いかなる直接のア クセスも行なうことはできず、また、そのDPB51を規定するモジュールが実 行のためにロードされた後に、DPB51内に直接保持されている値に関して何 ら仮定を行なってはならない。データベースパラメータブロック51は、モジュ ールの初期化されたデータ部内のリンクトリストへのポインタ(DPBリンク) の形で、トークンローダ/インタープリタへと渡される。このフィールドには、 リスト内の、次のDPB51の初期化されたデータのアドレスまたはもしこのD PB51がそのリストにおける最後のまたは唯一のDPB51である場合には、 ゼロが予め設定されなければならない。クライアントの初期化されたデータ空間 内に存在するコンパイルされたデータベースに関しては、DBポインタは初期化 されたデータ内の「原点」アドレスに予め設定されなければならない。その記憶 がサーバによって制御されているデータベースについては、このフィールドはゼ ロに予め設定されなければならない。DBの種類は、データベースの詳細をコー ド化された形で提供する。データベースには少なくとも以下の3つの種類が存在 する: 「揮発性」データベース、この内容は、モジュールのロードとロードとの間、ま たは、それが常駐する端末1のパワーダウンの前後を通じて、保存される必要は ない。 「不揮発性」データベース、この内容は、モジュールのロード間、またはパワー ダウンを通じて、保存されなければならない。もし不揮発性データベースを規定 するモジュールが置換される場合、そのデータベースは古いモジュールがアンロ ードされる際に破壊される。 「コンパイルされたデータベース」、これはトークンコンパイラ71によって、 初期化されたデータの連続する領域内に、固定長のレコードとして構築される。 レコードは、コンパイルされたデータベースには付加も削除もされてはならず、 また、このデータベースは、実行時に初期化されてはならないが、他の点におい ては、十分な読出−書込能力がサポートされる。 次に利用可能なレコード番号フィールドは、コンパイルされたデータベースに 対しては、データベース内で最後に割当てられたレコード番号に1を加えた値に 設定されなければならない。他のデータベースにおいては、このフィールドはゼ ロに設定される。 ・現時点のレコード(レコードバッファ53)上へのウィンドウのアドレスが、 各クライアントデータベースにつき、サーバによってクライアントへと提供され る。あるデータベースオペレーションにおいては、クライアントは文字列および キーバッファ52のアドレスをサーバに渡すことが可能である。クライアントモ ジュールによってサーバに対して知られるようになった各データベースについて は、レコードバッファ53がVM20によって提供される。このバッファ53は 、位置合わせされたアドレスで開始する。特定のデータベースに関連するレコー ドバッファ53の内容は、レコード選択の後、クライアントがそのデータベース から別のレコードを選択するまで利用可能である。これらレコードバッファ53 、コンパイルされたデータベース、および特定のデータベース関数によってデー タスタック27上で渡されるパラメータを除いて、他のいかなるデータ空間54 もクライアントとサーバとの間で共有されることはない。プログラムは、データ ベース内のレコードがメモリ内で連続していると仮定することはできない。 ・データベースは、そのDPBが規定されているモジュールのためのローディン グプロセスによってインスタンス生成される。アプリケーションモジュールによ ってインストールされた揮発性データベースは、アプリケーションが端末常駐サ ービスによって終了されたときに、それらのデータベースに関連するサーバによ って割当てられたすべてのデータ記憶が解放されると、サーバによって自動的に かつトランスペアレントにインスタンス消去される。 ・サーバは、データベースを規定したモジュールが置換される際に、不揮発性 データベースを削除する。もしこのモジュールが、たとえばTRSモジュールの 場合のように、置換されるときにロードされる場合、サーバは、そのモジュール がアンロードされるときにそのモジュールの不揮発性データベースを削除しなく てはならない。 データベースがモジュールロード時にインスタンス生成されるときにVM20 によって取られる動作は、DPB51内のDBタイプおよびDBポインタの値と 、データベースが揮発性または不揮発性のいずれであるかとに依存する。データ ベースが不揮発性タイプである場合、DPBアドレスは、データベースに属する 任意の前のデータを識別するために、モジュール識別(モジュールID)と共に 用いられる。前のデータが存在する場合には、次に利用可能なレコード番号はそ れの以前の値に復元される。そうでない場合には、サーバ(VM20)が新しい 不揮発性記憶空間のインスタンス生成を行なって、次に利用可能なレコード番号 をゼロに設定する。これらの例では、両方とも、バッファ53がデータベースに おける現在のレコードに対して設けられる。DBポインタがゼロでありかつDB タイプがコンパイルされたタイプでない場合、サーバは、データベースに必要と される記憶部に対してインスタンス生成を行なう、すなわちそれを利用可能な状 態にし、その記憶部をすべてゼロに初期化し、バッファ53をデータベースの「 現在のレコード」に対して与えて、次に利用可能なレコード番号(DBAVAI L)をゼロに設定する。DBポインタがゼロでなくかつDBタイプがコンパイル されたタイプである場合には、サーバは、、DBポインタで原点アドレスが渡さ れたクライアントデータ構造を利用するために内部構造をセットアップし、次に 利用可能なレコード番号(DBAVAIL)を、DBP51の次に利用可能なレ コード番号フィールドにおいて渡された値に設定する。サーバは、実際のデータ ベースレコード55と、アドレス位置とデータベース制御ブロック56における レコードとの間の関係と、モジュールが現在どのデータベースにアクセスしてい るかというレコードとを文脈情報ブロック57に維持する。 この発明に従う保全モジュール処理手順を、図6を参照してここで説明する。 図6において、論理読出/書込メモリの或る領域が示される。左側モジュール( 第1のモジュール)によってアクセスされてもよいメモリの或る領域は点線を有 する。第1のモジュールによってはアクセスされ得ないメモリの或る領域は連続 線からなる境界線を有する。1つ以上のモジュールによってアクセスされ得るメ モリの或る領域は一点鎖線で示される。VM20は、データベースDB1および DB2と、データベースリポジトリと、モジュールリポジトリにあるモジュール とをプロテクトし、それらがいかなるモジュールによってもアクセス可能ではな いようにする。第1のモジュールがロードされた後、メモリ42内の初期化され ていないデータは第1のモジュールによってアクセスされ得るが、VM20は、 このモジュール外の領域がそのモジュールによって直接アクセスされることは許 さない。レジスタ、スタック、またはフレームメモリ46へのアクセスは、関連 のトークンを介してしかなされ得ない。データベースは、上述したウインドウ手 順を介してのみアクセスされ得る。特に、第1のモジュールは、トークンが存在 するそれ自身のプログラムメモリ26にアクセスすることもできなければ、他の いかなるモジュールにアクセスすることもできない。このことは、ウイルスに対 する保護にとって重要なことである。この発明に従うと、第1のモジュールに割 当てられるメモリが規定され保護される。それは、そのモジュール内に含まれる 、割当てられるべきメモリの量の表示に従うメモリの割当てによって規定される 。それが保護されるのは、他のモジュールがその割当てられた空間にアクセスし ないようにするためであり、他のいずれのロード機構もモジュール以外のプログ ラムに対しては与えられない。モジュールを実行する好ましい方法は、単一スレ ッドしか持たないので、拡張可能バッファ45内で割当てられたメモリは他の任 意のモジュールが活性状態になる前に割当て解除される。割当て解除されたメモ リは、好ましくは、消去される。 第1のモジュールの排他的インポートリストは、それのヘッダ内にあり、第1 のモジュールがそれに直接アクセスすることはできない。VM20は、ヘッダを 読出して、インポートリスト内で言及される第2のモジュール(第2のモジュー ルからの関数fgh)を呼出す。VM20は、第2のモジュールをロードして、 初期化されていないデータ42’、フレームメモリ46’、および初期化された データ41’に対してメモリを割当てる。第1のモジュールは第2のモジュール のいずれの部分にもアクセスすることはできず、その逆も行なわれ得ない。第2 のモジュールのヘッダにおいて、関数fghは、エクスポートされ得る関数の排 他的リストにおかれている。これにより、関数fghは他のモジュールにとって 利用可能なものとなる。VM20は、第2のモジュールのコードメモリ空間26 ’において関数fghを求めてサーチを行い、対応するインラインデータを伴う トークンストリーム(ストリームTITTITTで表現される)を実行する。こ の例では、この部分のコードはデータベースDB2へのアクセスを必要とする。 この発明に従うデータベースはモジュールによって「所有」され、換言すれば、 データベースは、それについて最初のロードでインスタンス生成を行なうモジュ ールによってしかアクセスされ得ない。コード空間26’から読出されたデータ ベースアクセストークンは、ロード時に第2のモジュールの未初期化データ空間 42’内にバッファ53’を割当てたVM20によって実行される。この関数f ghは、DB2の第3のレコードへのアクセスを必要とする。次いで、VM20 は、その参照されたレコードを第2のモジュールにあるウインドウ53’に転送 し、そこからそれが第1のモジュールの未初期化空間42にエクスポートされる 。この同じデータベースウインドウ手順を用いて、第1のモジュールがそれ自身 のデータベースDB1からレコードを得、それが未初期化データ空間42のバッ ファ53に転送されてもよい。ここで、第1のモジュールは2つの手順の結果で 動作してもよい。 VM20は、好ましくは、ISO/IEC 8825(1990)に記載され るように、タグ、長さ、値のためのベーシック・エンコーディング規則(BER −TLV(本願ではTLVと短縮される))によってデータオブジェクトを取扱 う。TLVデータオブジェクトは2つまたは3つの連続するフィールド、つまり 、 そのクラス、タイプ、および番号を特定するタグフィールドと、データのサイズ を特定する長さフィールドと、その長さがゼロでない場合には、そのデータを含 む値フィールドとからなる。ICCカード応答は一般にはサイズがたとえば25 5バイト以下に制限されるため、この発明に従うTLVオブジェクトには最大サ イズが存在する。タグフィールドは好ましくは1バイトまたは2バイトであり、 長さフィールドは好ましくは1バイトまたは2バイトであり、したがって、値フ ィールドの最大サイズは好ましくは252バイトである(この長さのフィールド は、以下に説明されるように、2つの長さバイトを必要とする)。タグフィール ドの最初のバイトは3つのフィールドに分けられる。ビット7およびビット8は オブジェクトのクラスを特定する。ビット6は、値フィールドが「原始」データ を含むかどうか、またはそれが他のTLVエンコードされたフィールドからなる 「コンストラクトされた」オブジェクトであるかどうかを決定する。コンストラ クトされたオブジェクトはテンプレートとも呼ばれる。コンストラクトされたオ ブジェクトに遭遇すると、それらテンプレートの値フィールドはパージング処理 されTLVシーケンスが得られる。ビット1〜5はオブジェクトの番号を特定し 、または、これらビットすべてがセットされている場合には、それらは付加的な タグバイトが続くことを示す。これらの付加的なタグバイトは、さらに別のバイ トが続く場合、それらの第8番目のビットがセットされている。2バイトまでに おけるすべてのビットはタグネームを決定するのに用いられる。長さフィールド は、1つから3つまでの、典型的には2つの連続ずるバイトからなる。最初のバ イトのビット8が0である場合、ビット1〜ビット7は値フィールドのサイズを 示す。最初のバイトのビット8が1である場合、ビット1〜ビット7は後続する バイトの数を示す。後続するバイトがある場合、それらは値フィールドのサイズ を示し、最上位バイトが先頭となっている。値フィールドは、「原始」データか らなるか、または付加的なTLVエンコードされたシーケンスで「コンストラク トされ」ている。タグフィールドの先頭バイトのビット6がセットされている場 合、値フィールドは付加的なTLVシーケンスを含む。原始オブジェクトはいく つかの異なったフォーマットつまり、先行するゼロ列または後続する全ビットが セットされたニブル列を伴う二進化十進ニブル列、二進数またはバイト列、アル ファニュー メリックもしくはASCIIバイトの文字列、または定義されていないフォーマ ットにてエンコードできる。各々は、それが用いられる態様に応じて、異なる態 様で処理される。ICC5は、データオブジェクトリスト(DOL)を用いるこ とによって、特定されたタグネームの値を要求してもよい。カード5は、タグフ ィールドおよび長さフィールドのリストからなるDOLを送り、端末1は、デリ ミタなしに対応の値フィールドを戻す。 使用されるべき各TLVは、端末プログラムまたはアブリケーションプログラ ムによって、そのデータ型およびデータ名を確立するよう定義されなければなら ない。端末プログラムとアプリケーシヨンプログラムとは別々に開発されるので 、この発明に従うVM20は、リンクされた構造(バランス二進木)を用いて、 タグネームをグローバルタグネームリストに対し高速追加および除去する。この ことは、各TLVに対して、TLVを定義するモジュール内の初期化されたデー タ空間41内、以下の構造がコンパイルされることを必要とする: Link(リンク)バランス二進木の要素へのリンクを与える「左」(上位2 バイト)および「右」(下位2バイト)成分を持つセル。 Link left(リンク左)このTLVのアクセスパラメータから、この レコードのタグよりも数値的に小さいタグを持つTLVレコードのアクセスパラ メータへの、16ビットの符号付オフセット。ゼロの値は、このTLVが、この GLVのタグよりも数値的に小さいタグを持つTLVにリンクされていないこと を示す。 Link right(リンク右)このTLVのアクセスパラメータから、こ のレコードのタグよりも数値的に大きいタグを持つTLVレコードのアクセスパ ラメータへの、16ビットの符号付オフセット。ゼロの値は、このTLVが、こ のTLVのタグよりも数値的に大きいタグを持つTLVにリンクされていないこ とを示す。 Tag(タグ)ビッグエンディアンの数値がTLVタグである2バイト列。 Type(タイプ)制御情報を特定する1つのバイト。 Reserved(保留)コンパイラ71によってゼロに初期化されなければ ならないバイト。 Data(データ)このTLVの長さフィールドおよび値フィールドへのアク セスを含むVM特有情報を保持するセル。このフィールドはコンパイラ71によ ってゼロに初期化されなければならない。このシステムは、さらに、各TLVに 対してステータスバイトを維持する。これは、上述の構造における保留バイトで あってもよい。このバイトの下位ビットは、トークンTLVPARSEまたはT LVSTOREによって処理されたシーケンス内に有る結果としてTLVに或る 値が割当てられている場合、セットされる。割当てられたステータスを維持する 目的は、有効データ(ゼロであってもよい)を含むTLV値を識別し、1度もセ ットされたことがなくしたがって無効であるTLV値からそれらを区別すること である。VMカーネルは、上述のとおりのTLVの実際の定義を含む初期化され たデータ空間41へのポインタのリストを維持することによって、TLVタグの グローバルリストを管理する。モジュールがロードされると、それのTLV定義 がこのリストに対しそれの初期設定の一部として付加され、それがロード解除さ れると、それのTLV定義はVM20によってそのリストから自動的に取除かれ る。既に存在するTLV定義をそのモジュールが含む場合、例外が出力されるだ ろう。上述のLinkフィールドのアドレスは、TLV参照のための「アクセス パラメータ」として戻される。VM20がTLV定義に対してインスタンス生成 を行なった後は、プログラマはこれらフィールドに直接アクセスしてはならず、 それらの内容についていかなる仮定をしてもならない。 ソースコードにおけるTLV定義への参照は、上に定義された定義構造への直 接参照として、または数値表現されたタグ値としてコンパイルされる。或る二進 TLV定義内では、個々のビットまたはビット群は成る意味を有するよう定義さ れる。これらは「TLVビット」と称される。TLVビットへの参照は、TLV の値フィールド内のビットを指すリテラルでコンパイルされてもよい。ビット0 は最初のバイトの最下位ビットであり、ビット7はその同じバイトの最上位ビッ トであり、ビット8は2番目のバイトの最下位ビットであり、以下同様である。 TLV定義に割当てられたデータは、データベースウインドウの形でVM20 によって維持される252バイトのスクラッチパッド領域を介してアプリケーシ ョンに公開される(図7参照)。アプリケーションブログラムにはこのスクラッ チパッド領域の内容を変更することが許可されている。変更が保持されることに なる場合、そのスクラッチパッド領域内のアドレスおよび長さはTLVSTOR Eトークンに送り返されなければならない。この後に任意のTLVトークンが実 行された場合、スクラッチパッド領域のアドレスおよびコンテンツは無効になっ てもよい。 リーダ7に導入されるカード5のセキュリティ管理の一部として、紛失された かまたは無効であることがわかっているカード5に対するチェックが行なわれる 。このようなカード5のリストは、ブラックまたはホットカードリストとして知 られている。ブラックまたはホットカードリスト管理は、大きなホットカードリ ストの管理に特有の専用の関数の組によって与えられる。典型的なリストの場合 、各々10バイトまたは20の二進コード化十進(BCD)桁までからなる10 ,000の一次アカウント番号(PAN)を含むだろう。PANエントリは、圧 縮された数値(cn)フォーマットで記憶され、右側には十六進のF(FH)が パディングされる。PANは最大19のBCD桁であるので、リストにおけるエ ントリは常に少なくとも1つのFHでパディングされる。ホットカードリスト内 のサーチ時、リストエントリ内のFHはワイルドカードまたは「ドントケア」桁 とみなされるが、入力として用いられるPAN内のFHはワイルドカードではな い。フイルドカードは、エントリの右側端にしか現れ得ない。PANは、エント リ内の最初のFHまでが同一であるリストエントリが存在する場合に、ホットカ ードリスト内にあったと判定される。 セキュリティ管理の別の部分として、データを暗号化しデコードするための暗 号サービスの提供がある。好適な暗号化法であれば、どのようなものを用いても よい。3つの暗号アルゴリズム、つまりRSAアルゴリズムにおいて用いられる モジュロ乗算およびモジュロ幕乗と、保全ハッシングアルゴリズムSHA−1と が、VM20に対して特に提供されるが、本発明はそれらに限定されるものでは ない。モジュロ乗算は、符号なしの2つの値xおよびyの乗算を行ない、その積 はzを法として変換される。その式は: 結果=mod(x*y,z) である。入力値(x,y,z)はすべて同じ長さである。それらはバイト列によ って表現され、1024ビット以下の8ビットの任意の倍数であり得る。これら の値はビッグエンディアンのバイト順でなければならない。 保全ハッシュアルゴリズム(SHA−1アルゴリズム)はFIPS 180− 1として標準化されている。SHA−1は任意の流さのメッセージを入力として 受取って20バイトのハッシュ値を発生させる。モジュロ冪乗は、符号なしの値 xの、符号なしの指数yにより与えられる累乗を計算し、その積をZを法として 変換する。その公式は: 結果=mod(x^y,z) である。入力値xおよびモジュロzはバイト列で表現され、1024ビット以下 の8ビットのどのような倍数であってもよい。それらの値はビッグエンディアン のバイト順でなければならない。 サービスおよびしたがってソフトウェアならびにI/Oデバイスさえも、時間 とともに、市場の要件に依って変化するかもしれない。大きな変化が必要とされ る場合、端末1におけるソフトウェアの変更が、手動が、または通信ネットワー クを介して遠隔地から実行されるだろう。しかしながら、ユーザに依存するサー ビスの場合には、端末1によって与えられるサービスにわずかなまたはユーザ特 有のアップグレードをなす、動的ではあるが安全な方法を有することが好ましい 。この発明に従う「プラグおよびソケット」ソフトウェア機構は、端末プログラ ムおよびアプリケーションを構成するさまざまなモジュールのオンラインでの組 織化の柔軟かつ安全な方法を提供する。図8に概略的に示されるように、この発 明に従うトランザクションシステムでは、トランザクション処理中におけるさら なる拡張用コード(「プラグ」66と称される)の追加のための場所ホルダとし て働くよう、アプリケーションプログラマがアプリケーション61、62に挿入 できる(したがって、保持者の制御下および支払システム監視下にあるため安全 である)多数の手順(「ソケット」60と称される)を定義してもよい。ソケッ ト60に差込まれる付加的なコードは、すべて、VM20のトークンセットで書 かれなければならない。ソケット60は、好ましくは、既に存在する端末アプリ ケーション61、62内の、または端末プログラムそのものにおけるさまざまな 好適なポイントにも配される。それらは、ライブラリ関数を参照するために用い ら れ、ライブラリ関数が動作する方法を変更する必要性が支払システムによって予 測される場合には、それらはライブラリ関数内にさえ発生するだろう。ソケット 60はVM20によってデフォルト動作に初期設定される。端末プログラムによ ってさらなる動作が行なわれない場合、ソケット60のデフォルト動作は、それ らが実行されても何も行なわないことである(つまりノーオペレーション)。 プラグ66は、端末1によってサポートされるトークン内に書かれる、デフォ ルトの端末論理を強化するようソケット60によって規定されるポイントに挿入 されてもよい実行可能コードを含む。ブラグ66は、ICC5によって、たとえ ばICC5内のソケット/プラグ識別子67、および端末1内の論理から起動さ れるよう、端末1内のプラグライブラリ63内に既に存在していてもよい。ソケ ット/プラグ識別子67はプラグとプラグが差込まれるソケットとの両方への参 照を含み、それにより、プラグはICC5上ではなくライブラリ63内にある。 プラグ66は入力装置65(たとえば、ICC5、または端末1に接続されるホ ストシステムなど)からきてもよいが、ただし、それは、たとえば、発行者、保 持者、および商人など、支払システムの会員が同意する場合のみである。 トランザクションの完了で、ソケット60はそれらの元のアプリケーションデ フォルト動作に復元される。この発明に従えば、ICC5には、アプリケーショ ン全体ではなく、現在有る端末アプリケーションを強化するプラグ66のみが含 まれることが好ましい。なぜならばそれらはより少ないメモリしか必要としない からである。 ソケット60は、手順ポインタとしても知られる、実行時に動作が変更できる 手順の創出を可能にする実行ポインタを保持する。ソケット60は、ソケット番 号をインラインバイトとしてとるDOSOCKETトークンを介するか、または ソケット番号をデータスタック27からとるIDOSOCKETトークンによっ てアクセスされる手順の列として見られ(実現され)てもよい。 ソケット60は、端末プログラムまたはアプリケーションの再構成によりトラ ンザクション処理フローの変形または強化を可能にする。代替的に、ICC’5 内のソケットが、端末1からのICC’5のアップグレードを可能にしてもよい 。ソケット60によって、ソフトウェアモジュールと、いくつかの異なるソース (保持者、発行者など)からくるかもしれない手順との間のインタフェースが与 えられる。保持者と発行者とは契約関係を有するため、両者は、端末において保 持者のプログラムにより与えられる特定のソケット60を用いることに同意する ことにより、発行者がそのプログラムの動作を拡張して、たとえば、ロイヤルテ ィ機能(飛行マイル、クーポンなど)を与えてもよい。 モジュールは、それが実行のためにロードされるとソケット60が自動的に再 構成されることを特定してもよいし、またはクライアントプログラムが実行時に 新しい手順をソケットにプログラムにより割当ててもよい。セキュリティ条件が それを許すと仮定して、アプリケーション内のソケット60には、デフォルト動 作が割当てられ、次いで後のモジュールによって新しい手順が再びプラグにささ れることにより、特殊な動作を与えてもよい。不明瞭な状況を回避するため、特 定のソケット60を用いるようなベクターを有する手順は、すべて、データスタ ック効果を持たないことが好ましい(後に説明するように、ソケット0は除く) 。これにより、手順のどのベクター化されたバージョンが実行されようとも、プ ログラムの継続性が保証される。修正前におけるすべてのソケット60のデフォ ルト動作は少なくともノーオペレーションのそれとされる。 保持者は、上で言及されたCSSの一部として、ICC5上におけるコードに よるトランザクション強化を可能にしてもよい。その場合、それらはソケット6 0で実現されてもよい。ライブラリまたは実行可能モジュールは、ICC5から くる後のプラグ66のための新しいソケット60の定義を含んでもよい。この場 合、そのモジュールは、ソケット60を定義し、次いで、SETSOCKETト ークンを用いてデフォルト動作をそれに割当てる(ヌル動作であることが多い) 。アクセス制御が許す場合には、ICC5は、新しい動作を定義するトークンを 含むプラグ66を後にダウンロードし、次いでSETSOCKETトークンを用 いてそれをこの同じソケット60に記憶させて、デフォルト動作をオーバライド することもできる。 動作を修正することは便利でありかつ柔軟性をもたらすものではあるが、それ は悪意の人間が動作を彼らにとって有利になるように修正する機会を与え得る。 カード認証を成功させる前に、ICC5からのブラグ66がソケットの動作を修 正し得るかどうか、またはそれらがプログラムフロー内に配されるかどうかにつ いて、特に注意を要するだろう。安全のため、端末ソフトウェアは、この発明に 従うと、各個々のソケット60が修正され得るか否かを制御するソケット制御手 順を特定できる。したがって、たとえば、ICC5からダウンロードされたコー ドの実行は、たとえば電子署名の検査など、すべての妥当性ルーチンがそのカー ドにおいて実行されてしまうまでいずれのソケットもICC5からプラグを差込 まれないよう、保持者によって厳しく制御できる。 この発明に従うと、ソケットのセキュリティは、後でソケット60にプラグを を差込もうとする際に適用されるべきソケット制御手順を特定化することを含む (SETPLUGCONTROLトークン)。手順PLUGCONTROLは、 所与のソケット番号に対し、そのソケット60がその時修正されてもよいかどう かを返すよう書かれなければならない。次いでモジュールのソケットリストがモ ジュールロード時に処理されるか、またはソケット60にプログラムによりプラ グが差込まれると、VM20は、まず、ユーザによって書かれたPLUGCON TROL手順を実行することにより、ソケット60が本当にプラグが差込まれ得 るかどうかを判断し、差込まれ得ない場合には、ソケット60の既存の動作を続 ける。 別のモジュールが実行のためにロードされる前はいかなるソケット60へのア クセスも制限することを望むようなモジュールは、そのモジュールがロードされ る前に、選択された関数PLUGCONTROL関数をパラメータとして、差込 可能なソケット(ソケット0)上において、SETPLUGCONTROLトー クンにより定義される手順を、実行してもよい。次のモジュール、および実行の ためロードされる他の任意のモジュールは、それらのソケットリストが処理され ると、ユーザにより定義されたPLUGCONTROL手順によりアクセスが拒 否されたソケット60はそれらの既存の動作を保つことになる。この状態はエラ ーであるとはみなされない。さらなるコードが実行される前はいかなるソケット 60へのアクセスも制限することを望むようなコードは、選択されたPLUGC ONTROL手順をパラメータとしてSETPLUGCONTROLトークンに より定義される手順を、プログラムフロー内の適当なポイントにおいて実行して もよい。60にプラグするというプログラムによる要求は、SETSOCKET への呼び出しによってその要求が受入れられたかまたは拒否されたかを判断する ことができる。ソケット60でその振舞が、モジュールロード処理によって、ま たはプログラムされたコマンドによって動的に修正されたソケット60は、いず れも、最後に実行可能なモジュールが実行のためにロードされたときにそれが有 した動作に、そのモジュール実行トークン(EXECUTEMODULE)によ って定義された手順内にパッケージされた終了手順の一部として復元される。 保持者に特有の関数の一例として、LOYALTYを規定し、それを後の実行 に対して利用可能にするフレーズ27のSOCKET LOYALTYが基本ト ランザクションコードに含まれる場合を考える。保持者のトランザクションプロ グラムコードは、さらに、発行者が保持者と同じでありかつトランザクション量 が或る最低値を超える場合にのみ、このソケットに対する許可フラグをセットす るコードをさらに定義する。このトランザクション中、ICC5から任意のコー ドを読込むコマンドが存在する。ICCコードの一部は、ユーザの頻繁な飛行者 の飛行マイル数を更新するREWARDルーチンを定義し、次いで、フレーズP LUG REWARD INTO LOYALTYの実行を試みることもできる 。このフレーズは、REWARDの実行をLOYALTYの実行に接続する。L OYALTYソケット許可フラグが上記の論理に従ってセットされている場合、 SETSOCKETが生じ、そうでない場合には、LOYALTYはそのデフォ ルト動作、おそらくはノップを維持する。次いで、アブリケーションコードがそ のLOYALTY関数を後に実行すると、それは、ICCにより定義されるRE WARDを、獲得者によって定義された規則に従ってのみ可能にする。 典型的には、端末1上にて動作するVM20は限られた数のソケット60、た とえば番号0〜63の64個のソケットを有する。そのもっとも基本的な形式に おいては、端末プログラムの骨格は、ソケット60と、ソケットからソケットへ の基本プログラムフローとでほとんど全体が構成され得る。ソケット60には、 次いで、端末1またはICC5のいずれかから、アプリケーション選択時にロー ドされる他のモジュールによってトランザクション処理手順が差込まれる。アプ リケーション選択前にそのプログラムの骨格において生ずるソケット60は、T RSによってデフォルトのヌル動作を割当てられる。所与のソケット60に2つ 以上のモジュールによって手順が差込まれる場合には、一番新しい動作が以前の 動作と置き換わるだけである。 モジュールのロード、処理および実行 VM20上にて実行するよう書かれたコード(トークンモジュールとしてコン パイルされた端末常駐サービスを含む)は、パワーアップの後、VM20をサポ ートする端末固有のカーネルソフトウェアによって、任意の必要な、端末に特有 のパワーアップ初期設定が行なわれており、かつ下に記載されるモジュールロー ド処理を介して端末常駐サービス(TRS)のメイン処理ループの実行が開始さ れている、と仮定してもよい。TRSのメイン処理ループを終了するとき、制御 は、TRSの再ロードおよびそのメインループへの再入を行なうこととなってい るソフトウェアの、端末固有の層に戻る。不揮発性データベース内のデータを除 いて、TRSが終了するときには、必ずすべてのVM資源が解放される。資源解 放は、端末がパワーダウンされるとき、TRSが終了するとき、または端末のオ ペレーティングシステム(もしあれば)がTRSをリスタートするときに生ずる 。最後にTRSメインループに入ってから後に、いずれかのTRSモジュールの 更新版が取得された場合には、その不揮発性データベースのデータを含むすべて のTRS資源は、それが終了するときに解放される。 端末1またはICC5において動作するソフトウェアは、VM20によって、 1つ以上のモジュールの形式で管理され、各モジュールは以下の情報カテゴリの うち任意のものを含んでもよい: ・トークン化されたコード ・初期化されたデータ ・未初期化データ割当て ・データベース定義 ・TLV定義 ・ソケットリスト ・モジュール間依存性 各モジュールは、好ましくは、端末1に、モジュール配信フォーマット(MD F)で配信される。VM20は、配信されて端末1にインストールされたモジュ ールの読出/書込不揮発性メモリ18に不揮発性リポジトリを維持する。このリ ポジトリ内の各モジュールは、モジュール識別子またはモジュールIDによって 識別されることになる。このモジュールリポジトリへの登録の後、モジュール情 報が、VM20によって維持され不揮発性メモリ18内において記憶される不揮 発性モジュールデータベースを介して利用可能となる。この発明に従うと、VM 20は、他の任意のモジュールによる修正からリポジトリ内のモジュールを保護 するが、それは、そのようなアクセスに対するトークンがないという理由による 。さらに、VM20は、ある所与のモジュールIDのモジュールが実行目的のた めに存在する間に、同じIDのモジュールの新しいバージョンをリポジトリに置 くことができる。 モジュールの処理においては、概念上2つの段階がある。:第1に、モジュー ルを「ロード」するが、これは、それがアクセス可能にされ、そのデータ、デー タベースなどに対してインスタンス生成が行なわれることを意味し、第2に、そ れが実行可能なモジュールである場合には、VM20がそのエントリポイントか らそのトークンを処理し始める。この実行手順を、図9のフローチャートを参照 して説明する。 まず、ステップ100において、資源に印付けを行なってセーブする。モジュ ールの実行前に、VM20は、その状態に印をつけ、後でこの状態が復元される のに必要とされる資源をセーブする。この状態が含むのは: ・拡張可能メモリポインタ、フレームポインタおよびフレーム終了ポインタの位 置。 ・現在のソケットリスト全体の内容。 ・TLVタグネームリストに登録されたTLV。 ・モジュールの活性化および実行を管理するためにVMの実装が必要とする他の 内部データ。 次に、モジュールがステップ102においてロードされる。実行すべきモジュ ールのモジュールIDが、後で説するロードモジュールサブルーチンに送られ る。モジュールがステップ104においてエラーなくロードされたとえば判断さ れる場合には、それを実行することができ、プログラムはステップ108に進む 。ステップ104にてエラーが判断される場合には、そのモジュールの実行は放 棄されて、そのモジュールの実行に必要なすべての資源はステップ105にて解 放される。これは、VM20が以下の動作を実行することを必要とする: ・そのモジュールおよび当該モジュールがロードを必要としたモジュールの全て をロードするのに必要とされるすべての揮発性メモリは、解放されてゼロクリア されなければならない。これは以下を含むが、それらに限定されるものではない : ・全モジュールの初期化および未初期化データに対し必要とされる空間。 ・これらモジュールによって定義される全ての内部TLVバッファおよび管理デ ータ構造に対し必要とされる空間。 ・これらモジュールによって定義されるデータベースにより必要とされる全ての 内部バッファおよび管理データ構造に対し必要とされる空間。 ・タグ検索用にVMによって維持されるTLVネームリストは、モジュール実行 直前のそれの状態に復元されなければならない。 ・VMによって維持されるソケットリストの内容は、モジュール実行直前の状態 に復元されなければならない。 ・フレームポインタ、フレーム終了ポインタ、および拡張可能メモリポインタの 内容は、モジュール実行直前の値に復元される。 モジュールのロードが成功すると、ステップ106において、そのモジュール が実行可能モジュールであるかまたはライブラリモジュールであるかが判断され る。後者である場合には、モジュールの実行は起こらず、VM20は、ステップ 105に対して記載されたように、ステップ110においてすべての資源を解放 する。モジュールが実行可能である場合には、そのモジュールのエントリポイン トを特定するフィールドを判断する。 VM20は、エントリポイントフィールドで特定されるトークンを呼出すこと によって、そのモジュールを開始する。次いで、各トークンが順番にステップ1 08にて実行される。このモジュールはRETURNトークンを用いて終了し、 その後すべての資源がステップ110にて解放される。 モジュールをロードするのに必要な処理である「ロードモジュール(Load Mod ule)」サブルーチンを、図10に示されるフロー図を参照して説明する。モジ ュールのロード中に誤りが検出される場合、Load Moduleサブルーチンは直ちに 偽を返す。一般的なエラーは、初期化されたデータ、初期化されていないデータ 、データベース、またはTLVに対する空間を与えるのに不十分な資源しかない 場合の「メモリ不足」、重複TLVタグが発見されたとき、などのエラーである 。データベースおよびTLVセクションの処理前に初期化されたデータをセット アップしなければならない。なぜならば、これらは初期化されたデータセクショ ンの一部であるからである。ステップ120において、モジュールが既にメモリ にロードされているかどうかが判断される。それが既にロードされている場合に は、それは2回目はロードされず、Load Moduleは直ちに成功したことになり、 真を返す。次に、ステップ122において、そのモジュールがリポジトリ内にあ るかどうかが判断される。そうでない場合には、それはロードされ得ず、したが ってロードモジュールサブルーチンは失敗して、偽が返される。ステップ124 において、モジュールの未初期化データ領域41に対しデータの何バイトが必要 かが判断されて、必要とされる量が予約される。この領域41はVM20によっ てオールゼロに設定される。同様に、ステップ126において、そのモジュール の初期化されたデータ領域42に対するデータのバイトの必要数が予約される。 次いで、その初期化されたデータがこのエリアにコピーされる。ステップ18に おいて、ロードされるべきモジュールで定義されるTLVを、VM20によって 、TLV検索のために用いられるそれの内部ネームリストに追加する。TLVデ ータ構造のルートが記憶される。次に、ステップ130において、ロードされる べきモジュール内で定義されたデータベースに対し、VM20がインスタンス生 成を行なう。ステップ128および130はどのような順で実行されてもよい。 ステップ132において、現在のモジュールに対し、インポートされるモジュー ルが選択される。ステップ134において、インポートされたモジュールのリス トが順に調べられ、各モジュールを順に、再帰的にロードする。インポートされ たモジュールが、ステップ136で何らかの理由でロードされ得ないと判断され た 場合、そのモジュールをインポートしたモジュールもロードに失敗したとされる 。なぜなら、そのインポートされたモジュールのサービスにアクセスできないた めである。この場合、Load Moduleは偽を返す。ステッブ138において、さら なるモジュールがインポートされるかどうかが判断される。さらなるモジュール がインポートされる場合には、手順はステップ132に戻る。最後のインポート されたモジュールが再帰的にロードされたとステップ138にて判断された後に は、現在のモジュールはその資源が割当てられ、ロードされ、エラーなくインス タンス生成が行なわれているので、Load Moduleはステップ139でそのリスト 内のソケット60にプラグを差込み、次いで、真を返して、そのモジュールのロ ードが成功したことを示す。ソケット0にプラグを差込もうとする試みは全てV M20によって無視されなければならない。ソケット0にプラグが差込まれる必 要がある場合、それはSETSOCKETトークンを用いて行なえる。 ステップ140においてソケット60にプラグを差込むための手順を、図11 を参照して説明する。ステップ140において、ロードされたモジュール内の各 ソケットに対するデフォルト動作のインスタンス生成が行なわれる。ステップ1 41において、プラグがあるがどうかが判断される。プラグがない場合には、は ステップ149でそのモジュールが実行される。プラグがある場合には、最初の プラグがステップ142にて選択される。ステップ143で、関連のソケットの セキュリティフラグがセットされているか否かが判断される。セットされていな い場合には、そのソケットはステップ146にてプラグを差込まれる。セキュリ ティフラグがセットされている場合には、そのソケットに対して特定されたセキ ュリティ関数が実行される。セキュリティ評価が肯定的である場合、そのソケッ トにはステップ146にてプラグが差込まれる。ステップ148において、その プラグが最後のプラグであるかどうかが判断される。そうでない場合には、次の プラグを評価のために選択する。セキュリティチェックが否定的である場合には 、そのプラグが最後のプラグであるかどうかをステップ147にて判断する。ス テップ147または148において、そのプラグが最後のプラグであると判断さ れる場合には、そのモジュールは、プラグを差込まれなかったすべてのソケット に対してはデフォルト動作で、プラグを差込まれたソケットに対してはプラグを 差 込まれた動作で、実行される。このようにして、安全な動作修正が達成される。 LOADCARDMODULEトークンによつてICC5からロードされるモ ジュールは、EXECUTEMODULEトークンを用いて端末1にあるリポジ トリからロードされるモジュールとは異なる態様で処理されなければならない。 LOADCARDMODULEに対するフローチャートを図12に示す。カード モジュールの実行前に、VM20は、ステップ150において、その状態に印を つけ、必要とされる資源をセーブすることにより、この状態が後で復元され得る ようにする。その状態は以下を含む: ・拡張可能なメモリポインタ、フレームポインタ、およびフレーム終了ポインタ の位置。 ・現在のソケットリスト全体の内容。 ・TLVタグネームリストに登録されたTLV。 ・カードモジュールの活性化を管理するためにVM実装が必要とする他の内部デ ータ。 モジュールは、ステップ152において、図9を参照して上に記載されたロード モジュールルーチンを用いてロードされるが、その違いは、モジュールがICC 5上にあり、リポジトリにはなく、まだロードされていない、という点である。 ステップ154において、カードモジュールのロードが成功しなかったと判断 された場合には、すべての資源が、ステップ155において、それらがLOAD CARDMODULEトークンの実行直前に有していた状態に戻される。これに は以下が必要である: ・そのモジュールおよび当該モジュールによりロードが必要とされるモジュール をロードするのに必要とされるすべての揮発性メモリは、解放されゼロクリアさ れなければならない。このことは、以下を含むことになるが、それらに限定され るものではない: ・全モジュールの初期化および未初期化データに対し必要とされる空間。 ・これらモジュールによって定義される全ての内部TLVバッファおよび管理デ ータ構造に対し必要とされる空間。 ・これらモジュールにより定義されるデータベースが必要とする全ての内部バッ ファおよび管理データ構造に対し必要とされる空間。 ・タグ検索用にVMによって維持されるTLVネームリストは、モジュール実行 直前の状態に復元されなければならない。 ・VMによって維持されるソケットリストの内容は、モジュール実行直前の状態 に復元されなければならない。 フレームポインタ、フレーム終了ポインタ、および拡張可能メモリポインタの 内容は、モジュール実行直前におけるそれらの値に復元されなければならない。 カードモジュールのロードが成功すると、「資源に印をつけセーブする」ステッ プ150にてセーブされた状態はステップ156にて単に破棄される。こうして 、カードモジュールが動作中のシステムに移植される。実用上は、カードモジュ ールはソケットにプラグを差込まなければならない。さもなければ、カードモジ ュールにあるコードを実行する方法はない。この後、ステップ158において、 そのモジュールが実行可能モジュールであるかどうかが判断され、そうである場 合には、それを、ステップ160において、図9のステップ106および108 を参照して説明したように実行する。 上記のこの発明の特定の実施例は例示的にすぎないものとして意図されるもの であり、この発明の原理に従って他の数多くの変形および修正がそれらになされ てもよい。この発明のそのような実施例ならびに変形および修正は、すべて、請 求の範囲に規定されるとおりの本発明の範囲内にあるものと考えられる。 1.1 概観 EPICodeトークンは、付加的なフレームポインタを持つ2スタック仮想 マシンの命令セットである。これらのトークンは、コンパイラの中間言語として さらに取扱われてもよい。プログラムトランスレータのいくつかの実装では実際 にEPICodeトークンを機械コードにコンパイルするだろう。 EPICodeはバイトトークンであり、最大数で256のトークンが可能であ る。1バイトの前置トークンにより、各前置トークンが256トークンのページ を定義するものとして、トークンの範囲は、理論上、最大数で65536のトー クンにまで拡張される。実際には、限られた範囲の前置トークンが定義される。 各トークン値を、2桁の16進コードとして、その対応の名前とともに16進数 表示で示してある。 前置を伴わないトークン(1バイトトークン)は、一次トークンと称され、前置 を伴うトークン(2バイトトークン)は、二次トークンと称される。 下のリスト内に定義されていない一次トークンまたは二次トークンの実行は、I LLOP例外を全生させる。 1.1.1 EPICodeトークンに対するForth関数 この節は、EPICodeトークンとして用いられるForth語のアルファベ ット用語索引リストを示す。各行は、左から右に向かって以下のものを含む: ・定義名(大文字で、等幅のボールド体で示される); ・英語とは異なる場合の、自然言語での発音; ・適用可能な特別な指示子: A ANS Forth語(すべてのオプションのワードセットを含む) C コンパイラ指示語;定義内で用いられなければならない。 G 包括的Forth語(たとえば、Forth Interest Groupなど、共通の使 用法。ただしANS Forthにおいてではない。) H ホスト(コンパイラ)語(トークンをターゲットに与えろもの、与えな いものにかかわらない)。 ・等価なEPICodeトークン。 1.2 規約 1.2.1 数のフォーマット 1バイトより大きい数はトークンプログラムにおいては「ビッグエンディアン」 の2の補数形式で最上位バイトが最初になる状態で送信される。EPICode プログラム内では、プログラムが、数を、基礎となっているアーキテクチャに最 も適した形式で記憶できるよう、数は常に正しいフォーマットの演算子によって アクセスされなければならない。 多倍精度データ型は最上位セルが先頭になる状態でスタック上に保持される。メ モリ内では、これらのデータ型は、最上位セルが、マルチセル型内の最下位アド レスのセルにある状態で保持される。 1.2.2 制御構造およびオフセット 制御構造は、制御トークン(BRA、RLOOPなど)に符号付4バイト、2バ イトまたは1バイトオフセットが続いたものによって形成される。制御トークン に続くこのオフセットは、そのオフセットがフェッチされた後にトークンポイン タ(TP)に加算される。したがって、分岐トークンがaddrにある場合、行 先アドレスは、1バイトオフセット(SBRA)に対してはaddr+2+of fset、2バイトオフセット(BRA)に対してはnddr+3+offse t、4バイトオフセット(EBRA)に対してはaddr+5+offsetで ある。 4バイトオフセットをとるトークンは、コードのための32ビット線形アドレス 空間をサポートする仮想マシンの実装上の端末特有のコードにのみ利用可能であ る。 1.2.3 アドレス ユーザにより定義される手順は、EPICodeブログラム内におけるそれらの アドレスによって定義される。トークンがより大きなプロセッサのために翻訳ま たはネイティブコードにコンパイルされる場合、トークン空間アドレスはそのコ ードの実際のアドレスには対応しない。 1.3 データ型 ほとんどのトークンは、そのトークンによって決定されるデータサイズおよび符 号付または符号なしにしたがって解釈された量に対して作用するが、フレーム記 憶にあるメモリにアクセスする命令は前置トークンによって決定されるデータ型 オーバライドを行ない得る。バイトコードの組(表1に示される)がそのような 前置トークンのために予約されているが、現在はSBYTEおよびUBYTEの みが用いられている。 必要とするセルが1つ(1バイト)未満であるデータ型は、バイト演算子、また はオーバライド前置を伴う演算子を用いることによって、メモリからフェッチさ れる。符号付データ型が暗黙値とされる場合または明示される場合には、そのデ ータはセル幅まで符号拡張される。符号なしデータ型が暗黙値とされる場合また は明示される場合には、そのデータはゼロ拡張される。 表1:データ型前置 1.4 算術 返された結果に対して定められたサイズからオーバフローする加算演算および減 算演算は、その結果の[そのサイズに適応し最大符号なし値]を法とする値+1 を返す。 送られた値のサイズよりも行先記憶が小さいストア動作は、その行先の幅に切捨 てられた値を記憶する。 除算演算は対称である。つまり、丸め演算は符号にかかわらず常にゼロへの方向 である。 1.5 一次トークン トークンは、便宜上いくつかの論理的な組に分割され、下にあるように別個のセ クションに示される。トークン値はすべて16進数である。 トークンに適用可能なデータ型前置を、表1に与えられた短縮形を用いて明示的 にリストしてある。一次トークンのうち、前置リストにないトークンが前に置か れている一次トークンは無効であり、そのようなトークンが実行されると、IL LOP例外が出力される。そのトークンに対するデフォルトの型をイタリック体 で示し、常にリストの最初に挙げてある。デフォルトデータ型前置は冗長であり 、上にあるように、トークンに前置して用いられる場合には無効である。 1.5.1 動作の組 00 NOOP (−) いかなる動作も行なわれない。 04 BFETCHS (addr-num) 与えられたアドレスから8ビットのバイトをフェッチし、それを符号拡 張する。 08 LIT (−x) インラインで後に続くセルをデータとして返す。 09 LITC (−addr) インラインで後に続くセルを、コードイメージにおけるアドレスである リテラルとして返す。このリテラルの値は、そのイメージ内で、プログ ラムローダにより再配置されてもよい。 0A LITD (−addr) インラインで後に続くセルを、初期化されたデータ空間におけるアドレ スであるリテラルとして返す。このリテラルの値は、そのイメージ内で プログラムローダにより再配置されてもよい。 0B LITU (−addr) インラインで後に続くセルを、初期化されていないデータ空間における アドレスであるリテラルとして返す。このリテラルの値は、そのイメー ジ内で、プログラムローダにより再配置されてもよい。 0C PLIT (−u) インラインで後に続くバイトを返す。このバイトは32ビットにゼロ拡 張される。 0D NLIT (−num) インラインで後に続くバイトを戻し、32ビットにゼロ拡張し、次いで 否定する。 0E HLIT (−u) インラインで後に続く2バイト値を返す。この値は32ビットにゼロ拡 張される。 10 HLITC (−addr) インラインで後に続く符号なし2バイト値をコードイメージのベースア ドレスに加算した結果生ずるアドレスを返す。この値は32ビットにゼ ロ拡張される。 11 SLITD (−a-addr) インラインで後に続き、初期化されたデータのベースアドレスに、セル 数で示した正のオフセットとして解釈された符号なしバイトを加算した 結果のアドレスを返す。このバイトは、32ビットにゼロ拡張され、4 で乗算されて、オフセットをバイトで与える。 12 HLITD (−addr) 初期化されたデータのベースアドレスに、インラインで後に続く2バイ ト値を加算した結果のアドレスを返す。この値は32ビットに符号拡張 される。 13 SLITU (−addr) インラインで後に続き、未初期化データのベースアドレスに、セル数で 示した正のオフセットとして解釈された符号なしバイトを加算した結果 のアドレスを返す。このバイトは、32ビットにゼロ拡張され、4で乗 算されて、オフセットをバイトで与える。 14 HLITU (−addr) 未初期化データのベースに、インラインで後に続く2バイト値を加算し た結果のアドレスを返す。この値は32ビットに符号拡張される。 15 ADDLIT (x1−x2) インラインで後に続くセル内のデータをx1に加算して、x2を生じさせ る。 16 SADDLIT (x1−x2) 符号付1バイトインライン値からのリテラルをx1に加算して、x2を生 じさせる。 19 SUBLIT (x1−x2) インラインで後に続くセル内のデータをx1から減算して、x2を生じさ せる。 1A SSUBLIT (x1−x2-t) 符号付1バイトインライン値をx1から減算して、x2を生じさせる。 1C VSUBLIT (d−d-Iit) 符号付8バイトインライン値を倍長語数dから減算する。 1D SMULLIT (num−num*lit) numを、インラインで後に続く符号付1バイトリテラルで乗算する。 1E SDIVLIT (num-num/lit) numを、インラインで後に続く符号付1バイトリテラルで除算する。 21 DIVU (u1u−u3) u1をu2(符号なし)で除算して、u3を与える。 3A SHRU (u−u>>1) uを右に1ビット論理シフトして0ビットを挿入する。 注意。SETxx演算子は0との比較を行ない、そのフラグがこの比較の結果に 従ってセットされる。 42 SETGE (num-flag) num≧0(符号付)ならTRUEを返す。 45 SETLE (num−flag) num≦0(符号付)ならTRUEを返す。 48 CMPGEU (u1u2−flag) 符号なしの値u1とu2とを比較し、u1≧u2ならTRUEを返す。 4C CMPGE (num1num2−flag) 符号付の値num1とnum2とを比較し、num1≧num2ならTRU Eを返す。 4F CMPLE (num1num2−flag) 符号付の値num1とnum2とを比較し、num1≦num2ならTRU Eを返す。 以下のトークンはフレーム記憶へのアクセスを与える。 50..53 PFRFETCH2...PFRFETCH5 (−num) nを2..5として、SFRFETCHn(q.v.)に対する短縮形式 の同義語。 考えられ得るデータ型オーバライドはSL,SB,UBを含む。 54..5F TFRFETCH12...TFRFETCH1 (−num) nを−12..−1として、SFRFETCHn(q.v.)に対する短 縮形式の同義語。 考えられ得るデータ型オーバライドはSL,SB,UBを含む。 60..63 PFRSTORE2...PFRSTORE5 (num−) nを2..5として、SFRSTOREn(q.v.)に対する短縮形式 の同義語。 考えられ得るデータ型オーバライドはSL,SBを含む。 64..6F TFRSTORE12...TFRSTORE1 (num−) nを−12..−1として、SFRSTOREn(q.v.)に対する短 縮形式の同義語。 考えられ得るデータ型オーバライドはSL,SBを含む。 70 SFRFETCH (−num) フレームポインタからの符号付インライン1バイトオフセットでの値( デフォルトにではセル)numをフェッチする。このオフセットは、デ フォルトデータ型に対してはセル指標(つまり、バイトアドレス指定オ フセットを得るためにはそれに4を乗算する。)として、およびバイト サイズのデータ無効に対してはバイト指標として解釈される。SFRF ETCH 0およびSFRFETCH 1は、意味のない内部フレーム 管理データを呼出プログラムに返し、したがって、フレーム内への有効 な参照を構成するわけではない。したがって、パラメータはSFRFE TCH 2から開始し、一時変数はSFRFETCH −1から開始す る。これは、フレームスタックがメモリ内で下方に向かって伸びるから である。 考えられえるデータ型オーバライドは:SL,SB,UBを含む。 71 SFRSTORE (num−) 引数内の値(デフォルトではセル)numをフレームポインタから符号 付のインラインの1バイトオフセットした位置にストアする。このオフ セットは、デフォルトデータ型に対してはセル指標(つまり、バイトア ドレス指定されるオフセットを与えるためには4を乗算する)として、 およびバイトサイズのデータオーバライドに対しては、バイト指標とし て処理されるインライン値として供給される。詳細についてはSFRF ETCHを参照されたい。 考えられ得るデータ型オーバライドは:SL,SBを含む。 72 FRFETCH (−num) フレームポインタからの符号付のオフセットの位置の値numをフェッ チする。このオフセットは2バイトインライン値によって与えられる。 詳細についてはSFRFETCHの説明を参照されたい。 考えられ得るデータ型オーバライドは:SL,SB,UBを含む。 73 FRSTORE (num−) 引数内の値をフレームポインタから符号付のオフセットの位置に、スト アする。このオフセットは2バイトインライン値によって与えられる。 さらなる詳細についてはSFRSTOREを参照されたい。 考えられ得るデータ型オーバライドは:SL,SBを含む。 74 SFRADDR (−addr) フレームポインタからの符号付オフセットの位置のフレーム内アドレス を返す。このオフセットは、デフォルトデータ型に対しては4で乗算さ れてバイトオフセットを与え、バイトサイズのデータオーバライドに対 してはバイト指標として直接用いられる1バイトインライン値によって 与えられる。 考えられ得るデータ型オーバライドは:SL,SBを含む。 75 FRADDR (−addr) フレームポインタからの符号付セルオフセット位置のフレーム内アドレ スを返す。このオフセットは、デフォルトデータ型に対しては4で乗算 されてバイトオフセットを与え、バイトサイズのデータオーライドに対 してはバイト指標として直接用いられる2バイトインライン値によって 与えられる。 Forthの標準の数変換関数に対するサポートを提供するトークンに対して: トークン名のNMBRは“number(ナンバー)”と発音される。トークン LTNMBRN、NMBRSおよびTONUMBERはユーザ変数BASEを変 換数基底として用いる。 8C UNDER (x12−x112) スタック上の2番目の項目を複写する。 9C ZERO (−0) 値0をスタック上に残す。 9D ONE (−1) 値1をスタック上に残す。 9E MINUS0NE (−-1) 値−1をスタック上に残す。 AO INDEX (addr1num−addr2) numに4を乗算し、addr1を加えて、addr2を得る。 A2 EDOCREATE (−a-addr) インラインセル内においてこのトークンの直後に続くオフセットのデー タ空間内のアドレスを返して、サブルーチンリターンを実行する。この トークンを用いて、それに対応する手順を呼出すことによりデータ領域 を識別して、位置に依存しないデータテーブルの創出を可能にする。 A3 EDOCLASS (−a-addr) セル内において次にインラインで後に続く符号なしオフセットを(つま りコードオフセトの後)、初期化されたデータ空間のベースアドレスに 加算した結果生するアドレスをデータスタックにプッシュした後、後に 続くインラインセルにオフセットが保持されたコード空間アドレスに分 岐する。このトークンを用いることにより、プログラムメモリ内のデー タ構造を識別し、それを処理するルーチンに制御を渡して、単純なクラ ス機構の基礎を提供する。 A4 DOCREATE (−a-addr) インライン2バイト値でこのトークンの直後に続くオフセットのデータ 空間内のアドレスを返して、サブルーチンリターンを実行する。このト ークンを用いて、それに対応する手順を呼出すことにより、データオフ セットを識別して、位置に依存しないデータテーブルの創出を可能にす る。 A5 DOCLASS (−a-addr) 2バイトで次にインラインで続く符号なしオフセット(つまり、コード オフセットの後)を、初期化されたデータ空間のベースアドレスに加算 した結果生ずるアドレスをデータスタックにプッシュした後、後に続く インラインセルにオフセットが保持されたコード空間アドレスに分岐す る。このトークンを用いることにより、プログラムメモリ内においてデ ータ構造を識別し、それを処理するルーチンに制御を渡して、単純なク ラス機構の基礎を与える。 A6 ECALL (−) インラインセルが後に続いて、このセルをコード空間内への符号付バイ トオフセットとして用いて手順を呼出す。 A7 SCALL (−) 1つのインラインバイトが後に続き、このバイトをコード空間内への符 号付バイトオフセットとして用いて手順を呼出す。 A8 CALL (−) インラインの2バイトオフセットが後に続き、この値をコード空間内へ の符号付バイトオフセットとして用いて手順を呼出す。 AB SMAKEFRAME (xparams…x1−) 手順パラメータを形成するセルの数である第1のparamsと、次い で、一時変数のセルの数であるtempsとを含む、2つの符号なし1 バイトリテラルが後に続く。params+temps+2セルを割当 て、次いで、新しいフレームを指すよう現在のフレームポインタをセッ トする。このトークンにより、手順パラメータおよび一時変数はFRF ETCHおよびFRSTOREによってアクセスされることが可能とな る。 仮想マシンがリターンスタック上にフレームを構築することが許可され 、したがって、フレームの使用はリターンスタック使用法に一般的にあ てはまる規則によって制限を受ける。手順パラメータは、それらがFR FETCHおよびFRSTOREによってアクセスされ得るよう、SM AKEFRAMEによってデータスタックからフレーム内に移動させら れる。 要求されるサイズのフレームを構築することが可能でない場合、FRA ME STACK ERRORが出力される。 AC MAKEFRAME (xparams…x1−−) 手順パラメータを形成するセルの数である第1のparamsと、次い で、一時変数のセルの数であるtempsとを含む、2つの符号なし2 バイトリテラルが後に続く。さらなる詳細に関してはSMAKEFRA MEを参照されたい。 AD RELFRAME (−) フレームポインタをそれの以前の値に復元し、現在のフレームを解放す る。 1.5.2 分岐の組 これらのトークンは、通常のスタックマシン分岐演算子に加えて、Forth語 DO ?DO LOOP +LOOP LEAVE IおよびJに対するランダ ム片を含む。 AF EBRA (−) 常に分岐する。4バイトインラインオフセット。 BO EBZ (num−) num=0であれば分岐する。4バイトインラインオフセット。 B1 EBNZ (num−) num≠0であれば分岐する。4バイトインラインオフセット。 B2 SBRA (−) ショート分岐。符号付バイトインラインオフセット。 B3 SBZ (num−) num=0であればショート分岐する。符号付バイトインラインオフセ ット。 B4 SBNZ (num−) num≠0であればショート分岐する。符号付バイトインラインオフセ ット。 B5 BRA (−) 無条件分岐。符号付2バイトインラインオフセット。 B7 BNZ (num−) num≠0であれば分岐する。符号付2バイトインラインオフセット。 1.5.3 データ型およびコードページオーバライド この群は、8ビットトークンの制限が克服されることを可能にする。なお、それ らのスタック動作は以下のトークンに依存する。トークンの対は二次トークンと 称される。 データ型に対する拡張トークンはトークンC0〜CFを占める。この範囲にある 使われていないトークンは将来新たなデータ型前置が必要となったときに用いら れるよう予約される。 C1 SBYTE (−) 符号付バイト。 C2 UBYTE (−) 符号なしバイト。 C5 SLONG (−) 符号付ロング、32ビット。 C6 ULONG (−) 符号なしロング、32ビット。 1.5.4 ソケット処理トークン D2 DOSOCKET (−) 必要とされる関数番号を特定するインラインバイト(0..63)が後に 続く。スタック効果は、そのソケットに結びつけられる関数によって定 義される。 D3 IDOSOCKET (u−) uによりソケット番号(0..63)が特定されるソケット関数を実行す る。下位レベルスタック効果は、そのソケットに結びつけられる関数に より定義される。uが63より大きい場合、ANS Forth例外2 4(無効数値引数)が出力される。 1.5.5 制御の組 E6 IMCALL (−) モジュール番号(0−255)が次のインラインのバイトにより与えら れ、かつ関数番号(0−255)が後続のインラインのバイトで与えら れるモジュールからの関数を実行する。スタック効果は、呼出された関 数に依存する。 E7 CLASSPROC (−) ロード中、CLASSPROCはクラス処理コードへのエントリをマー クする。コンパイルの捕助のため使用され、NOOPとして実施されて もよい。 F9 SYSFUNC (−) 二次トークンの最初のバイトとして扱われるページ拡張トークン。後に 続くインラインバイトによって特定されるルーチンを呼出す。サポート された二次トークンの組は1.7項にて定義される。スタック効果はそ の特定されるルーチンにより定義される。 1.6 ソケット 最初の8つの二次ソケットトークンはソケット管理関数のために予約され、定義 される管理関数を以下に示す。残りのソケット(D2 08〜D2 3F)はア プリケーション使用のためのものである。 F9 91 SETSOCKET (xp u−flag) 実行ポインタxpをソケット関数uのハンドラにセットし、DOSOC KET<u>の後の実行によりxpが実行されるようにする。実行ポイ ンタがセットされる前に、SETPLUGCONTROLによってイン ストールされた手順を実行することにより、そのソケットにこの新しい xpが差込まれるか否かを判断する。flagがこの手順によって返さ れる値である。SETSOCKETはflagがFALSEである場合 にポインタをセットするにすぎず、そうでない場合にはこのポインタは 破棄される。uが63より大きい場合、例外−24(無効数値引数)が 発生される。 D2 00 SETPLUGCONTROL (xp−) ソケットにプラグが差込まれ得るか否かを判断すべく、SETSOCK ETによって実行される、ユーザによって書かれた手順の実行ポインタ xpを記憶する。 この手順の動作(ここでは、説明のため、PLUGCONTROLと称 される)は以下のようでなければならない: (u−flag) uはソケット番号であり、flagは、ソケットにプラグが差込まれ得 る場合にはFLASEを返され、差込まれ得ない場合にはTRUEを返 される。さらに、PLUGCONTROL手順は、範囲0〜63外のu の値に対しては、例外−24(無効数値引数)を生じさせなければなら ない。 PLUGCONTROLのデフォルト動作は仮想マシンによってインス トールされ、uのすべての値に対してFALSEを返すものであり、す べてのソケットにプラグが差込まれることを可能にする。 D2 03 OSCALLBACK (dev fn num1 num2−ior) 以下のパラメータでオペレーティングシステムルーチンを呼出す:de vは、配列num2に含まれるnum1の32ビットパラメータで、関数 fnに対する要求されたI/O装置を選択して、実装に依存するior を返す。なおnum2はスタックの一番上にある。num1およびnum 2はCでの用法においてはそれぞれarvcおよびargvに対応する 。このソケットは実装に依存するものであり、EPICodeを用いて 書かれた端末固有プログラム(TRS)が端末に依存するI/Oを持つ ことができるよう提供される。特定された関数がサポートされていない 場合、例外−21(サポートされない動作)が発生される。 D2 04 EPICALLBACK (dev fn num1 num2−ior) 背景となるオペレーティングシステムによって呼出されてもよいEPI Codeルーチンに対するソケット。4つのパラメータは以下のとおり の使用が意図された32ビット値である:devは、配列num2に含 まれるnum1の32ビットパラメータで、関数fnに対し、要求され たI/O装置を選択して、意味が実装に依存するiorを返す。num 1およびnum2は、C使用法においては、それぞれ、arvcおよびa rgvに対応する。 このソケットは実装に依存するものであり、EPICodeを用いて書 かれた端末固有プログラム(TRS)がオペレーティングシステムに対 するコールバックルーチンを与え与えられるように提供される。特定さ れた関数がサポートされていない場合、例外−21(サポートされてい ない動作)が出力される。 1.7 SYSFUNC I/Oセット このセットは、基本オペレーティングシステムのルーチンに対する汎用インター フェイスとして作用するSYSFUNCトークンを通じて利用可能な関数を定義 する。 1.7.1 装置へのアクセス 各装置には、一意の装置番号が割当てられる。状態iorコードは、常に成功を 示すiorコード0を除いては、装置に依存する。 F9 00 DKEY (dev−echar) 入力装置devから文字を読出す。 F9 01 DKEYTEST (dev−flag) もし、文字が、入力装置devから読出すことができる状態であれば、 TRUEを返す。 F9 02 DEMIT (char dev-) 出力装置devにcharを送信する。 F9 03 BEEP (u dev-) 出力装置devに対し、uミリ秒の持続期間にわたり音を発生するよう 要求する。この関数は、特定の持続期間にわたり処理を中断できる。 F9 04 DREAD (addr len dev-ior) 入力装置devから列を読出し、装置依存性のiorを返す。返される 列は、キーボード装置から読出される文字の下位バイトのみを含む。 F9 05 DWRITE (addr len dev-ior) 出力装置devに列を書込み、装置依存性のiorを返す。 F9 06 DSTATUS (dev-ior) 装置devに関連付けられたリソースの状態iorを返す。ただし、一 般的な場合には、「レディ」および「使用可能」は、0で表わされ、「 ノットレディ」は他の任意の値で表わされる。特定の装置がその装置に おいては意味を有する非ゼロの値を返してもよい。もし、その装置が、 OUTPUTトークンの前回の実行により選択されていれば、OUTP UTに渡された関数の実行が完了するまでは、DSTATUSは「ノッ トレディ」を返さなければならない。 F9 07 DIOCTL (dev fn num a-addr-ior) a−addrの配列内のnumのセルサイズの引数でチャネルdevに 対するIOCTL関数fnを実行する。 F9 08 OUTPUT (xp dev-ior) その実行ポインタがxpで与えられる手続を実行し、その出力は装置d evに向けられる。OUTPUTからのリターンにおいては、現在の出 力装置(GETOPを参照)は影響されない。もしこの手続が実行可能 であれば、iorはゼロとして返される。xpの実行から生じるすべて の例外は、仮想マシンにより捉えられ、OUTPUTを即座に終了させ る。 F9 09 DWRITESTRING (dev-) このトークンは後に文字列が続くもので、これら多くのバイトが後に続 くカウントバイトとしてトークンストリーム内にストアされる。DWR ITESTRINGトークンは、選択された装置devに文字を書込む 。実行は、最後の文字の直後に行なわれる。 F9 OA GETOP (-dev) SETOPによって、または、OUTPUTに渡された関数の実行の間 に選択された最後の装置devを返す。装置指向の入出力操作用のデフ ォルト装置を発見するため使用される。この関数は、現在の装置に依存 する関数の容易な実現を可能にする。 F9 OB SETOP (dev-) 装置向けの入出力操作用にGETOPにより返されたデフォルト装置d evをセットするため使用される。この関数は、現在の装置に依存する 関数の容易な実現を可能にする。 F9 OC FORMFEED (dev-) 装置devにおける、「クリア・スクリーン」(端末のディスプレイ) または「改ページ」(プリンタ)などの、装置に依存する「新たなフォ ーム」に関する動作を実行する。 F9 OD CR (dev-) 装置devにおける装置依存性の「改行(new line)」動作を 実行する。 F9 OE SETXY (num1num2dev-) x座標としてnum1を、y座標としてnum2を使用して、装置dev における装置依存性の「絶対位置設定」動作を実行する。 1.7.2 時間の処理 標準Forth語。 1.7.3 言語およびメッセージ処理 このグループのトークンは、言語およびメッセージの選択および表示を扱うため の機構を提供する。 F9 20 CHOOSELANG (addr-flag) addrにある2文字によってISO639言語コードが与えられる言 語を選択する。もしflagがTRUEであれば、その言語は既に発見 されておりその時点における現在の言語である。そうでなければ、呼出 プログラムは他の言語を選択せねばならない。常に少なくとも1つの言 語(端末のネイティブ言語)が利用可能である。 F9 21 CODEPAGE (num-f1ag) 常駐コードページnumを選択しようと試みる。コードページは、IS O8859に従い番号を付けられる(0=共通文字セット、1=Lat in1など)。もしコードページが既に選択されていれば、flagは TRUEである。 F9 22 LOADPAGE (addr-flag) 端末内のaddrにコードページをインストールする(このページは一 般にカード内で発見されるであろう)。フラグはページのアップロード の成功を示す。端末において利用可能でないコードページを必要とする 新しいメッセージテーブルがICCからロードされると、ページインス トールが行なわれるであろう。 F9 23 INITMESSAGES (-) この関数は、COからFF(hex)までの番号がふられる個人発行者 のメッセージおよびLOADMESSAGESによりインストールされ た任意のメッセージを消去する。各ユーザセッションの後にこの関数が 呼出されなければならない。 F9 24 LOADMESSAGES (c-addr-) 一時メッセージデータベース内の適切な場所にメッセージテーブルをイ ンストールする。c−addrは、メッセージ用に使用するためのペー ジコード、ISO639による2文字言語コードおよびインストールさ れるべきメッセージを含む、メッセージテーブルの定義のロケーション を表わす。 F9 25 GETMESSAGE (num−c-addr len) メッセージnumに対する文字列パラメータを返す。文字列の、長さl enから後続のスペースは取除かれる。 F9 27 UPDATEMESSAGES (addr len-) 常駐言語テーブルにメッセージテーブルをインストールする。もし同一 コードの言語が既に存在していればそれは置換されるであろう。そうで なければ、新しい言語が追加されるであろう。新しい言語用の十分なス ペースがなければ、コード22(TOO MANY LANGUAGE S)でTHROWが発生されるであろう。 addrは、メッセージ用に使用するためのページコード、ISO63 9による2文字言語コードおよびインストールされるべきメッセージを 含む、メッセージテーブルの定義を含むTLVのロケーションを表わす 。 F9 28 MESSAGESIZE (-len) この端末に対するメッセージの標準長を返す。 F9 29 TYPEMESSAGE (addr len-) 端末のメッセージライン上に所与の列を表示する。 1.7.4 ICCカードの処理 このグループのトークンは、集積回路カードリーダを扱うための機構を提供する 。 F9 30 INITCARD (num-ior) ICCリーダnumを選択する。ただしnumは0または1である。 F9 31 CARD (c-addr1len1 c-addr2len2-c-addr2len3) バッファc−addr1len1内のデータをカードに送り、かつ、c− addr2len2でデータを受信する。返されるlen3は、受信され た列の実際の長さを表わす。 バッファc−addr1len1は、 4バイトの標準ISOヘッダ(クラス、命令、P1、P2)、 任意のデータ(length,その後にlengthバイト,ただしlengthは0か ら255である)を含まねばならない。 バッファc−addr2len2は、カードからの応答のため、ならびに SW1およびSW2を含む2つのステータスバイトのための適切なスペ ースを提供せねばならない。 誤り処理はCARDの内部で行なわれる。 F9 32 CARDON (c-addrlen1-c-addrlen2 ior) ICCに電力を印加し、カードリセット関数を実行する。c−addr len1は、リセットに対する応答が置かれるであろうバッファを提供 する。len2は返された列の実際の長さである。 F9 33 CARDOFF (-) ICCの電源を切る。すべてのトランザクションが完了したときに実行 される。 F9 34 CARDABSENT (-flag) リーダ内にICCカードが存在しなければ、TRUEを返し、それ以外 の場合にはFALSEを返す。 1.7.5 磁気ストライプの処理 このグループのトークンは、磁気ストライプ装置を扱うための機構を提供する。 F9 38 FROMMAG (c-addr len1 num-c-addr len2 ior) 1つまたは2つ以上のISO磁気ストライプを読出す。この動作には、 ユーザのCANCELキーまたはタイムアウトによって割込むことがで きる。numは、読出すべき磁気ストライプトラックのISO識別子で あり、c−addrは文字列に対する行先アドレスであり、len1は その最大長(ISO1については少なくとも78バイト、ISO2につ いては41バイト、そしてISO3については108バイトであり、ま たは、複数の磁気ストライプを読出す場合にはこれらの合計)である。 リターン時、len2は、読出された文字列の実際の長さを表わす。 F9 39 TOMAG (c-addr len num-ior) 1つのISO磁気ストライプに書込む。データはバッファc−addr len内にあり、ストライプnum(1−3)に書込まれるであろう。 動作には、ユーザのCANCELキーまたはタイムアウトにより割込む ことができる。 1.7.6 モデムの処理 このグループのトークンは、モデム装置を扱うための機構を提供する。 F9 40 MODEMCALL (num1 num2 num3 num4 num5 c-addr len-ior) 内部端末モデムを使用して番号を呼出す。 num1およびnum2は、使用される入出力ラインの速度を示す(75 から19200ボー)。実際にサポートされる速度は実装により規定さ れる。 num3はパリティを示す(0=なし、1=奇数、2=偶数)。 num4は使用されるビット数を示す(7または8)。 num5は送信のために使用されるストップビットの数を示す(1また は2ビット)。 c−addr lenは呼出される電話番号を含む文字列である。 「,」をダイセルトーン待機用に含んでもよい。もしこの文字列の最初 の文字が「P」であれば、デフォルトのトーンダイヤリングの代わりに パルスダイヤリングが使用される。 F9 41 MODEMHANGUP (-ior) この関数は現在のモデムセッションを終了するため使用される。 F9 42 TOMODEM (c-addr len-ior) 確立されたモデムセッションにおいてc−addr lenにある文字 列を送信する。 F9 43 FROMMODEM (c-addr len1-c-addr len2 ior) モデムからの文字列を受信する。c−addrは、文字列に対する行先 アドレスであり、len1はその最大長である。リターン時、len2は 読出された文字列の実際の長さを表わす。もし特定の期間にわたり全く 文字が受信されなければ、タイムアウトが生じる。 F9 44 MODEMBREAK (-ior) この関数は、接続されたモデムのセッションにブレークを送る。 1.7.7 ブラックリスト管理 このグループのトークンは、ブラックリストファイルを扱うための機構を提供す る。 F9 48 INITBLACKLIST (-) この関数は、ブラックリストを空状態に初期化する。 F9 49 BLACKLISTINSERT (c-addr len-flag) この関数は、エントリをリストのc−addr lenに挿入し、リス トはソート順に維持される。リストの更新時にはこの関数を使用しなけ ればならない。 もし挿入が成功であれば(エントリが既存のリスト内に発見されず、か つリストが一杯でもなければ)、返されるflagはFALSEである 。 F9 4A INBLACKLIST (c-addr1len1 c-addr21en2 flag) この関数は、リスト内のキーc−addr1 len1を発見しようと試 みる。もしキーが発見されれば、c−addr2 len2は、(選択さ れたエントリの他のバイトおよびおそらくは皿のいくつかの情報バイト を含む)探索の結果を含む。もし番号が見つかれば、返されるflag はFALSEである。 F9 4B BLACKLISTDELETE (c-addr len-flag) この関数はリストからエントリを削除する。ただし、c−addr l enはエントリを削除するためのキーである。これは最大18バイト長 である。 もし削除が成功であれば(エントリが発見されれば)、返されるfla gはFALSEである。 1.7.8 セキュリティアルゴリズムに対するサポート このグループのトークンは、セキュリティサービスを初期化し使用するためのサ ポートを提供する。 F9 50 INITSECALGO (c-addr len num-flag) c−addrは、初期化バッファのアドレスであり、lenはその長さ である。各アルゴリズムに対する入力パラメータは異るだろうが、キー が一般にこの初期化にはわたされなければならない。もし初期化が成功 裡に行なわれれば、flagはFALSEである。 F9 51 SECALGO (c-addr1len c-addr2num-flag) c−addr1は計算のための入力データバッファであり、lenはそ の長さである。c−addr2はその結果の記憶のための出力バッファ である。 もし計算が成功裡に行なわれれば、flagはFALSEである。 1.7.9 端末サービス F9 58 POWERLESS (-flag) もし現在のトランザクションを完了するための十分な電力があれば、F ALSEを返す。 1.7.10 データベースサービス 以下のトークンは、データベースを扱うための機構を提供する。 F9 61 DBMAKECURRENT (a-addr-) DPBがa−addrにあるデータベースをカレントデータベースにす る。 F9 62 DBSIZE (-len) カレントデータベースのカレントレコードにウィンドウを与えるための 、レコードバッファのサイズを返す。 F9 63 DBFETCHCELL (num1-num2) カレントデータベースのカレントレコード内のセル整列したバイトオフ セットnum1のセルから32ビットの値num2を返す。 F9 64 DBFETCHBYTE (num-char) カレントデータベースのカレントレコード内のバイトオフセットnum から1バイトの値charを返す。 F9 65 DBFETCHSTRING (num len-addr len) カレントデータベースのカレントレコード内のオフセットnum、長さ lenのバイトシーケンスの文字列パラメータaddrおよびlenを 返す。 F9 66 DBSTORECELL (num1num2-) カレントデータベースのカレントレコード内のセル整列したオフセット num2のセルへ32ビットの値num1をストアし、データベースレコ ードを更新する。 F9 67 DBSTOREBYTE (char num-) カレントデータベースのカレントレコード内のオフセットnumのバイ トに1バイトの値char1をストアし、データベースレコードを更新 する。 F9 68 DBSTORESTRING (addr len1 num len2-) カレントデータベースのカレントレコード内のオフセットnumへad drのバイトシーケンスの最大でlen2のバイトをストアし、データ ベースレコードを更新する。もし、len1がlen2より小さければ、 データベースレコードバッファ内の行先はlen2までスペースで埋め られる。 F9 69 DBINITIALIZE (-) 現在のデータベースをオールゼロに初期化し、データベースの「カレント」でか つ「利用可能な」レコード番号を0にセットする(DBRECNUMおよびDB AVAILを参照)。 F9 6A DBRECNUM (-u) カレントレコード番号を返す。 F9 6B DBCAPACITY (-u) カレントデータベースが保持することができるレコードの総数を返す。 F9 6C DBAVAIL (-num) カレントファイル内の次に利用可能なレコードのレコード番号を返す。 F9 6D DBADDREC (-) DBAVAILにより与えられたレコード番号で、カレントデータベースの最後 にレコードを追加する。 F9 6F DBSELECT (num-) 現在選択されているデータベース内のレコードnumを選択する。 F9 70 DBMATCHBYKEY (addr len-flag) addrおよびlenにより指定された文字列に対し、キーフィールド上で一致 するものがあるかカレントデータベースを探索する。この構造についてはlen は定義されたキーフィールドの長さよりも短くてもよく、残りの文字は空白文字 (ASCII20h)と比較される。もし照合が成功であれば、一致したレコード がカレントとなりflagはFALSEである。 このトークンは順序付きデータベースについてのみ使用されるであろう。 F9 71 DBADDBYKEY (addr len-flag) addrおよびlenにより指定された文字列に対しキーフィールド上で一致す るものがあるかカレントデータベースを探索する。この構造についてはlenは キーフィールドの定義された長さよりも短くてよく、残りの文字は空白文字(Λ SCII20h)と比較される。もし照合が成功であれば、一致したレコードはカ レントとなりflagはTRUEである。もし照合が不成功であれば、新しいレ コードがデータベース内の正しい位置に挿入されフラグはFALSEとなる。こ の新しいレコードは、所与のキーを含むそのキーフィールド以外については初期 化されるであろう。 このトークンは順序付きデータベースにおいてのみ使用されるであろう。 F9 72 DBDELBYKEY (addr len-flag) addrおよびlenにより指定された文字列に対して、キーフィールド上で一 致するものがあるかカレントデータベースを探索する。この構造についてはle nはキーフィールドの定義された長さよりも短くてもよく、残りの文字は空白文 字(ASCII20h)と比較される。もし、照合が成功であれば、一致したレコ ードは削除されflagはFALSEである。削除動作は、前もって初期化され たデータベース内のレコードを物理的に再配置または再リンクする適切な動作を 取ることによって、物理的実装でのあらゆる潜在的な「穴」を塞ぐ。このトーク ンは、順序付データベースについてのみ使用されるであろう F9 73 DBSAVECONTEXT (-) カレントデータベース、カレントレコード番号および任意の捕助情報を含む現在 のコンテキスト情報をサーバにスタックさせる。サーバは、コンテキスト情報を セーブするため仮想マシンのリターンスタックを使用する権利を持ち、したがっ て、クライアントのソフトウェアはリターンスタックの使用について適用される 一般規則に従わなければならない。 F9 74 DBRESTORECONTEXT (-) 最も新しくセーブされたコンテキスト情報(DBSAVECONTEXTを参 照)を、サーバに復元させる。サーバは、コンテキスト情報をセーブするため仮 想マシンのリターンスタックを使用する権利を持ち、したがってクライアントの ソフトウェアはリターンスタックの使用について適用される一般規則に従わなけ ればならない。 1.8 TLV管理 このセクションで説明されるトークンはTLV管理およびアクセス関数を提供す る。 1.8.1 文字列の処理のサポート F9 78 PLUSSTRING (c-addr1len1 c-addr21en2-c-addr2len3) c−addr1のlen1バイトの文字列をc−addr2のlen2バイトの文字 列の終わりにストアする。行先文字列(c−addr2)の先頭と2つの長さの 合計(len3)とを返す。行先文字列の終わりには両文字列を保持するための 空間がなければならない。 F9 79 CPLUSSTRING (char c-addr len-c-addr len+1) c−addrのlenバイトの文字列の終わりに文字charをストアする。行 先文字列(c−addr)の先頭と得られた文字列の長さ(len+1)とを返 す。行先文字列の終わりには追加の文字を保持するための空間がなければならな い。 F9 7A MINUSTRAILING (c-addr len1-c-addr len2) もしlen1がゼロより大きければ、len2は、c−addr len1により 指定される文字列の終わりの空間の数(ASCII20h)の数よりlen1小さい ものに等しい。もし、len1がゼロであるかまたは文字列全体がスペースから なっていれば、len2はゼロである。 F9 7B MINUSZEROS (c-addr len1-c-addr len2) もしlen1がゼロよりも大きければ、len2は、c−addr len1によ り指定される文字列の終わりのヌル(ASCII0h)の数よりlen1だけ小さ いものに等しい。もしlen1がゼロであるかまたは列全体がヌルからなってい れば、len2はゼロである。 F9 7C STORECOUNT (char c-addr-) 番号charをc−addrのバイトにストアする。もしcharが255より も大きければ、STRING T00 LARGE例外コードを発生する。 1.8.2 TLVバッファアクセス F9 80 TLV (num−c-addr len fmt) タグがnumであるTLVについてのアクセスパラメータを返す。これによって UNDEFINED TLV例外コードが発生するであろう。 F9 81 TLVFETCH (c-addr1len1 fmt-num|c-addr2len2) fmtの下位8ビットであるTYPEフィールドにしたがって、内部TLVバッ ファの内容を返す。タイプコード0および2はスタック上の番号を返し、一方他 のものは文字列ポインタを返す。タイプコード3フィールドにより返されるアド レスは一時的なものであり、すぐにより永久的なロケーションに移されなければ ならない。文字列について返されるlen2はバッファ内に最後にストアされた ものと同一である。 F9 82 TLVSTORE (num c-addr2len2 fmt|c-addr1len1 c-addr2len2 fmt-) fmtの下位8ビットであるTYPEフィールドにより内部TLVバッファの内 容を設定する。タイプコード0および2はスタック上の番号を取り、一方他のも のは文字列ポインタを取る。この動作は、このTLVに対する構文解析ステータ スビットをセットするであろう。 F9 83 TLVBITFETCH (c-addr-flag) c−addrのシーケンスによって参照された内部TLVバッファの内容をその ロケーションの値フィールドでマスクした結果を返す。これによって、UNDE FINED TLV例外コードが発生されるであろう。もしマスクにおいて定義 されたビットがすべて内部バッファ内でオンであれば、flagはTRUEが返 されるであろう。そうでなければ、FALSEが返される。2つのロケーション のうち短い方によりカバーされるバイトのみが調べられる。 F9 84 TLVBITSTORE (flag c-addr-) c−addrのシーケンスにより参照される内部TLVバッファの内容をそのロ ケーションの値フィールドに基づいて設定する。もしflagがFALSE(0 )であれば、そこで定義されるビットはすべてオフされる。そうでなければ、す べてオンされる。 1.8.3 TLV処理 F9 85 PARSETLV (c-addr len-) TLVシーケンスについてc−addrのlenバイトを処理する。これによっ てUNDEFINED TLV例外コードが発生されるであろう。見出される各 タグフィールドはその値フィールドの長さフィールドバイトをその内部バッファ 内に置き、その構文解析ステータスビットをセットするであろう。コンストラク トされたタグフィールドに出会ったときは、それに関連付けされていると定義さ れている内部TLVバッファはすべて、TLVシーケンスに対し値フィールドが 構文解析されるまで、クリアされる。TLVが関連付けされていると定義されて いないコンストラクトされたテンプレート内でそのTLVに出会ったのであれば 、例外は発生されない。 F9 86 PLUSDOL (c-addr1len1 c-addr21en2-c-addr2len3) タグフィールドおよび長さフィールドについてのc−addr1のlen1バイト を処理する。これによってUNDEFINED TLV例外コードが発生される であろう。見出される各タグフィールドは、その内部バッファからの長さフィー ルドバイトを、c−addr2のlen2バイトの出力列の終わりの、値フィール ド内に置くであろう。行先文字列(c−addr2)の先頭と2つの長さの合計 (1en3)とを返す。出力文字列の終わりに両文字列を保持するための空間が なければならない。 F9 87 PLUSTLV (c-addr len1 num-c-addr len2) そのタグがnumであるTLVシーケンスをc−addrのlen1バイトの出 力文字列の終わりに追加する。これによってUNDEFINED TLV例外コ ードが発生されるであろう。タグフィールド、長さフィールドおよび値フィール ドは、TLVの内部バッファ内のデータに基づいてTLV規則によりフォーマッ トされる。行先文字列(c−addr)の先頭と2つの長さの合計(1en2) とを返す。出力文字列の終わりに両文字列を保持するための空間がなければなら ない。 F9 89 TLVSTATUS (fmt-num char) TLVアクセスパラメータの状態fmtをデコードする。返されるnumはフォ ーマットインジケータ0−であり、返されるchar内のビットは以下の意味を 有する。ただしビット0は最下位ビットである。 1.8.4 TLVシーケンスアクセス F9 8A STOREBCD (u c-addr len-) 番号uを2進化10進シーケンスとしてc−addrのlenバイトの文字列内 にストアする。この番号は出力文字列において各デジットが4ビットのニブルを 表わすようにフォーマットされる。必要であれば初めのニブルを0で埋めてもよ い。もしlenがすべてのデジットを保持するのに十分な長さでなければ、番号 の最上位部分が切捨てられるであろう。 F9 8B FETCHBCD (c-addr len-u) c−addrのlenバイトの2進化10進シーケンスから番号uをフェッチす る。この番号は入力文字列において各デジットが4ビットのニブルを表わすよう フォーマットされる。もし有効なBCDデジットではないニブルがあれば、DI GIT TOO LARGE例外が出力される。 F9 8C STOREBN (u c-addr len-) c−addrのlenバイトの文字列に番号uが2進数としてストアされる。こ の番号の最上位バイトは初めにストアされる。必要であれば最初のバイトは0で 埋められるであろう。もしlenがずべてのバイトを保持するだけの十分な長さ でなければ、この番号の最上位部分が切捨てられるであろう。 F9 8D FETCHBN (c-addr len-u) c−addrのlenバイトの文字列から番号uを2進数としてフェッチする。 番号の最上位バイトが初めにフェッチされる。もしそのロケーションに4バイト より多くのデータがあれば、最上位バイトは失われるであろう。 F9 8E STORECN (c-addr1len1 c-addr2len2-) c−addr1のlen1バイトの番号をc−addr2のlen2バイトの列に圧 縮番号としてストアする。この番号は出力文字列において各文字が4ビットのニ ブルを表わすようにフォーマットされる。必要であれば終わりのニブルがFで埋 められるであろう。もし、len2がすべての文字を保持ずろのに十分な長さで なければ(len2<[len1+1]/2)、番号は切捨てられる。入力文字列 内の文字が番号でなければ、DIGIT TOO LARGE例外コードが発生 されるであろう。 F9 8F FETCHCN (c-addr1len1-C-addr2len2) c−addr1のlen1バイトの列内の圧縮番号を表わすc−addr2のle n2バイトの一次ロケーションに文字列をフェッチする。番号は、出力文字列の 各文字が入力文字列の4ビットニブルを表わすようフォーマットされる。全ビッ トがセットされたニブルまたは文字列の終わりに遭遇すると、出力文字列は終了 されるであろう。もし入力文字列内のニブルが番号でなければ、DIGIT T OO LARGE例外コードが発生されるであろう。出力文字列はすぐにより永 久的なロケーションに移動させられなければならない。 F9 90 TLVFETCHNAME (c-addr1-c-addr2 num) タグフィールドについて、c−addr1のTLVシーケンスを構文解析する。 タグフィールドを渡されたアドレスc−addr2およびタグフィールドのnu mを返す。 F9 91 TLVFETCHLENGTH (c-addr1-c-addr2len) 長さフィールドについてc−addr1のTLVシーケンスを構文解析する。長 さフィールドを渡されたアドレスc−addr2およびそのフィールド内に含ま れるlenを返す。 1.9 モジュールの処理 以下のトークンは、仮想マシン内のEPIコードの記億および実行を扱う。 F9 A0 EXECUTEMODULE (c-addr len-flag) c−addr lenにより指定されるAIDを使用してモジュールディレクト リからモジュールをロードする。もし誤りが発生したら、例外CANNOT L OAD MODULEが発生される。もしモジュールが発見されなければfla gはTRUEであり、FALSEは「ロードの成功」である。 F9 A1 INITMODULEBUFFER (-) 新しいモジュールの取得を準備する。 F9 A2 MODULEBUFFERAPPEND (c-addr len-) c−addrおよびlenにより定義されるバッファの内容をモジュール取得バ ッファに追加する。もしモジュールバッファがまだ準備されていなければ、また はもしモジュールバッファの容量を超えていれば、例外CANNOT ADD TO MODULEが発生される。 F9 A3 REGISTERMODULE (c-addr len-) c−addr lenにより指定される所与のEPIコードAIDによりモジュ ールディレクトリ内にモジュールバッファを登録する。モジュールバッファの管 理に関連付けられたリソースは自動的に解放される。 F9 A4 RELEASEMODULEBUFFER (-) 内部モジュールバッファにより使用されるリソースを解放する。モジュールのロ ードが早すぎたときにモジュールディレクトリ内にモジュールを登録せずにアプ リケーションによってモジュールのロードを終了しなければならないときこれが 必要となる。 F9 A5 DELETEMODULE (c-addr len-flag) そのAIDがモジュールディレクトリからのc−addr lenにより指定さ れるモジュールを削除する。もし操作が成功であればflagはゼロである。 F9 A6 MODULEINFO (c-addr1len1-c-addr2len2 f1ag) c−addr1len1により指定されるAIDに基づきモジュールディレクトリ 内に登録されるモジュール上の「公開」情報を返す。もし動作が成功でありc− addr1のデータが有効であればflagはゼロである。このトークンにより 返されるバッファの構造は、モジュールのヘッダ情報により定義される。この関 数によってはエントリEPF VERからEPF ENTRYまでのみが返され る。 F9 A7 LOADCARDMODULE (a-addr-) a−addrのモジュールをロードする。a−addrは、カードから内部記憶 装置に送られたEPIコードモジュールのヘッダのアドレスである。もしモジュ ールがカードモジュールローディングについての何らかの前提条件に違反すると 、例外BAD_CARD_MODULEが発生される。 F9 A8 MODULESCHANGED (-u) モジュールが変化したか否かを示す値uを返す。ビット0から7は、このトーク ンが最後に実行されてから、モジュールディレクトリの中にどのモジュールクラ スが登録されたかを定義する。たとえば、初期AIDバイトをF4として登録さ れたモジュールはリターンステータスのビット4をセットするであろう。ビット 8から31は将来の拡張のため予約される。 1.10 拡張可能なメモリの処理 以下のトークンは、仮想マシンに設けられこれによって管理されるデータ空間内 の線形メモリの拡張可能な「ゴムバンド」バッファへのアクセスを提供する。 F9 BO EXTEND (len-a-addr) lenセルだけ「ゴムバンド」バッファを拡張し、割当られたバッファ内の第1 のセルのセル整列されたアドレスa−addrを返す。ZERO EXTEND は次の割当られていないセルへのポインタを返す。利用可能なメモリが十分にな いときには、OUT_OF_MEMORY例外が発生される。 F9 B1 BEXTEND (len-c-addr) lenバイトだけ「ゴムバンド」バッファを拡張し、割当られたバッファ内の第 1のバイトのアドレスc−addrを返す。ZERO BEXTENDは次の割 当られていないバイトへのポインタを返す。利用可能なメモリが十分にないとき には、OUT_OF_MEMORY例外が発生される。 F9 B2 RELEASE (addr-) EXTENDまたはBEXTENDによって獲得されたストレージを解放し、a ddrへの「フリーポインタ」をセットする。もしaddrが無効であれば(ゴ ムバンドバッファの始まりの前、または現在の「フリーポインタ」を超えていれ ば)、ANS例外−9(無効メモリアドレス)が発生される。 さらなるトークンは以下を含む。 F9 B0 DSCHECK (u−flag) データスタック上に少なくともu個のデータセルが残っていることを調 べる。もしそうであればFALSEを返し、そうでなければTRUEを 返す。 F9 B1 RSCHECK (u−flag) リターンスタック上に少なくともu個のデータセルが残っていることを 調べる。もしそうであればFALSEを返し、そうでなければTRUE を返す。 1.11 セキュリティコマンド セキュリティアルゴリズムの処理は、いくつかの端末においては数秒間かかるで あろう。この発明は、現在の単一のSECALGOコマンドをマルチタスク実装 での使用を容易にするため、開始部分および完了部分に分解することを含む。こ れについては研究中であり、以下の提案がSECALGOの代替案として示され る。 F9 56 SECALGOBEGIN (c-addr1len c-addr2 num-f1ag) これはnum型のアルゴリズムを使用して計算を行なう。c−addr 1は計算のための入力データバッファであり、lenはその長さである 。c−addr2は結果の記憶のための出力バッファである。この関数 は、もし計算が成功裡に開始されたのであればFALSEを示すfla gを返す。 F9 57 SECALGOEND (−ior) この関数は、0=成功裡に完了した計算、−1=まだ進行中の計算、1 =失敗した計算を示す、iorを返す。 例外コード このセクションは、標準的例外処理関数THROWへの引数として使用されるす べてのコードを含む。 次の表は、EPICカーネルにおいて使用されるANS Forthコードを 示す。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(GH,KE,LS,MW,S D,SZ,UG,ZW),EA(AM,AZ,BY,KG ,KZ,MD,RU,TJ,TM),AL,AM,AT ,AU,AZ,BA,BB,BG,BR,BY,CA, CH,CN,CU,CZ,DE,DK,EE,ES,F I,GB,GE,GH,HU,IL,IS,JP,KE ,KG,KP,KR,KZ,LC,LK,LR,LS, LT,LU,LV,MD,MG,MK,MN,MW,M X,NO,NZ,PL,PT,RO,RU,SD,SE ,SG,SI,SK,TJ,TM,TR,TT,UA, UG,US,UZ,VN,YU,ZW 【要約の続き】 プリタとして使用し、メモリを割当て、解除し、そして アプリケーションプログラム内にメモリの量の表示を含 み、これはずなわち、プログラムが常にうまく実行され るかまたは全く実行されないということ、そしてセキュ リティ管理機能が最小限に抑えられそれによって動作速 度が向上するということを意味するのだが、そして、ア プリケーションプログラムおよびデータベースにデータ をインポートしデータをエクスポートする安全な方策を 提供することにより、この着想が達成される。

Claims (1)

  1. 【特許請求の範囲】 1.第1の装置と第2の装置との間でのトランザクションを実行するためのトラ ンザクション管理システムであって、前記第1の装置および前記第2の装置は相 互間での通信のために適合され、前記第1および第2の装置の少なくとも1つは 集積回路カードであり、前記システムは、 少なくとも1つの入出力装置と、 前記第1の装置上でコンピュータプログラムを解釈するための移植可能な仮想 マシンとを含み、前記仮想マシンは、前記少なくとも1つの入出力装置用のドラ イバと仮想マイクロプロセッサとを含み、前記システムはさらに、 前記解釈されたプログラムに応答する、前記プログラムを実行するための実行 手段を含むトランザクション管理システム。 2.第1の装置および第2の装置の少なくとも1つが集積回路カードであり、前 記第2の装置とのトランザクションを実行するための前記第1の装置を含む端末 であって、 前記第1の装置上でコンピュータプログラムを解釈する移植可能な仮想マシン を含み、前記移植可能な仮想マシンは、少なくとも1つの入出力装置用のドライ バと仮想マイクロプロセッサとを含み、前記端末はさらに、 前記プログラムを実行するための、前記解釈されたプログラムに応答する実行 手段を含む、端末。 3.第1の装置を含む自立型移植可能インテリジェントカードであって、前記第 1の装置は第2の装置とのトランザクションを実行するためのものであり、前記 インテリジェントカードは、 少なくとも1つの入出力装置用のドライバと仮想マイクロプロセッサとを含む 移植可能な仮想マシンを含む、インテリジェントカード。 4.前記仮想マシンの機械命令は1組のトークンであって、前記トークンはカス タマイズされたバイトコードである、請求項1に記載のシステムまたは請求項2 に記載の端末または請求項3に記載のインテリジェントカード。 5.前記インテリジェントカード上にストアされるコンピュータプログラムをさ らに含み、前記仮想マシンは前記コンピュータプログラムを解釈し、前記プログ ラムを実行するための前記解釈されたプログラムに応答する実行手段をさらに含 む、請求項3または4に記載のインテリジェントカード。 6.前記コンピュータプログラムは前記1組のトークンから選択されるトークン のストリームおよび対応するインラインデータとして書かれる、請求項4に記載 のシステムもしくは端末または請求項5に記載のインテリジェントカード。 7.前記トークンのストリームはモジュールでトランスポートされ、モジュール はモジュールの実行のために必要とされる対応するインラインデータとともにト ークンのストリームを含む、請求項6に記載のシステムまたは端末またはインテ リジェントカード。 8.前記モジュールはまた前記モジュールの実行のためのメモリ要件の表示を含 む、請求項7に記載のシステムまたは端末またはインテリジェントカード。 9.仮想マシンはまた、前記モジュールをロードしその中のトークンを解釈する ための手段を含む、請求項8に記載のシステムまたは端末またはインテリジェン トカード。 10.前記トークンをロードし解釈するための手段は、前記モジュール内の前記 トークンを読出し、もし前記組に属さないトークンが読出されたのであれば例外 が出力される、請求項9に記載のシステムまたは端末またはインテリジェントカ ード。 11.前記仮想マシンは少なくとも前記モジュールに対するリポジトリを有する 読出/書込可能な論理アドレス空間を含み、前記モジュールは、その実行のため に必要とされる読出/書込可能な論理アドレス空間の量の表示を含み、 前記仮想マシンはまた前記モジュールのロードに際し、前記表示によって読出 /書込可能な論理アドレス空間の量を割当てるための手段を含み、前記割当てら れた読出/書込可能な論理アドレス空間は定義されかつ保護された境界を有する 、請求項7から10のいずれかに記載のシステムまたは端末またはインテリジェ ントカード。 12.前記モジュールの終了に際して読出/書込可能な論理アドレス空間の前記 割当てられた量の割当てを解除するための手段をさらに含む、請求項11に記載 のシステムまたは端末またはインテリジェントカード。 13.前記第2の装置は、前記コンピュータプログラムの実行時間動作を少なく とも変更することができる少なくとも1つのプログラム命令を与えるための手段 を含み、前記ロードおよび解釈のための手段が前記モジュールをロードし終わっ た後、および、前記モジュールが実行中に、前記ロードおよび解釈のための手段 は、予め定義されたセキュリティ条件に依存して前記少なくとも1つのプログラ ム命令をロードしかつ解釈し、 前記命令手段は、前記仮想マシンにより解釈された前記ロードされたプログラ ム命令に応答しかつ前記変更された動作で前記コンピュータプログラムを実行す る、請求項9から12のいずれかに記載のシステムまたは端末またはインテリジ ェントカード。 14.前記セキュリティ条件は関数によって与えられる、請求項13に記載のシ ステムまたは端末またはインテリジェントカード。 15.少なくとも1つのレコードを含む少なくとも1つのデータベースを含む読 出/書込可能な論理アドレス空間をさらに含み、前記モジュールは前記モジュー ルの実行のために必要な初期化されていない読出/書込可能な論理アドレス空間 の量の表示を含み、 前記ローダは前記表示により、必要とされる初期化されていない論理アドレス 空間の量を割当て、さらに、 前記データベース内のレコードにアクセスするための手段を含み、前記データ ベース内の前記レコードは前記モジュールを通じてのみアクセスが可能であり、 前記アクセスするための手段は、前記データベースの現在のレコード上にウィン ドウを与え、かつ前記アプリケーションプログラムによってアドレス指定可能な 前記初期化されていない読出/書込可能な論理アドレス空間の部分に前記レコー ドをコピーする、請求項9から14のいずれかに記載のシステムまたは端末また はインテリジェントカード。 16.トランザクション管理システムであって、 第1の装置および第2の装置を含み、前記第1および第2の装置は相互間での 通信のために適合され、前記第1および第2の装置の少なくとも1つは集積回路 カードであり、 前記第2の装置は、前記第1の装置上のコンピュータプログラムの実行時間動 作を少なくとも変更することができる少なくとも1つのプログラム命令を提供す るための手段を含み、 前記第1の装置は仮想マシンを含み、前記仮想マシンは前記コンピュータプロ グラムをロードしかつ解釈するための手段を含み、前記ロードしかつ解釈するた めの手段はさらに、前記ロードしかつ解釈するための手段が前記コンピュータプ ログラムをロードした後および前記コンピュータプログラムが実行中に、予め定 義されたセキュリティ条件に依存して前記少なくとも1つのプログラム命令をロ ードしかつ解釈するよう適合され、前記システムはさらに、 前記ロードされかつ解釈されたプログラム命令に応答して前記変更された動作 によって前記ロードされかつ解釈されたコンピュータプログラムを実行するため の実行手段を含む、トランザクション管理システム。 17.第1の装置および第2の装置の少なくとも1つが集積回路カードであり、 前記第2の装置は前記第1の装置上のコンピュータプログラムの実行時間動作を 少なくとも変更することができる少なくとも1つのプログラム命令を提供するた めの手段を含む、前記第2の装置とのトランザクションを実行するための第1の 装置を含む端末であって、前記端末は、 仮想マシンを含む前記第1の装置を含み、前記仮想マシンは前記コンピュータ プログラムをロードしかつ解釈するための手段を含み、前記ロードしかつ解釈す るための手段はさらに、前記ロードしかつ解釈するための手段が前記コンピュー タプログラムをロードした後および前記コンピュータプログラムが実行中に、予 め定義されたセキュリティ条件に依存して前記少なくとも1つのプログラム命令 をロードしかつ解釈するよう適合され、前記端末はさらに、 前記ロードされかつ解釈されたプログラム命令に応答して前記変更された動作 によって前記ロードされかつ解釈されたコンピュータプログラムを実行するため の実行手段を含む、端末。 18.第2の装置とのトランザクションを実行するための第1の装置を含み、前 記第2の装置は前記第1の装置上のコンピュータプログラムの実行時間動作を少 なくとも変更することができる少なくとも1つのプログラム命令を提供するため の手段を含む、自立型移植可能インテリジェントカードであって、前記インテリ ジェントカードは、 仮想マシンを含む前記第1の装置を含み、前記仮想マシンは前記コンピュータ プログラムをロードしかつ解釈するための手段を含み、前記ロードしかつ解釈す るための手段はさらに、前記ロードしかつ解釈するための手段が前記コンピュー タプログラムをロードした後および前記コンピュータプログラムが実行中に、予 め定義されたセキュリティ条件に依存して前記少なくとも1つのプログラム命令 をロードしかつ解釈するよう適合され、前記インテリジェントカードはさらに、 前記ロードされかつ解釈されたプログラム命令に応答して前記変更された動作 によって前記ロードされかつ解釈されたコンピュータプログラムを実行するため の実行手段を含む、インテリジェントカード。 19.前記セキュリティ条件は関数によって与えられる、請求項16に記載のシ ステムまたは請求項17に記載の端末または請求項18に記載のインテリジェン トカード。 20.前記少なくとも1つのプログラム命令は第1のプログラム命令であり、前 記第1の装置は前記コンピュータプログラムの実行時間動作を少なくとも変更す ることができる第2のプログラム命令を含み、前記第1のプログラム命令は前記 第2のプログラム命令への参照を含み、 前記ロードしかつ解釈するための手段は、前記参照に応答して、前記第2のプ ログラム命令をロードし、前記実行手段は前記第2のプログラム命令により決定 される前記変更された動作によって前記コンピュータプログラムを実行する、請 求項19に記載のシステムまたは端末またはインテリジェントカード。 21.前記コンピュータプログラムならびに前記第1および第2のプログラム命 令は、トークンのストリームおよび対応するインラインデータとして書かれ、各 トークンは1組のカスタマイズされたバイトコードから選択されるカスタマイズ されたバイトコードである、請求項20に記載のシステムまたは端末またはイン テリジェントカード。 22.前記仮想マシンは、前記第1および第2のプログラム命令の前記トークン のストリームおよび前記インラインデータを、前記コンピュータプログラムの前 記トークンのストリームにベクター化する、請求項21に記載のシステムまたは 端末またはインテリジェントカード。 23.前記コンピュータプログラムの少なくともトークンのストリームおよび少 なくとも前記第2のプログラム命令は各々モジュールでトランスポートされ、各 モジュールは前記モジュールの実行のために必要とされる対応するインラインデ ータとともに関連するトークンのストリームを含む、請求項21または22に記 載のシステムまたは端末またはインテリジェントカード。 24.前記モジュールはまた、前記モジュールの実行のために必要とされるメモ リの表示を含む、請求項23に記載のシステムまたは端末またはインテリジェン トカード。 25.前記コンピュータプログラムのモジュールはまた、少なくとも1つの変更 可能なソケットの排他的リストを含み、前記少なくとも1つのソケットは、前記 仮想マシンが前記第1のプログラム命令をそこへ向けてベクター化する、前記コ ンピュータプログラムのトークンのストリームおよびインラインデータ内の位置 を定義する、請求項23または24に記載のシステムまたは端末またはインテリ ジェントカード。 26.前記コンピュータプログラムモジュール内の前記少なくとも1つの変更可 能なソケットは、デフォルト動作への実行ベクターを含む、請求項25に記載の システムまたは端末またはインテリジェントカード。 27.前記実行手段は、もし前記予め定義されたセキュリティ条件が前記少なく とも1つのプログラム命令のロードを可能にしないならば、前記デフォルト動作 で前記コンピュータプログラムを実行する、請求項26に記載のシステムまたは 端末またはインテリジェントカード。 28.前記仮想マシンは、読出/書込可能論理アドレス空間を含み、前記モジュ ールはその実行のために必要とされる読出/書込可能論理アドレス空間の量の表 示を含み、 前記仮想マシンはまた、前記コンピュータプログラムモジュールのロードに際 して、前記表示により、読出/書込可能な論理アドレス空間の量を割当てるため の手段を含み、前記割当てられた読出/書込可能な論理アドレス空間は定義され かつ保護される境界を有し、前記仮想マシンはさらに、 前記コンピュータプログラムモジュールの終了の際に前記読出/書込可能な論 理アドレス空間の量の割当てを解除するための手段を含む、請求項23から27 のいずれかに記載のシステムまたは端末またはインテリジェントカード。 29.複数のレコードを含む少なくとも1つのデータベースを含む読出/書込可 能な論理アドレス空間をさらに含み、前記モジュールは前記モジュールの実行の ために必要な初期化されていない読出/書込可能な論理アドレス空間の量の表示 を含み、 前記ロードするための手段は、前記表示により、初期化されていない論理アド レス空間の必要とされる量を割当て、 さらに、 前記データベース内のレコードにアクセスするための手段を含み、前記データ ベース内のレコードは前記モジュールを通じてのみアクセス可能であり、前記ア クセスするための手段は、前記データベースのカレントレコードにウィンドウを 提供しかつ前記アプリケーションプログラムによってアドレス指定可能な前記初 期化されていない読出/書込可能な論理アドレス空間の部分に前記レコードをコ ピーする、請求項23から28のいずれかに記載のシステムまたは端末またはイ ンテリジェントカード。 30.前記セキュリティ条件は前記第2の装置上のデータおよびプログラム命令 の少なくとも原点および完全性を確認するための手段を含む、請求項16から2 7のいずれかに記載のシステムまたは端末またはインテリジェントカード。 31.第1の装置と第2の装置との間でのトランザクションを実行するためのト ランザクションシステムであって、前記システムは、そこに与えられる1組のカ スタマイズされたバイトコードトークンを解釈するための仮想マシンを含み、 前記仮想マシンは、仮想プロセシングユニットおよび読出/書込可能な論理ア ドレス空間を含み、 少なくとも1つの第1のアプリケーションプログラムはその実行のために必要 とされる読出/書込可能な論理アドレス空間の量の表示を含み、前記少なくとも 1つの第1のアプリケーションプログラムは前記1組のトークンから選択される トークンのストリームおよび対応するインラインデータとして書込まれ、 前記仮想マシンはさらに、 前記少なくとも1つの第1のアプリケーションプログラムをロードするための ローダと、 前記表示により、特に、前記少なくとも1つの第1のアプリケーションプログ ラムのために読出/書込可能な論理アドレス空間の第1の量を割当てるための手 段とを含み、前記割当てられた読出/書込可能な論理アドレス空間は定義されか つ保護された境界を有する、トランザクションシステム。 32.第2の装置とのトランザクションを実行するための第1の装置を含む端末 であって、前記第1の装置は、そこに与えられる1組のカスタマイズされたバイ トコードトークンを解釈するための仮想マシンを含み、 前記仮想マシンは、仮想プロセシングユニットおよび読出/書込可能な論理ア ドレス空間を含み、 少なくとも1つの第1のアプリケーションプログラムはその実行のために必要 とされる読出/書込可能な論理アドレス空間の量の表示を含み、前記少なくとも 1つの第1のアプリケーションプログラムは前記1組のトークンから選択される トークンのストリームおよび対応するインラインデータとして書かれ、 前記仮想マシンはさらに、 前記少なくとも1つの第1のアプリケーションプログラムをロードするための ローダと、 前記表示により、特に、前記少なくとも1つの第1のアプリケーションプログ ラムのために読出/書込可能な論理アドレス空間の第1の量を割当てるための手 段とを含み、前記割当てられた読出/書込可能な論理アドレス空間は定義されか つ保護された境界を有する、端末。 33.第2の装置とのトランザクションを実行するための第1の装置を含む自立 型移植可能インテリジェントカードであって、前記第1の装置は、そこに与えら れる1組のカスタマイズされたバイトコードトークンを解釈するための仮想マシ ンを含み、 前記仮想マシンは、仮想プロセシングユニットおよび読出/書込可能な論理ア ドレス空間を含み、 少なくとも1つの第1のアプリケーションプログラムはその実行のために必要 とされる読出/書込可能な論理アドレス空間の量の表示を含み、前記少なくとも 1つの第1のアプリケーションプログラムは前記1組のトークンから選択される トークンのストリームおよび対応するインラインデータとして書かれ、 前記仮想マシンはさらに、 前記少なくとも1つの第1のアプリケーションプログラムをロードするための ローダと、 前記表示により、特に、前記少なくとも1つの第1のアプリケーションプログ ラムのために読出/書込可能な論理アドレス空間の第1の量を割当てるための手 段とを含み、前記割当てられた読出/書込可能な論理アドレス空間は定義されか つ保護された境界を有する、インテリジェントカード。 34.前記少なくとも1つのプログラムの終了に際して読出/書込可能な論理ア ドレス空間の前記第1の量を明示的に割当てを解除するための手段をさらに含む 、請求項31に記載のシステムまたは請求項32に記載の端末または請求項33 に記載のインテリジェントカード。 35.第1および第2の装置の少なくとも1つはICCである、請求項31から 34のいずれかに記載のシステムまたは端末またはインテリジェントカード。 36.前記第1のアプリケーションプログラムはまた、他のアプリケーションプ ログラムにエクスポートすることができる少なくとも1つの関数の第1の排他的 リストを含み、前記少なくとも1つの関数を他のプログラムに対して利用可能に するための手段をさらに含む、請求項31から35のいずれかに記載のシステム または端末またはインテリジェントカード。 37.前記第1のアプリケーションプログラムは第1のモジュールであり、前記 他のアプリケーションプログラムは他のモジュールであり、各モジュールは、前 記1組のトークンから選択されるトークンのストリームと、対応するインライン データと、エクスポートされるべき少なくとも1つの関数の第1の排他的リスト と、モジュールの実行のために必要とされる読出/書込可能な論理アドレス空間 の量の表示とを少なくとも含む、請求項31から36のいずれかに記載のシステ ムまたは端末またはインテリジェントカード。 38.前記第1のモジュールは、そこから少なくとも1つの関数がインポートさ れる少なくとも1つの第2のモジュールを識別する第2の排他的リストを含み、 前記ローダは前記第1のモジュールのロードに際して前記第2のリストにより前 記少なくとも第2のモジュールをロードする、請求項37に記載のシステムまた は端末。 39.前記第1のモジュールは、インポートされるべき前記少なくとも1つの第 2のモジュールが成功裡にロードしなかったのであれば、終了させられる、請求 項38に記載のシステムまたは端末またはインテリジェントカード。 40.前記割当てるための手段は、前記第1のモジュールのロードに際して、読 出/書込可能な論理アドレス空間の前記第1の量を割当て、さらに、単一の拡張 可能なバッファ内の第1のアドレスから始まる、読出/書込可能な論理アドレス 空間の第2のまたはさらなる量のみを前記第1のモジュールに対して割当て、 前記第1のモジュールによる読出/書込可能な論理アドレス空間の前記第2の 量の解放に際しては、前記割当てを解除するための手段は読出/書込可能な論理 アドレス空間の前記第2の量および前記第1のアドレスを超えるすべてのさらな る割当てを割当て解除する、請求項37から39のいずれかに記載のシステムま たは端末またはインテリジェントカード。 41.前記割当てを解除するための手段は、前記第1のモジュールの終了に際し て、読出/書込可能な論理アドレスの前記第2の量および前記第1のアドレスを 超えるすべてのさらなる割当てを割当て解除する、請求項40に記載のシステム または端末またはインテリジェントカード。 42.前記読出/書込可能な論理アドレス空間は、少なくとも1つのレコードを 含む少なくとも1つのデータベースを含み、前記モジュールは、前記モジュール の実行のために必要な初期化されていない読出/書込可能な論理アドレス空間の 量の表示を含み、前記データベース内のレコードは前記モジュールを通じてのみ アクセス可能であり、 前記ローダは前記表示により、初期化されていない論理アドレス空間の必要と される量を割当て、 さらに、 前記データベース内のレコードにアクセスするための手段を含み、前記アクセ スするための手段は、前記データベースのカレントレコードにウィンドウを提供 し、前記初期化されていない読出/書込可能な論理アドレス空間の前記アプリケ ーションプログラムによりアドレス指定可能な部分に前記レコードをコピーする 、請求項37から41のいずれかに記載のシステムまたは端末またはインテリジ ェントカード。 43.前記割当てを解除するための手段は、前記第1のモジュールの終了に際し て、任意の量の割当てられた読出/書込可能な論理アドレス空間を消去する、請 求項34から42のいずれかに記載のシステムまたは端末またはインテリジェン トカード。 44.第1の装置および第2の装置の少なくとも1つが集積回路カードである、 前記第1の装置と前記第2の装置との間でのトランザクションを実行するための トランザクションシステムであって、前記システムは、そこに与えられる1組の カスタマイズされたバイトコードトークンを解釈するための仮想マシンを含み、 前記仮想マシンは、仮想プロセシングユニットと読出/書込可能な論理アドレ ス空間とを含み、 前記仮想マシンによる実行のための少なくとも1つのコンピュータプログラム および少なくとも1つのレコードを含む少なくとも1つのデータベースを含み、 前記コンピュータプログラムは、前記組から選択される前記トークンのストリー ムとして書かれるモジュールであり、かつ、前記モジュールの実行のために必要 な初期化されていない読出/書込可能な論理アドレス空間の量の表示を含み、前 記システムはさらに、 前記モジュールをロードしかつ前記表示により初期化されていない論理アドレ ス空間の必要とされる量を割当てるためのローダと、 前記データベース内のレコードにアクセスするための手段とを含み、前記デー タベース内のレコードは前記モジュールを通じてのみアクセス可能であり、前記 アクセスするための手段は、前記データベースのカレントレコード上にウィンド ウを提供し、前記初期化されていない読出/書込可能な論理アドレス空間内の前 記アプリケーションプログラムによりアドレス指定可能な部分に前記レコードを コピーする、トランザクションシステム。 45.第2の装置とのトランザクションを実行するための第1の装置を含む端末 であって、前記第1および第2装置の少なくとも1つは集積回路カードであり、 前記第1の装置は、そこに与えられる1組のカスタマイズされたバイトコードト ークンを解釈するための仮想マシンを含み、 前記仮想マシンは、仮想プロセシングユニットと読出/書込可能な論理アドレ ス空間とを含み、 さらに、 前記仮想マシンによる実行のための少なくとも1つのコンピュータプログラム および少なくとも1つのレコードを含む少なくとも1つのデータベースを含み、 前記コンピュータプログラムは、前記組から選択されるトークンのストリームと して書かれるモジュールでありかつ、前記モジュールの実行のために必要な初期 化されていない読出/書込可能な論理アドレス空間の量の表示を含み、 さらに、 前記モジュールをロードしかつ、前記表示により初期化されていない論理アド レス空間の必要とされる量を割当てるためのローダと、 前記データベース内のレコードにアクセスするための手段とを含み、前記デー タベース内のレコードは前記モジュールを通じてのみアクセス可能であり、前記 アクセスするための手段は、前記データベースのカレントレコードにウィンドウ を提供し、前記初期化されていない読出/書込可能な論理アドレス空間内の前記 アプリケーションプログラムによりアドレス指定可能な部分に前記レコードをコ ピーする、端末。 46.第2の装置とのトランザクションを実行するための第1の装置を含む自立 型移植可能インテリジェントカードであって、 前記第1の装置は、与えられる1組のカスタマイズされたバイトコードトーク ンを解釈するための仮想マシンを含み、 前記仮想マシンは、仮想プロセシングユニットと読出/書込可能な論理アドレ ス空間とを含み、 さらに、 前記仮想マシンによる実行のための少なくとも1つのコンピュータプログラム および少なくとも1つのレコードを含む少なくとも1つのデータベースを含み、 前記コンピュータプログラムは、前記組から選択されるトークンのストリームと して書かれるモジュールでありかつ、前記モジュールの実行のために必要な初期 化されていない読出/書込可能な論理アドレス空間の量の表示を含み、 さらに、 前記モジュールをロードしかつ、前記表示により初期化されていない論理アド レス空間の必要とされる量を割当てるためのローダと、 前記データベース内のレコードにアクセスするための手段とを含み、前記デー タベース内のレコードは前記モジュールを通じてのみアクセス可能であり、前記 アクセスするための手段は、前記データベースのカレントレコードにウィンドウ を提供し、前記初期化されていない読出/書込可能な論理アドレス空間内の前記 アプリケーションプログラムによりアドレス指定可能な部分に前記レコードをコ ピーする、インテリジェントカード。 47.前記データベースは、前記モジュールの第1のロードに際してインスタン ス生成される、請求項44に記載のシステムまたは請求項45に記載の端末また は請求項46に記載のインテリジェントカード。 48.前記仮想マシンはスタックマシンである、請求項1から47のいずれかに 記載のシステムまたは端末またはインテリジェントカード。 49.前記仮想マシンは少なくとも2スタックマシンであり、第1のスタックが データスタックであり第2のスタックがリターンスタックである、請求項48に 記載のシステムまたは端末またはインテリジェントカード。 50.前記仮想マシンは、局所変数フレームメモリ、メモリ内のフレーム開始を 指すフレームポインタをストアするためのフレームポインタレジスタおよびメモ リ内のフレームの終わりを指すフレーム終了ポインタレジスタを含む、請求項1 から49のいずれかに記載のシステムまたは端末またはインテリジェントカード 。 51.前記データスタックおよびリターンスタックは、前記コンピュータプログ ラムにより直接アドレス指定可能なメモリ内にはなく、トークンにより定義され 前記仮想マシンにより解釈されるスタック操作を通じてのみアクセス可能である 、請求項49または請求項50に記載のシステムまたは端末またはインテリジェ ントカード。 52.前記第1の装置はハンドヘルド装置である、前掲請求項のいずれかに記載 のシステムまたは端末。 53.前記ハンドヘルド装置は集積回路カード(ICC)を含む、請求項52に 記載のシステムまたは端末。 54.前記第2の装置はICCを含む、請求項1から53のいずれかに記載のシ ステムまたは端末。 55.前記第1の装置は端末である請求項1から54のいずれかに記載のシステ ム。 56.前記第1の装置および第2の装置は両方ともICCを含む、請求項1から 55のいずれかに記載のシステムまたは端末またはインテリジェントカード。 57.トランザクションは、 a.前記第1の装置と前記第2の装置との間の通信リンクの作成、 b.前記コンピュータプログラムおよびトランザクションを定義する関連する データの組を含むアプリケーションの選択、 c.前記アプリケーションの実行、および d.トランザクションの終了、 のシーケンスの少なくとも1回の実行を含む、請求項1から56のいずれかに記 載のシステムまたは端末またはインテリジェントカード。 58.トランザクションは金銭取引であり、前記システムは金銭取引管理システ ムである、請求項1から57のいずれかに記載のシステムまたは端末またはイン テリジェントカード。 59.請求項2から58のいずれかに記載の端末または請求項3から58のいず れかに記載のインテリジェントカード内の、請求項1から58のいずれかに記載 のシステム内で実行されるプログラムの動作を変更させることができるプログラ ム命令を含む集積回路カード。 60.第1の装置および第2の装置の少なくとも1つは集積回路カードである、 前記第1の装置と前記第2の装置との間でのトランザクションを実行する方法で あって、 前記第1の装置上のコンピュータプログラムの実行時間動作を少なくとも変更 させることができる、少なくとも1つのプログラム命令を前記第2の装置に提供 するステップと、 前記コンピュータプログラムをロードし解釈するステップと、 前記コンピュータプログラムが実行中に、予め定義されたセキュリティ条件に 依存して前記少なくとも1つのプログラム命令をロードし解釈するステップと、 前記ロードされ解釈されたプログラム命令に応答して前記変更された動作によ って前記ロードされ解釈されたコンピュータプログラムを実行するステップとを 含む、トランザクションを実行する方法。 61.第1の装置と第2の装置との間でのトランザクションを実行する方法であ って、 1組のトークンから選択されたバイトコードトークンのストリームおよび対応 するインラインデータとして書かれた少なくとも1つのアプリケーションプログ ラムを解釈するステップと、 前記少なくとも1つのアプリケーションプログラムをロードするステップと、 その実行のために必要とされる読出/書込可能な論理アドレス空間の量につい ての前記アプリケーションプログラム内に含まれる表示により、前記少なくとも 1つのアプリケーションプログラムに対して特定的に、読出/書込可能な論理ア ドレス空間の第1の量を割当てるステップと、 前記割当てられた読出/書込可能な論理アドレス空間の境界を定義しかつ保護 するステップとを含む、トランザクションを実行する方法。 62.前記少なくとも1つの第1のアプリケーションプログラムの終了に際して 、読出/書込可能な論理アドレス空間の前記第1の量を明示的に割当てを解除す るステップをさらに含む、請求項61に記載のトランザクションを実行する方法 。 63.第1の装置と第2の装置との少なくとも1つが集積回路カードである、前 記第1の装置と前記第2の装置との間でのトランザクションシステムを実行する 方法であって、 1組のトークンから選択された前記トークンのストリームとして書かれるモジ ュール内のトークンを解釈するステップと、 前記モジュールの実行のために必要な初期化されていない読出/書込可能な論 理アドレス空間の量についての前記モジュール内の表示により、初期化されてい ない論理アドレス空間の量を割当てるステップと、 前記データベースのカレントレコードの上へのウィンドウを提供することによ ってデータベース内のレコードにアクセスするステップとを含み、データベース 内のレコードは前記モジュールを通じてのみアクセス可能であり、前記方法はさ らに、 前記初期化されていない読出/書込可能な論理アドレス空間の前記モジュール によりアドレス指定可能な部分に前記レコードをコピーするステップを含む、ト ランザクションを実行する方法。 64.第1の装置と第2の装置との少なくとも1つが集積回路カードである、前 記第1の装置と前記第2の装置との間でのトランザクションを実行する方法であ って、 少なくとも1つの入出力装置用のドライバおよび仮想マイクロプロセッサを含 む移植可能な仮想マシンを設けるステップと、 前記移植可能な仮想マシンを使用して前記第1の装置上のコンピュータプログ ラムを解釈するステップと、 前記解釈されたプログラムに応答して前記プログラムを実行するステップとを 含む、トランザクションを実行する方法。
JP10502361A 1996-06-27 1997-06-26 プログラム可能でインテリジェントなデバイスのための、移植可能な安全なトランザクションシステム Pending JP2000514215A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9613450.7 1996-06-27
GBGB9613450.7A GB9613450D0 (en) 1996-06-27 1996-06-27 Payment system
PCT/EP1997/003355 WO1997050063A2 (en) 1996-06-27 1997-06-26 Portable, secure transaction system for programmable, intelligent devices

Publications (1)

Publication Number Publication Date
JP2000514215A true JP2000514215A (ja) 2000-10-24

Family

ID=10795955

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10502361A Pending JP2000514215A (ja) 1996-06-27 1997-06-26 プログラム可能でインテリジェントなデバイスのための、移植可能な安全なトランザクションシステム

Country Status (22)

Country Link
EP (1) EP0907936A2 (ja)
JP (1) JP2000514215A (ja)
AU (1) AU716558B2 (ja)
BR (1) BR9710009A (ja)
CA (1) CA2257641A1 (ja)
CZ (1) CZ423598A3 (ja)
EA (1) EA001598B1 (ja)
GB (1) GB9613450D0 (ja)
HR (1) HRP970354A2 (ja)
HU (1) HUP0001822A3 (ja)
IL (1) IL127533A0 (ja)
IS (1) IS4925A (ja)
NO (1) NO985803L (ja)
NZ (1) NZ333384A (ja)
PL (1) PL330930A1 (ja)
SI (1) SI9720049A (ja)
SK (1) SK176698A3 (ja)
TR (1) TR199802675T2 (ja)
TW (1) TW355776B (ja)
WO (1) WO1997050063A2 (ja)
YU (1) YU60798A (ja)
ZA (1) ZA975748B (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR9713267A (pt) 1996-10-25 2004-06-15 Schlumberger Systems & Service Cartão de circuito integrado para uso com um terminal, processo para uso com o mesmo, microcontrolador e processo para sua programação
US6934945B1 (en) * 1997-03-14 2005-08-23 Cardsoft, Inc. Method and apparatus for controlling communications
AUPP880199A0 (en) * 1999-02-22 1999-03-18 Chip Application Technologies Limited Integrated pos and internet multi-application system and method of use thereof
US6424950B1 (en) 1999-05-10 2002-07-23 Xerox Corporation Remote feature delivery for output devices
GB2356268B (en) * 1999-11-10 2004-08-18 Mars Inc Value transaction systems
JP2001184472A (ja) * 1999-12-27 2001-07-06 Hitachi Ltd アプリケーションプログラムの供給方法、スマートカード、スクリプト供給方法、端末装置およびアプリケーションプログラムを有する記憶媒体
JP4509291B2 (ja) * 2000-03-30 2010-07-21 大日本印刷株式会社 Icカード、icカードのプログラム更新装置、および、その方法
FR2809852B1 (fr) * 2000-05-30 2002-11-29 Dassault Automatismes Terminal de paiement comprenant une carte memoire non volatile extractible
AT501651B1 (de) * 2000-09-27 2007-02-15 Omnikey Gmbh Elektronisches modul mit einem steckverbinder zu einer übergeordneten recheneinheit
US6824064B2 (en) 2000-12-06 2004-11-30 Mobile-Mind, Inc. Concurrent communication with multiple applications on a smart card
EP1463992A1 (en) * 2002-01-11 2004-10-06 Sierra Wireless, Inc. Host extensible wireless application interface
US8074263B1 (en) 2008-06-30 2011-12-06 United Services Automobile Association Systems and methods for increased security during logging in to web site
TWI546748B (zh) * 2013-01-15 2016-08-21 hong-jian Zhou Portable electronic trading device
EP3435270B1 (de) * 2017-07-27 2020-09-23 Siemens Aktiengesellschaft Vorrichtung und verfahren zum kryptographisch geschützten betrieb einer virtuellen maschine
CN114762296B (zh) 2019-12-16 2023-07-14 华为技术有限公司 一种紧急呼叫方法、装置及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5067072A (en) * 1987-11-06 1991-11-19 Visystems, Inc. Virtual software machine which preprocesses application program to isolate execution dependencies and uses target computer processes to implement the execution dependencies
US5434999A (en) * 1988-11-09 1995-07-18 Bull Cp8 Safeguarded remote loading of service programs by authorizing loading in protected memory zones in a terminal
US5036461A (en) * 1990-05-16 1991-07-30 Elliott John C Two-way authentication system between user's smart card and issuer-specific plug-in application modules in multi-issued transaction device
FR2667171B1 (fr) * 1990-09-25 1994-08-26 Gemplus Card Int Support portable a micro-circuit facilement programmable et procede de programmation de ce micro-circuit.
JP3602857B2 (ja) * 1991-04-23 2004-12-15 株式会社日立製作所 多機種対応型情報処理システム、および、方法
WO1994010657A1 (en) * 1992-10-26 1994-05-11 Intellect Australia Pty. Ltd. Host and user transaction system

Also Published As

Publication number Publication date
HUP0001822A3 (en) 2002-01-28
SI9720049A (sl) 1999-12-31
TR199802675T2 (xx) 1999-04-21
AU3263097A (en) 1998-01-14
EA199900060A1 (ru) 1999-08-26
BR9710009A (pt) 2000-01-18
PL330930A1 (en) 1999-06-07
GB9613450D0 (en) 1996-08-28
EP0907936A2 (en) 1999-04-14
CZ423598A3 (cs) 1999-10-13
TW355776B (en) 1999-04-11
HRP970354A2 (en) 1998-04-30
ZA975748B (en) 1998-07-27
IL127533A0 (en) 1999-10-28
NZ333384A (en) 2001-01-26
NO985803D0 (no) 1998-12-11
WO1997050063A3 (en) 1998-03-26
AU716558B2 (en) 2000-03-02
SK176698A3 (en) 2000-08-14
CA2257641A1 (en) 1997-12-31
IS4925A (is) 1998-12-15
EA001598B1 (ru) 2001-06-25
YU60798A (sh) 1999-09-27
WO1997050063A2 (en) 1997-12-31
HUP0001822A2 (hu) 2000-09-28
NO985803L (no) 1999-02-24

Similar Documents

Publication Publication Date Title
US6880155B2 (en) Token-based linking
US6986132B1 (en) Remote incremental program binary compatibility verification using API definitions
Chen Java card technology for smart cards: architecture and programmer's guide
EP1190316B1 (en) Techniques for permitting access across a context barrier in a small footprint device using global data structures
US6651186B1 (en) Remote incremental program verification using API definitions
KR100688397B1 (ko) 엔트리 포인트 객체를 사용해서 소형 풋프린트 장치의콘텍스트 배리어를 넘어선 액세스를 허용하기 위한 기술
US6883163B1 (en) Populating resource-constrained devices with content verified using API definitions
US6981245B1 (en) Populating binary compatible resource-constrained devices with content verified using API definitions
JP2000514215A (ja) プログラム可能でインテリジェントなデバイスのための、移植可能な安全なトランザクションシステム
AU2617600A (en) Techniques for permitting access across a context barrier on a small footprint device using run time environment privileges
KR20010103746A (ko) 공유 객체 인터페이스들을 사용해서 소형 풋프린트 장치의콘텍스트 배리어를 넘어선 액세스를 허용하기 위한 기술
CA2422634A1 (en) Populating binary compatible resource-constrained devices with content verified using api definitions
MXPA99000076A (en) Portable system of safe transaction for intelligent devices and programab
AU2001290842B2 (en) Remote incremental program binary compatibility verification using API definitions
AU2001289078B2 (en) Method for remote incremental program verification and installation on resource-constrained devices
Markantonakis Java card technology and security
Markantonakis et al. Implementing a Secure Log File Download Manager for the Java Card
AU2004200537A1 (en) Techniques for implementing security on a small footprint device using a context barrier
AU2001289078A1 (en) Method for remote incremental program verification and installation on resource-constrained devices
AU2001290842A1 (en) Remote incremental program binary compatibility verification using API definitions