JP3330979B2 - エミュレータ - Google Patents
エミュレータInfo
- Publication number
- JP3330979B2 JP3330979B2 JP21697092A JP21697092A JP3330979B2 JP 3330979 B2 JP3330979 B2 JP 3330979B2 JP 21697092 A JP21697092 A JP 21697092A JP 21697092 A JP21697092 A JP 21697092A JP 3330979 B2 JP3330979 B2 JP 3330979B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- function
- handy terminal
- emulator
- computer
- 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.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
Description
【0001】この発明は、例えば、「ハンディターミナ
ル」と呼ばれる携帯可能なコンピュータ用のアプリケー
ションプログラム開発に用いて好適なエミュレータに関
する。
ル」と呼ばれる携帯可能なコンピュータ用のアプリケー
ションプログラム開発に用いて好適なエミュレータに関
する。
【0002】
【従来の技術】近年、「ハンディターミナル」と呼ばれ
る携帯可能なコンピュータが各種実用化されている。こ
の種のコンピュータは、ポータブルに構成されており、
携行先で種々のデータ処理が可能になるため、様々な分
野で使用されている。図6は、このようなハンディター
ミナル1の一構成例を示すブロック図である。
る携帯可能なコンピュータが各種実用化されている。こ
の種のコンピュータは、ポータブルに構成されており、
携行先で種々のデータ処理が可能になるため、様々な分
野で使用されている。図6は、このようなハンディター
ミナル1の一構成例を示すブロック図である。
【0003】この図において、1aはハンディターミナ
ル1の各部を制御するCPUである。1bは、CPU1
aの基本的な動作を制御するオペレーティングシステム
プログラム(以下、これをOSと略す)が記憶されるR
OMである。1cは対応業務用のアプリケーションプロ
グラムがロードされると共に、該プログラムのワークエ
リアとして各種レジスタ値が一時記憶されるRAMであ
る。1dは、LCD(液晶表示素子)等から構成される
表示回路であり、内部バスを介してCPU1aから供給
される各種データを表示する。1eはLCD(液晶表示
素子)上に設けられた透明タッチパネル、あるいは本体
パネルに配置されるテンキーやファンクションキー等か
ら構成される操作子であり、それぞれ各操作に応じた操
作子信号を発生する。
ル1の各部を制御するCPUである。1bは、CPU1
aの基本的な動作を制御するオペレーティングシステム
プログラム(以下、これをOSと略す)が記憶されるR
OMである。1cは対応業務用のアプリケーションプロ
グラムがロードされると共に、該プログラムのワークエ
リアとして各種レジスタ値が一時記憶されるRAMであ
る。1dは、LCD(液晶表示素子)等から構成される
表示回路であり、内部バスを介してCPU1aから供給
される各種データを表示する。1eはLCD(液晶表示
素子)上に設けられた透明タッチパネル、あるいは本体
パネルに配置されるテンキーやファンクションキー等か
ら構成される操作子であり、それぞれ各操作に応じた操
作子信号を発生する。
【0004】1fは本体から着脱自在に構成されるメモ
リカードである。このメモリカード1fには、上述した
アプリケーションプログラム、あるいは当該プログラム
によって参照される各種データが記憶される。なお、こ
のメモリカード1fが本体に装着されていない場合に
は、上述したRAM1cの一部をRAMディスクとして
使用し、ここにアプリケーションプログラムや各種デー
タを記憶することも可能である。また、メモリカード1
fに記憶されるデータは、図示されていない上位コンピ
ュータからダウンロードされるものである。1gは、例
えば、モデム等から構成され、シリアルデータ通信を制
御する通信制御回路である。このような構成によるハン
ディターミナル1は、周知のコンピュータと同様に動作
する。つまり、電源投入後にOSが立上がると共に、こ
のOS上で対応業務用のアプリケーションプログラムが
データ処理を実行する。
リカードである。このメモリカード1fには、上述した
アプリケーションプログラム、あるいは当該プログラム
によって参照される各種データが記憶される。なお、こ
のメモリカード1fが本体に装着されていない場合に
は、上述したRAM1cの一部をRAMディスクとして
使用し、ここにアプリケーションプログラムや各種デー
タを記憶することも可能である。また、メモリカード1
fに記憶されるデータは、図示されていない上位コンピ
ュータからダウンロードされるものである。1gは、例
えば、モデム等から構成され、シリアルデータ通信を制
御する通信制御回路である。このような構成によるハン
ディターミナル1は、周知のコンピュータと同様に動作
する。つまり、電源投入後にOSが立上がると共に、こ
のOS上で対応業務用のアプリケーションプログラムが
データ処理を実行する。
【0005】ところで、ハンディターミナル1で動作す
るアプリケーションプログラムは、「C言語」と呼ばれ
る構造化プログラミング言語で記述される場合が多い。
図7は、「C言語」によるプログラム開発手順を示す図
である。この図に示すように、プログラム開発は、コー
ディング、コンパイルおよびリンクの各作業からなり、
実機デバッグを経て当該プログラムの動作が検証され
る。なお、このコーディング、コンパイルおよびリンク
の各作業は、通常、開発マシン(例えば、パーソナルコ
ンピュータ)上で行われる。
るアプリケーションプログラムは、「C言語」と呼ばれ
る構造化プログラミング言語で記述される場合が多い。
図7は、「C言語」によるプログラム開発手順を示す図
である。この図に示すように、プログラム開発は、コー
ディング、コンパイルおよびリンクの各作業からなり、
実機デバッグを経て当該プログラムの動作が検証され
る。なお、このコーディング、コンパイルおよびリンク
の各作業は、通常、開発マシン(例えば、パーソナルコ
ンピュータ)上で行われる。
【0006】コーディングにおいては、予め定められた
システム仕様に基づき、ソースプログラムをC言語で記
述する。このソースプログラムは、ソースファイルsf
として開発マシン上に登録される。ソースファイルsf
は、コンパイラCCの入力ファイルとなる。コンパイラ
CCでは、C言語で記述されたソースプログラムを語彙
解析、構造解析および意味解析し、この結果をリロケー
タブルな中間コードで記述されたオブジェクトプログラ
ムに変換する。このオブジェクトプログラムは、開発マ
シン上でオブジェクトファイルofとして登録される。
システム仕様に基づき、ソースプログラムをC言語で記
述する。このソースプログラムは、ソースファイルsf
として開発マシン上に登録される。ソースファイルsf
は、コンパイラCCの入力ファイルとなる。コンパイラ
CCでは、C言語で記述されたソースプログラムを語彙
解析、構造解析および意味解析し、この結果をリロケー
タブルな中間コードで記述されたオブジェクトプログラ
ムに変換する。このオブジェクトプログラムは、開発マ
シン上でオブジェクトファイルofとして登録される。
【0007】リンカLKでは、オブジェクトファイルo
fに対し、標準関数ライブラリSLと、ターミナル専用
関数ライブラリTLとを結合させ、マシン語で記述され
た実行ファイルEfを生成する。ここで、標準関数ライ
ブラリSLは、C言語において定義される各種の制御関
数ルーチンプログラムから構成されている。また、ター
ミナル専用関数ライブラリTLは、ハンディターミナル
1のハードウェア環境で動作するように定義された専用
プログラム群から構成されるものである。
fに対し、標準関数ライブラリSLと、ターミナル専用
関数ライブラリTLとを結合させ、マシン語で記述され
た実行ファイルEfを生成する。ここで、標準関数ライ
ブラリSLは、C言語において定義される各種の制御関
数ルーチンプログラムから構成されている。また、ター
ミナル専用関数ライブラリTLは、ハンディターミナル
1のハードウェア環境で動作するように定義された専用
プログラム群から構成されるものである。
【0008】すなわち、リンカLKでは、オブジェクト
プログラムにおいてコールされる種々のルーチンプログ
ラムや専用プログラムが上述した各ライブラリSL,T
Lから引用され、これらをオブジェクトプログラムに結
合させる。これにより、リロケータブルな中間コードで
記述されたプログラムが実行形式に変換され、実行ファ
イルEfとして生成される。このようにして生成される
実行形式のアプリケーションプログラムは、絶対アドレ
ス上に展開可能な形態となる。
プログラムにおいてコールされる種々のルーチンプログ
ラムや専用プログラムが上述した各ライブラリSL,T
Lから引用され、これらをオブジェクトプログラムに結
合させる。これにより、リロケータブルな中間コードで
記述されたプログラムが実行形式に変換され、実行ファ
イルEfとして生成される。このようにして生成される
実行形式のアプリケーションプログラムは、絶対アドレ
ス上に展開可能な形態となる。
【0009】次に、実行ファイルEfは、例えば、開発
マシンから前述したメモリカード1fに書き込まれ、該
メモリカード1fを介してCPU1aにダウンロードD
Lされる。これにより、ハンディターミナル1上で実機
デバッグDG1が施される。実機デバッグDG1におい
ては、予め策定された検査項目に従ってアプリケーショ
ンプログラムの動作を検証する。この実機デバッグでバ
グが露見した場合には、ソースプログラムの対応箇所を
修正する。そして、修正されたソースプログラムは、再
びコンパイル、リンク作業を経て実行ファイル化されて
実機デバッグDG1が繰り返される。
マシンから前述したメモリカード1fに書き込まれ、該
メモリカード1fを介してCPU1aにダウンロードD
Lされる。これにより、ハンディターミナル1上で実機
デバッグDG1が施される。実機デバッグDG1におい
ては、予め策定された検査項目に従ってアプリケーショ
ンプログラムの動作を検証する。この実機デバッグでバ
グが露見した場合には、ソースプログラムの対応箇所を
修正する。そして、修正されたソースプログラムは、再
びコンパイル、リンク作業を経て実行ファイル化されて
実機デバッグDG1が繰り返される。
【0010】
【発明が解決しようとする課題】さて、上述したプログ
ラム開発手順においては、ハンディターミナル1上でバ
グが露見する度毎に、当該バグに対応するソースプログ
ラム部分を修正し、これを再度実行ファイル化してハン
ディターミナル1にダウンロードしなければならない。
このため、実機デバッグDG1には多大な工数が費やさ
れ、結果的に開発コスト上昇を招致するという弊害があ
る。
ラム開発手順においては、ハンディターミナル1上でバ
グが露見する度毎に、当該バグに対応するソースプログ
ラム部分を修正し、これを再度実行ファイル化してハン
ディターミナル1にダウンロードしなければならない。
このため、実機デバッグDG1には多大な工数が費やさ
れ、結果的に開発コスト上昇を招致するという弊害があ
る。
【0011】さらに、実機デバッグDG1では、ハンデ
ィターミナル1内部の動作状態を直接的に確認できなか
ったり、目視で確認できない検証項目が多々ある。動作
状態を直接的に確認できないものとしては、例えば、一
定時間内に入力操作されない時に電源を自動的にオフ状
態に設定する「オートパワーオフ機能」等がある。これ
を検証するには、一定時間入力操作せずに待機し、時間
経過後、自動的にパワーオフ状態になることを確認する
ようにしている。
ィターミナル1内部の動作状態を直接的に確認できなか
ったり、目視で確認できない検証項目が多々ある。動作
状態を直接的に確認できないものとしては、例えば、一
定時間内に入力操作されない時に電源を自動的にオフ状
態に設定する「オートパワーオフ機能」等がある。これ
を検証するには、一定時間入力操作せずに待機し、時間
経過後、自動的にパワーオフ状態になることを確認する
ようにしている。
【0012】また、例えば、タッチパネルのキー分割動
作等、その動作状態を直接的に目視チェックできない場
合には、当該タッチパネルの一部あるいは全てについて
入力操作を行い、キー分割が適正になされているか否を
検証する。このように、実機デバッグ作業は、上述した
ダウンロードに関する弊害とあいまってプログラム開発
効率の向上を阻む要因になっている。
作等、その動作状態を直接的に目視チェックできない場
合には、当該タッチパネルの一部あるいは全てについて
入力操作を行い、キー分割が適正になされているか否を
検証する。このように、実機デバッグ作業は、上述した
ダウンロードに関する弊害とあいまってプログラム開発
効率の向上を阻む要因になっている。
【0013】そこで、こうした欠点を解決するには、上
述したコーディング、コンパイル、リンクおよびデバッ
グからなる一連の作業を全て開発マシン上で行い、か
つ、デバッグ作業時には、特に、開発マシン上でハンデ
ィターミナル1の動作状態を全て把握できる形態になる
ことが要求される。これを換言すれば、開発マシン上で
アプリケーションプログラムを実行し、ハンディターミ
ナルの動作をエミュレートできれば、上述した欠点が解
消され、効率良いプログラム開発が可能になる訳であ
る。
述したコーディング、コンパイル、リンクおよびデバッ
グからなる一連の作業を全て開発マシン上で行い、か
つ、デバッグ作業時には、特に、開発マシン上でハンデ
ィターミナル1の動作状態を全て把握できる形態になる
ことが要求される。これを換言すれば、開発マシン上で
アプリケーションプログラムを実行し、ハンディターミ
ナルの動作をエミュレートできれば、上述した欠点が解
消され、効率良いプログラム開発が可能になる訳であ
る。
【0014】しかしながら、ハンディターミナル1と開
発マシンとは、殆どの場合、ハードウェア環境が全く異
なるため、ハンディターミナル1用に作成されたアプリ
ケーションプログラムを開発マシン上で動作させること
ができない。すなわち、ハンディターミナル1用のアプ
リケーションプログラムは、そのハードウェア環境の下
でのみ動作するものである。例えば、該アプリケーショ
ンプログラムにおいて、キー入力待ち状態で他の処理を
実行させる場合、周知の割込み処理を用いることが多
い。この割込み処理では、割込みマスクの設定/解除等
の手続きがCPUおよび周辺ハードウェアの構成に依存
する。
発マシンとは、殆どの場合、ハードウェア環境が全く異
なるため、ハンディターミナル1用に作成されたアプリ
ケーションプログラムを開発マシン上で動作させること
ができない。すなわち、ハンディターミナル1用のアプ
リケーションプログラムは、そのハードウェア環境の下
でのみ動作するものである。例えば、該アプリケーショ
ンプログラムにおいて、キー入力待ち状態で他の処理を
実行させる場合、周知の割込み処理を用いることが多
い。この割込み処理では、割込みマスクの設定/解除等
の手続きがCPUおよび周辺ハードウェアの構成に依存
する。
【0015】したがって、互いにハードウェア環境が相
異するハンディターミナル1と開発マシンとは、この割
込み処理に互換性が無い。このため、開発マシン上でハ
ンディターミナル1の動作をエミュレートする場合に
は、特に、上述した割込み処理による並列処理を採用す
ることができないという問題がある。この発明は上述し
た事情に鑑みてなされたもので、割込み処理を用いるこ
となく、ハンディターミナル1の並列処理を開発マシン
上で実現することができるエミュレータを提供すること
を目的としている。
異するハンディターミナル1と開発マシンとは、この割
込み処理に互換性が無い。このため、開発マシン上でハ
ンディターミナル1の動作をエミュレートする場合に
は、特に、上述した割込み処理による並列処理を採用す
ることができないという問題がある。この発明は上述し
た事情に鑑みてなされたもので、割込み処理を用いるこ
となく、ハンディターミナル1の並列処理を開発マシン
上で実現することができるエミュレータを提供すること
を目的としている。
【0016】
【課題を解決するための手段】この発明は、互いにハー
ドウェア構成が異なるコンピュータの内、いずれか一方
の第1のコンピュータ用に作成したプログラムを、他方
の第2のコンピュータ上で動作可能にするエミュレータ
において、前記プログラムと同一の手順でコールされ、
前記第1のコンピュータのハードウェア構成における各
機能を、前記第2のコンピュータ上で模倣する複数のル
ーチンから形成されるライブラリを参照して、前記第1
のコンピュータ用に作成されたプログラムから前記第2
のコンピュータ上で動作可能な実行ファイルを生成して
実行する模倣手段を具備し、前記模倣手段は、前記プロ
グラムが入力待ち状態にある場合に実行するユーザ関数
が予め定義されているか否かを判定し、ユーザ関数が定
義されている場合は、前記プログラムが入力待ち状態と
なっている間のみ、該ユーザ関数を実行すること特徴と
している。
ドウェア構成が異なるコンピュータの内、いずれか一方
の第1のコンピュータ用に作成したプログラムを、他方
の第2のコンピュータ上で動作可能にするエミュレータ
において、前記プログラムと同一の手順でコールされ、
前記第1のコンピュータのハードウェア構成における各
機能を、前記第2のコンピュータ上で模倣する複数のル
ーチンから形成されるライブラリを参照して、前記第1
のコンピュータ用に作成されたプログラムから前記第2
のコンピュータ上で動作可能な実行ファイルを生成して
実行する模倣手段を具備し、前記模倣手段は、前記プロ
グラムが入力待ち状態にある場合に実行するユーザ関数
が予め定義されているか否かを判定し、ユーザ関数が定
義されている場合は、前記プログラムが入力待ち状態と
なっている間のみ、該ユーザ関数を実行すること特徴と
している。
【0017】
【作用】上記構成によれば、模倣手段は、プログラムが
入力待ち状態にある場合に実行するユーザ関数が予め定
義されているか否かを判定し、ユーザ関数が定義されて
いる場合は、プログラムが入力待ち状態となっている間
のみ、このユーザ関数を実行する。この結果、周知の割
込み処理を用いることなく、ハンディターミナル1の並
列処理を開発マシン上で実現することが可能になる。
入力待ち状態にある場合に実行するユーザ関数が予め定
義されているか否かを判定し、ユーザ関数が定義されて
いる場合は、プログラムが入力待ち状態となっている間
のみ、このユーザ関数を実行する。この結果、周知の割
込み処理を用いることなく、ハンディターミナル1の並
列処理を開発マシン上で実現することが可能になる。
【0018】
【実施例】以下、図面を参照してこの発明の実施例につ
いて説明する。図1はこの発明の一実施例を適用したプ
ログラム開発手順の概要を示す図である。この図におい
て、図7に示す各部と共通する部分には、同一の符号を
付し、その説明を省略する。図1に示す手順が図7に示
した従来例と異なる点は、ターミナル専用関数ライブラ
リTLを後述するエミュレータEMに置き換え、これに
より、開発マシン(パーソナルコンピュータ)上でハン
ディターミナル1用に作成されたアプリケーションプロ
グラムのデバッグDG2を行うようにした点にある。す
なわち、この実施例が意図するところは、エミュレータ
EMを用いたことにより、従来必要とされていた実行フ
ァイルEfのダウンロードDLと、これに応じてなされ
るハンディターミナル1上の実機デバッグDG1とを省
略し、開発マシン上でハンディターミナル1の動作状態
を表示するようにしたことにある。
いて説明する。図1はこの発明の一実施例を適用したプ
ログラム開発手順の概要を示す図である。この図におい
て、図7に示す各部と共通する部分には、同一の符号を
付し、その説明を省略する。図1に示す手順が図7に示
した従来例と異なる点は、ターミナル専用関数ライブラ
リTLを後述するエミュレータEMに置き換え、これに
より、開発マシン(パーソナルコンピュータ)上でハン
ディターミナル1用に作成されたアプリケーションプロ
グラムのデバッグDG2を行うようにした点にある。す
なわち、この実施例が意図するところは、エミュレータ
EMを用いたことにより、従来必要とされていた実行フ
ァイルEfのダウンロードDLと、これに応じてなされ
るハンディターミナル1上の実機デバッグDG1とを省
略し、開発マシン上でハンディターミナル1の動作状態
を表示するようにしたことにある。
【0019】次に、図1のプログラム開発手順を実現す
るエミュレータEMの機能概要について説明する。ま
ず、エミュレータEMは、ハンディターミナル1のハー
ドウェア環境で動作するよう定義された各種関数を、開
発マシン(例えば、パーソナルコンピュータ)のハード
ウェア環境で動作するように定義し直したプログラム群
から構成されている。
るエミュレータEMの機能概要について説明する。ま
ず、エミュレータEMは、ハンディターミナル1のハー
ドウェア環境で動作するよう定義された各種関数を、開
発マシン(例えば、パーソナルコンピュータ)のハード
ウェア環境で動作するように定義し直したプログラム群
から構成されている。
【0020】エミュレータEMの機能は、図2に示すよ
うに、ターミナル専用関数ライブラリTL(図7参照)
と同一である。つまり、このエミュレータEMでは、タ
ーミナル専用関数ライブラリTLと同様の引数で各関数
の外部仕様を規定し、かつ、各関数内部は、開発マシン
(パーソナルコンピュータ)上でハンディターミナル1
の動作をエミュレートするよう定義し直している。
うに、ターミナル専用関数ライブラリTL(図7参照)
と同一である。つまり、このエミュレータEMでは、タ
ーミナル専用関数ライブラリTLと同様の引数で各関数
の外部仕様を規定し、かつ、各関数内部は、開発マシン
(パーソナルコンピュータ)上でハンディターミナル1
の動作をエミュレートするよう定義し直している。
【0021】図2において、f1はエミュレータ初期化
機能である。このエミュレータ初期化機能f1は、ソー
スプログラムの先頭に「emu_start()」なる
関数が記述されている場合、エミュレータEMの初期設
定を行うものである。したがって、図1に示すように、
オブジェクトファイルofとエミュレータEMとをリン
クさせる場合には、この「emu_start()」な
る関数が必要になる。なお、この関数は、ターミナル専
用関数ライブラリTLとリンクする際には、何等実行に
影響されないものである。したがって、エミュレータ用
に作成されたソースファイルsfは、そのままハンディ
ターミナル1用の実行ファイルに変換可能になる。
機能である。このエミュレータ初期化機能f1は、ソー
スプログラムの先頭に「emu_start()」なる
関数が記述されている場合、エミュレータEMの初期設
定を行うものである。したがって、図1に示すように、
オブジェクトファイルofとエミュレータEMとをリン
クさせる場合には、この「emu_start()」な
る関数が必要になる。なお、この関数は、ターミナル専
用関数ライブラリTLとリンクする際には、何等実行に
影響されないものである。したがって、エミュレータ用
に作成されたソースファイルsfは、そのままハンディ
ターミナル1用の実行ファイルに変換可能になる。
【0022】次に、f2は画面表示制御機能である。こ
の画面表示制御機能f2では、ハンディターミナル1用
に定義された各関数、例えば、表示モードの設定、カー
ソル形状あるいは表示文字のアトリビュート設定等を行
う関数を、それぞれ開発マシン(パーソナルコンピュー
タ)のハードウェア環境に対応して動作させる機能であ
る。f3はキー入力制御機能であり、ハンディターミナ
ル1でなされるタッチパネル入力やテンキー入力を、開
発マシン上におけるマウス入力やテンキー入力に置き換
える機能である。また、この機能f3は、アプリケーシ
ョンプログラムがキー入力待ち状態にある時に、他の処
理を並列的に実行させるものであり、その詳細について
は後述する。f4は、エスケープシーケンス制御機能で
あり、カーソル位置指定、全画面消去あるいはスクロー
ルアップ/ダウンなどを指定するコード出力関数を、開
発マシン(パーソナルコンピュータ)のハードウェア環
境に対応して動作させる機能である。
の画面表示制御機能f2では、ハンディターミナル1用
に定義された各関数、例えば、表示モードの設定、カー
ソル形状あるいは表示文字のアトリビュート設定等を行
う関数を、それぞれ開発マシン(パーソナルコンピュー
タ)のハードウェア環境に対応して動作させる機能であ
る。f3はキー入力制御機能であり、ハンディターミナ
ル1でなされるタッチパネル入力やテンキー入力を、開
発マシン上におけるマウス入力やテンキー入力に置き換
える機能である。また、この機能f3は、アプリケーシ
ョンプログラムがキー入力待ち状態にある時に、他の処
理を並列的に実行させるものであり、その詳細について
は後述する。f4は、エスケープシーケンス制御機能で
あり、カーソル位置指定、全画面消去あるいはスクロー
ルアップ/ダウンなどを指定するコード出力関数を、開
発マシン(パーソナルコンピュータ)のハードウェア環
境に対応して動作させる機能である。
【0023】f5は、メインメモリ容量、ドライバ登録
情報、外字登録情報等のシステム情報出力関数を開発マ
シンに対応させて取得する機能である。f6は主電源オ
ン/オフ制御や、電源電圧低下状態検出などの動作を開
発マシン上で表示させる機能である。f7は、ハンディ
ターミナル1用に定義されたシリアルデータ通信制御
を、開発マシン上でエミュレートさせる通信制御機能で
ある。f8はプリンタ制御機能であり、ハンディターミ
ナル1用に定義された印字フォント、改行ピッチなどを
開発マシン上で制御するものである。f9は、エミュレ
ータ終了機能であり、ソースプログラムの最後、あるい
は途中に「emu_exit(n)」なる関数が記述さ
れている場合、エミュレータEMを終了させる機能であ
る。
情報、外字登録情報等のシステム情報出力関数を開発マ
シンに対応させて取得する機能である。f6は主電源オ
ン/オフ制御や、電源電圧低下状態検出などの動作を開
発マシン上で表示させる機能である。f7は、ハンディ
ターミナル1用に定義されたシリアルデータ通信制御
を、開発マシン上でエミュレートさせる通信制御機能で
ある。f8はプリンタ制御機能であり、ハンディターミ
ナル1用に定義された印字フォント、改行ピッチなどを
開発マシン上で制御するものである。f9は、エミュレ
ータ終了機能であり、ソースプログラムの最後、あるい
は途中に「emu_exit(n)」なる関数が記述さ
れている場合、エミュレータEMを終了させる機能であ
る。
【0024】次に、上記エミュレータEMを用いたプロ
グラム開発手順と、この手順に基づき作成されたアプリ
ケーションプログラムのエミュレート動作とについて順
次説明する。 プログラム開発手順 アプリケーションプログラムを開発する際には、まず、
コーディング段階でソースプログラムの先頭に「emu
_start()」なる関数を記述し、かつ、該プログ
ラムの最後に「emu_exit(n)」なる関数を記
述しておく。そして、図1に示すように、ソースファイ
ルsfをコンパイルccにかけ、オブジェクトファイル
ofを生成する。次に、このオブジェクトファイルof
に対して標準関数ライブラリSLおよびエミュレータE
Mをリンクさせる。これにより、ソースプログラムでコ
ールされるハンディターミナル固有の各種関数がパーソ
ナルコンピュータ上で動作する形で実行ファイル化され
る。実行ファイル化されたアプリケーションプログラム
は、パーソナルコンピュータの主メモリ上にロードされ
てハンディターミナル1の動作をエミュレートする。
グラム開発手順と、この手順に基づき作成されたアプリ
ケーションプログラムのエミュレート動作とについて順
次説明する。 プログラム開発手順 アプリケーションプログラムを開発する際には、まず、
コーディング段階でソースプログラムの先頭に「emu
_start()」なる関数を記述し、かつ、該プログ
ラムの最後に「emu_exit(n)」なる関数を記
述しておく。そして、図1に示すように、ソースファイ
ルsfをコンパイルccにかけ、オブジェクトファイル
ofを生成する。次に、このオブジェクトファイルof
に対して標準関数ライブラリSLおよびエミュレータE
Mをリンクさせる。これにより、ソースプログラムでコ
ールされるハンディターミナル固有の各種関数がパーソ
ナルコンピュータ上で動作する形で実行ファイル化され
る。実行ファイル化されたアプリケーションプログラム
は、パーソナルコンピュータの主メモリ上にロードされ
てハンディターミナル1の動作をエミュレートする。
【0025】アプリケーションプログラムのエミュレ
ート動作 上記手順により作成されたアプリケーションプログラム
が起動すると、パーソナルコンピュータの処理は、図3
に示すステップS1に進む。ステップS1では、プログ
ラム先頭に定義された「emu_start()」なる
関数に対応して上述したエミュレータ初期化機能f1が
初期設定を行う。この初期設定とは、ハンディターミナ
ル1の起動状態をエミュレートするものであり、例え
ば、バックライトのオン/オフ状態、液晶パネルのコン
トラスト状態あるいはスピーカ音量などを設定するもの
である。
ート動作 上記手順により作成されたアプリケーションプログラム
が起動すると、パーソナルコンピュータの処理は、図3
に示すステップS1に進む。ステップS1では、プログ
ラム先頭に定義された「emu_start()」なる
関数に対応して上述したエミュレータ初期化機能f1が
初期設定を行う。この初期設定とは、ハンディターミナ
ル1の起動状態をエミュレートするものであり、例え
ば、バックライトのオン/オフ状態、液晶パネルのコン
トラスト状態あるいはスピーカ音量などを設定するもの
である。
【0026】こうしてパーソナルコンピュータ上でハン
ディターミナル1の初期状態がエミュレートされると、
例えば、図4に示すように、パーソナルコンピュータの
ディスプレイDSPにハンディターミナル1の表示画面
TDが表示される。ここで、同図(イ)は、ハンディタ
ーミナル1に電源が投入された時に表示される表示画面
の一例を示す図である。一方、同図(ロ)はエミュレー
タ初期化機能f1に基づきハンディターミナル1の初期
状態がエミュレートされた表示例である。この図に示す
ように、ディスプレイDSPは、表示エリアE1,E
2,E3に分割されており、この内、表示エリアE1に
は表示画面TDと同一の表示がなされる。さらに、表示
エリアE2には、ハンディターミナル1のタッチパネル
の分割状態が表示され、表示エリアE3にはハンディタ
ーミナル1の動作状態が表示される。
ディターミナル1の初期状態がエミュレートされると、
例えば、図4に示すように、パーソナルコンピュータの
ディスプレイDSPにハンディターミナル1の表示画面
TDが表示される。ここで、同図(イ)は、ハンディタ
ーミナル1に電源が投入された時に表示される表示画面
の一例を示す図である。一方、同図(ロ)はエミュレー
タ初期化機能f1に基づきハンディターミナル1の初期
状態がエミュレートされた表示例である。この図に示す
ように、ディスプレイDSPは、表示エリアE1,E
2,E3に分割されており、この内、表示エリアE1に
は表示画面TDと同一の表示がなされる。さらに、表示
エリアE2には、ハンディターミナル1のタッチパネル
の分割状態が表示され、表示エリアE3にはハンディタ
ーミナル1の動作状態が表示される。
【0027】次いで、このような初期設定がなされる
と、パーソナルコンピュータの処理はステップS2に進
む。ステップS2では、与えられたイベントに応じてア
プリケーションプログラムが各関数を実行する。このス
テップS2においては、ハンディターミナル1のタッチ
パネル入力をマウス入力するようキー入力制御機能f3
が動作しており、これに対応してマウスカーソルを移動
させる割込み処理が行われる。
と、パーソナルコンピュータの処理はステップS2に進
む。ステップS2では、与えられたイベントに応じてア
プリケーションプログラムが各関数を実行する。このス
テップS2においては、ハンディターミナル1のタッチ
パネル入力をマウス入力するようキー入力制御機能f3
が動作しており、これに対応してマウスカーソルを移動
させる割込み処理が行われる。
【0028】したがって、図4(イ)に示したように、
実際のタッチパネルをエミュレートした表示エリアE1
上の所定位置をクリックしてマウス入力を行うと、この
入力イベントに対応したアプリケーションプログラムが
起動し、該プログラム中で定義された関数が実行され
る。これにより、ハンディターミナル1の動作がパーソ
ナルコンピュータ上でエミュレートされる。例えば、マ
ウスカーソルMCが表示エリアE1上に置かれ、マウス
入力がなされると、「データ伝送」処理がコンピュータ
上でエミュレートされる。
実際のタッチパネルをエミュレートした表示エリアE1
上の所定位置をクリックしてマウス入力を行うと、この
入力イベントに対応したアプリケーションプログラムが
起動し、該プログラム中で定義された関数が実行され
る。これにより、ハンディターミナル1の動作がパーソ
ナルコンピュータ上でエミュレートされる。例えば、マ
ウスカーソルMCが表示エリアE1上に置かれ、マウス
入力がなされると、「データ伝送」処理がコンピュータ
上でエミュレートされる。
【0029】そして、アプリケーションプログラム完了
の旨を表わす入力がなされると、ステップS3の判断結
果が「YES」となり、該プログラムの処理がステップ
S4に進む。ステップS4では、プログラム最後に定義
された「emu_exit(n)」なる関数に基づき、
エミュレート動作を終了する。
の旨を表わす入力がなされると、ステップS3の判断結
果が「YES」となり、該プログラムの処理がステップ
S4に進む。ステップS4では、プログラム最後に定義
された「emu_exit(n)」なる関数に基づき、
エミュレート動作を終了する。
【0030】次に、図5を参照し、上記ステップS2に
おいてなされるキー入力制御動作について説明する。こ
のキー入力制御動作は、前述したキー入力制御機能f3
によって実現されるものである。まず、上述したステッ
プS2において、アプリケーションプログラムが入力待
ち状態になると、図5に示すキー入力関数ルーチンが起
動する。これにより、パーソナルコンピュータの処理
は、ステップSa1に進む。
おいてなされるキー入力制御動作について説明する。こ
のキー入力制御動作は、前述したキー入力制御機能f3
によって実現されるものである。まず、上述したステッ
プS2において、アプリケーションプログラムが入力待
ち状態になると、図5に示すキー入力関数ルーチンが起
動する。これにより、パーソナルコンピュータの処理
は、ステップSa1に進む。
【0031】ステップSa1では、アプリケーションプ
ログラムが入力待ち状態になった時点で、該プログラム
側からキー入力制御機能f3側へポインタが引渡され
る。この結果、前述した機能f3が実行可能になる。次
に、ステップSa2,Sa3では、キーバッファを監視
し、キー入力がなされたか否かを判断する。ここで、ア
プリケーションプログラムに対するキー入力操作が行わ
れた場合、キーバッファにキーデータがセットされ、こ
こでの判断結果が「YES」となり、ステップSa4に
進む。
ログラムが入力待ち状態になった時点で、該プログラム
側からキー入力制御機能f3側へポインタが引渡され
る。この結果、前述した機能f3が実行可能になる。次
に、ステップSa2,Sa3では、キーバッファを監視
し、キー入力がなされたか否かを判断する。ここで、ア
プリケーションプログラムに対するキー入力操作が行わ
れた場合、キーバッファにキーデータがセットされ、こ
こでの判断結果が「YES」となり、ステップSa4に
進む。
【0032】ステップSa4では、キーバッファよりキ
ーデータを読み出し、次のステップSa5に進む。ステ
ップSa5では、読み出したキーデータが終了キーであ
るか否かを判断する。ここで、終了キーでない場合に
は、判断結果が「NO」となり、次のステップSa6に
進む。ステップSa6では、読み出したキーデータをア
プリケーション側で定義されたバッファエリアにセット
し、このキーデータをアプリケーションプログラムに引
渡す。あるいは、コントロールキーに応じた処理を行
う。そして、この後、上述したステップSa2以降の動
作を繰り返し、キー入力操作に応じたキーデータをアプ
リケーションプログラムへ入力する。なお、上記ステッ
プSa5において、終了キーが検出された時には、判断
結果が「YES」となり、このルーチンを完了する。
ーデータを読み出し、次のステップSa5に進む。ステ
ップSa5では、読み出したキーデータが終了キーであ
るか否かを判断する。ここで、終了キーでない場合に
は、判断結果が「NO」となり、次のステップSa6に
進む。ステップSa6では、読み出したキーデータをア
プリケーション側で定義されたバッファエリアにセット
し、このキーデータをアプリケーションプログラムに引
渡す。あるいは、コントロールキーに応じた処理を行
う。そして、この後、上述したステップSa2以降の動
作を繰り返し、キー入力操作に応じたキーデータをアプ
リケーションプログラムへ入力する。なお、上記ステッ
プSa5において、終了キーが検出された時には、判断
結果が「YES」となり、このルーチンを完了する。
【0033】ところで、キー入力が無く、上述したステ
ップSa3の判断結果は「NO」となり、ステップSa
7に進む。ステップSa7では、ユーザ関数が定義され
ているか否かを判断する。そして、対応するユーザ関数
が存在する場合には、この判断結果が「YES」とな
り、ステップSa8に進む。ステップSa8では、アプ
リケーションプログラムが入力待ち状態となっている
間、指定されたユーザ関数を実行する。ここで、ユーザ
関数の実行に必要な引数は、本キー入力関数の引数とし
て与えられる。このユーザ関数とは、例えば、時刻表示
や、通信バッファ内容のモニタ等である。
ップSa3の判断結果は「NO」となり、ステップSa
7に進む。ステップSa7では、ユーザ関数が定義され
ているか否かを判断する。そして、対応するユーザ関数
が存在する場合には、この判断結果が「YES」とな
り、ステップSa8に進む。ステップSa8では、アプ
リケーションプログラムが入力待ち状態となっている
間、指定されたユーザ関数を実行する。ここで、ユーザ
関数の実行に必要な引数は、本キー入力関数の引数とし
て与えられる。このユーザ関数とは、例えば、時刻表示
や、通信バッファ内容のモニタ等である。
【0034】以上のように、アプリケーションプログラ
ムが入力待ちの状態にある場合、該プログラムを終了さ
せることなく、他の処理を並列的に実行させることが可
能である。すなわち、キースキャンを行うタイミングで
各種処理を並列的に複数実行することが可能になってい
る。この結果、割込み処理を用いることなく、ハンディ
ターミナル1の並列処理を開発マシン上で実現すること
が可能になる。
ムが入力待ちの状態にある場合、該プログラムを終了さ
せることなく、他の処理を並列的に実行させることが可
能である。すなわち、キースキャンを行うタイミングで
各種処理を並列的に複数実行することが可能になってい
る。この結果、割込み処理を用いることなく、ハンディ
ターミナル1の並列処理を開発マシン上で実現すること
が可能になる。
【0035】このように、エミュレータEMは、ハンデ
ィターミナル1のハードウェア環境に対応させた専用関
数ライブラリTLと同一の引数を備え、かつ、各専用関
数の機能f1〜f9を開発マシン(パーソナルコンピュ
ータ)のハードウェア環境に対応させている。このた
め、ソースプログラムにエミュレータEMをリンクして
生成した実行ファイルEfをパーソナルコンピュータに
ロードすれば、該コンピュータ上でハンディターミナル
1の動作がエミュレートされることになる。さらに、こ
のエミュレート動作では、ハンディターミナル1の動作
状態がディスプレイDSPに逐一表示されるため、アプ
リケーションプログラムのデバック作業が極めて効率良
く行える。
ィターミナル1のハードウェア環境に対応させた専用関
数ライブラリTLと同一の引数を備え、かつ、各専用関
数の機能f1〜f9を開発マシン(パーソナルコンピュ
ータ)のハードウェア環境に対応させている。このた
め、ソースプログラムにエミュレータEMをリンクして
生成した実行ファイルEfをパーソナルコンピュータに
ロードすれば、該コンピュータ上でハンディターミナル
1の動作がエミュレートされることになる。さらに、こ
のエミュレート動作では、ハンディターミナル1の動作
状態がディスプレイDSPに逐一表示されるため、アプ
リケーションプログラムのデバック作業が極めて効率良
く行える。
【0036】また、上記実施例によれば、エミュレータ
用に開発したソースプログラムがそのままハンディター
ミナル1用のソースファイルとなり、完全互換性を備え
るので、プログラム開発が全て同一のマシン上で行うこ
とが可能になる。この結果、従来必要とされていた実行
ファイルEfのダウンロードDLと、これに応じてなさ
れる実機デバッグDG1とが省略されるから、極めて効
率良いプログラム開発環境が実現できる。
用に開発したソースプログラムがそのままハンディター
ミナル1用のソースファイルとなり、完全互換性を備え
るので、プログラム開発が全て同一のマシン上で行うこ
とが可能になる。この結果、従来必要とされていた実行
ファイルEfのダウンロードDLと、これに応じてなさ
れる実機デバッグDG1とが省略されるから、極めて効
率良いプログラム開発環境が実現できる。
【0037】さらに、ハンディターミナル用に作成した
プログラムを顧客向けにデモンストレーションする場
合、従来では、ハンディターミナル1そのものを使用し
て行っていた。この場合、表示面積が小さい液晶ディス
プレイでその動作を表示するため、多人数へのデモンス
トレーションには不都合であった。しかしながら、これ
に替えて、上述した実施例のように、パーソナルコンピ
ュータでハンディターミナル1の動作をエミュレートす
れば、大型のディスプレイによる多人数へのデモンスト
レーションが可能になる。
プログラムを顧客向けにデモンストレーションする場
合、従来では、ハンディターミナル1そのものを使用し
て行っていた。この場合、表示面積が小さい液晶ディス
プレイでその動作を表示するため、多人数へのデモンス
トレーションには不都合であった。しかしながら、これ
に替えて、上述した実施例のように、パーソナルコンピ
ュータでハンディターミナル1の動作をエミュレートす
れば、大型のディスプレイによる多人数へのデモンスト
レーションが可能になる。
【0038】
【発明の効果】以上説明したように、この発明によれ
ば、模倣手段は、プログラムが入力待ち状態にある場合
に実行するユーザ関数が予め定義されているか否かを判
定し、ユーザ関数が定義されている場合は、プログラム
が入力待ち状態となっている間のみ、このユーザ関数を
実行するので、周知の割込み処理を用いることなく、ハ
ンディターミナル1の並列処理を開発マシン上でも実現
することができる。また、こうしたことがハンディター
ミナル1においても同様に実行される環境にあるので、
ハンディターミナル1と開発マシンとの互換性が保たれ
る。
ば、模倣手段は、プログラムが入力待ち状態にある場合
に実行するユーザ関数が予め定義されているか否かを判
定し、ユーザ関数が定義されている場合は、プログラム
が入力待ち状態となっている間のみ、このユーザ関数を
実行するので、周知の割込み処理を用いることなく、ハ
ンディターミナル1の並列処理を開発マシン上でも実現
することができる。また、こうしたことがハンディター
ミナル1においても同様に実行される環境にあるので、
ハンディターミナル1と開発マシンとの互換性が保たれ
る。
【図面の簡単な説明】
【図1】この発明の一実施例を適用したプログラム開発
手順の概要を示す図。
手順の概要を示す図。
【図2】同実施例におけるエミュレータEMの機能構成
を示す図。
を示す図。
【図3】同実施例により作成されたアプリケーションプ
ログラムの概略動作を示すフローチャート。
ログラムの概略動作を示すフローチャート。
【図4】同実施例により作成されたアプリケーションプ
ログラムの概略動作を説明するための図。
ログラムの概略動作を説明するための図。
【図5】同実施例におけるキー入力関数ルーチンの動作
を示すフローチャート。
を示すフローチャート。
【図6】ハンディターミナル1の一構成例を示すブロッ
ク図。
ク図。
【図7】従来のプログラム開発手順を説明するための
図。
図。
sf…ソースファイル、 cc…コンパイル、 of…オブジェクトファイル、 LK…リンカ、 EM…エミュレータ(模倣手段)。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平3−235136(JP,A) 特開 平4−76739(JP,A) 特開 平4−148438(JP,A) 特開 昭64−66750(JP,A) 特開 平2−270041(JP,A) 特開 平4−195348(JP,A) 特開 昭58−121461(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 11/28 340
Claims (1)
- 【請求項1】 互いにハードウェア構成が異なるコンピ
ュータの内、いずれか一方の第1のコンピュータ用に作
成したプログラムを、他方の第2のコンピュータ上で動
作可能にするエミュレータにおいて、前記プログラムと同一の手順でコールされ、前記第1の
コンピュータのハードウェア構成における各機能を、前
記第2のコンピュータ上で模倣する複数のルーチンから
形成されるライブラリを参照して、前記第1のコンピュ
ータ用に作成されたプログラムから前記第2のコンピュ
ータ上で動作可能な実行ファイルを生成して実行する 模
倣手段を具備し、 前記模倣手段は、前記プログラムが入力待ち状態にある
場合に実行するユーザ関数が予め定義されているか否か
を判定し、ユーザ関数が定義されている場合は、前記プ
ログラムが入力待ち状態となっている間のみ、該ユーザ
関数を実行すること特徴とするエミュレータ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21697092A JP3330979B2 (ja) | 1992-08-14 | 1992-08-14 | エミュレータ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21697092A JP3330979B2 (ja) | 1992-08-14 | 1992-08-14 | エミュレータ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0667930A JPH0667930A (ja) | 1994-03-11 |
JP3330979B2 true JP3330979B2 (ja) | 2002-10-07 |
Family
ID=16696778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP21697092A Expired - Fee Related JP3330979B2 (ja) | 1992-08-14 | 1992-08-14 | エミュレータ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3330979B2 (ja) |
-
1992
- 1992-08-14 JP JP21697092A patent/JP3330979B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0667930A (ja) | 1994-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2795244B2 (ja) | プログラムデバッグシステム | |
CN100492387C (zh) | 基于Keil C51的软件保护开发的方法和*** | |
JP2938272B2 (ja) | エミュレータ | |
JP3330979B2 (ja) | エミュレータ | |
JP3100463B2 (ja) | エミュレータ | |
JP2959910B2 (ja) | エミュレータ | |
JP2939392B2 (ja) | エミュレータ | |
JP2939391B2 (ja) | エミュレータ | |
JP2939390B2 (ja) | エミュレータ | |
JPH06103103A (ja) | エミュレータ | |
JPH06149622A (ja) | エミュレータ | |
JPH06149591A (ja) | エミュレータ | |
JP3033713B2 (ja) | 仮想計算機エミュレート装置 | |
JPH08286896A (ja) | ソフトウェア開発方法及びソフトウェア開発システム | |
JPH06149621A (ja) | エミュレータ | |
JP2001318796A (ja) | 内外イベントドリブン方式によるプログラム実行制御方法、記録媒体およびプログラム作成支援システム | |
JPH06103086A (ja) | エミュレータ | |
JPH07295612A (ja) | 高級言語シーケンス命令プログラム生成装置および汎用シーケンサ | |
JPS62214444A (ja) | シミユレ−シヨン方法 | |
JP2924080B2 (ja) | 論理シミュレーション支援システム | |
GUIDE | intJ | |
JPH05250221A (ja) | シミュレータ実行方式 | |
JPH06103087A (ja) | エミュレータ | |
JPH01307837A (ja) | Mpuシミュレーション方法及びmpuシミュレータ | |
JPS63271542A (ja) | Romデバツガ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |