JPH1083365A - コンピュータ・システム - Google Patents

コンピュータ・システム

Info

Publication number
JPH1083365A
JPH1083365A JP9019178A JP1917897A JPH1083365A JP H1083365 A JPH1083365 A JP H1083365A JP 9019178 A JP9019178 A JP 9019178A JP 1917897 A JP1917897 A JP 1917897A JP H1083365 A JPH1083365 A JP H1083365A
Authority
JP
Japan
Prior art keywords
modem
uart
computer system
virtual
device driver
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
JP9019178A
Other languages
English (en)
Other versions
JPH1083365A5 (ja
Inventor
Byron G Sands
ジー・バイロン・サンズ
Peter J Brown
ピーター・ジェイ・ブラウン
Don A Dykes
ドン・エイ・ダイクス
Andrew L Love
アンドリュー・エル・ラブ
Kevin W Eyres
ケヴィン・ダブリュー・アイリス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Compaq Computer Corp
Original Assignee
Compaq Computer Corp
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 Compaq Computer Corp filed Critical Compaq Computer Corp
Publication of JPH1083365A publication Critical patent/JPH1083365A/ja
Publication of JPH1083365A5 publication Critical patent/JPH1083365A5/ja
Pending legal-status Critical Current

Links

Landscapes

  • Telephonic Communication Services (AREA)
  • Communication Control (AREA)

Abstract

(57)【要約】 【課題】 モデムのハードウエア部分をソフトウエア・
モジュールで実現してサイズ及びコストの低減、機能更
新性の向上を図る。 【解決手段】 モデム・カード30は、スロット接続器
28を介してコンピュータに接続され、従来必要であっ
たマイクロコントローラ40、UART46等を具備し
てない。これらの機能は、コンピュータ自身のオペレー
ティング・システムによってコールされる仮想モデム・
コントローラによって実現される。仮想モデム・コント
ローラは、オペーレーティング・ソフトウェアからはハ
ードウェアに見える仮想のUARTを含み、入出力命令
と置き換えるコールのためのエントリ・ポイントを有す
る。これにより、入出力動作を実行するために書かれた
標準的な装置ドライバ・コードを変換し、仮想のUAR
Tを動作することができる。

Description

【発明の詳細な説明】
【0001】
【発明の技術分野】本発明は、パーソナル・コンピュー
タに用いられるモデムに関し、更に特定すれば、仮想化
されたドライバおよびモデム・モジュールとして組織さ
れたソフトウエアを用いて、ホストCPUがコントロー
ラおよびUART機能を実行し、モジュールが仮想化U
ARTインターフェースを通じて通信する、モデムに関
するものである。
【0002】
【従来の技術】今日のパーソナル・コンピュータのほと
んどは、ある形態のモデム機能を含んでいる。典型的
に、高速モデム・システムがオプション・カード上に内
蔵されており、国際電信電話諮問委員会(CCITT:I
nternational Telegraph and Telephone Consultative
Committee)によって勧告された、V.22,V.22b
is,V.32,V.32bis,およびV.34(28.
8Kbps)プロトコルのような、種々のモデム通信プ
ロトコルに対応するための、「データ・ポンプ」(data
pump)を含んでいる。データ・ポンプ自体は、典型的
に、変調、復調、エコー・キャンセレーションを行うD
SP(デジタル信号プロセッサ)、ならびにアナログ−
デジタル(A/D)およびデジタル−アナログ(D/
A)変換を行うコーダ/デコーダ(CODEC)を含ん
でいる。電話線からのアナログ信号はCODECによっ
てデジタル化され、次に、DSPによって復調され、外
部装置から送出された元のデジタル・データを抽出す
る。この手順を逆に行うと、モデムによってデータが外
部装置に送信される。
【0003】従来のモデムでは、モデムをコンピュータ
・システムにインターフェースするためのサポート・ロ
ジックは、典型的に、マイクロコントローラを含み、こ
れによってI/Oバスを介してユニバーサル非同期受信
送信機(UART:universalasynchronous receiver tr
ansmitter)によって通信リンクを確立し、一連のイベ
ントを制御してコール(呼出)を発信し、あるいはコー
ルに応答し、そしてコンピュータ・システムからのデジ
タル・データの送信または受信を行う。また、マイクロ
コントローラは、典型的に、V.42プロトコルによる
もののようなエラー訂正手順や、CCITTによって勧
告されているV.42bisプロトコルによるもののよ
うな圧縮/伸張手順も実行する。
【0004】UARTは、元々、シリアル・インターフ
ェース、典型的には、バス上にあるデータを直列化する
(すなわち、RS−232通信リンク上でのようなシリ
アル送信、およびこのようなデータの受信、そのパラレ
ル形態への変換、バスを通じての送出)ためのインテリ
ジェント・マイクロチップとして設計されたものであ
る。UARTチップへのアクセスは、通常、パーソナル
・コンピュータ・システムのI/Oポート(典型的に
は、COM1およびCOM2)を通じて得られる。典型
的な代表例は、ナショナル・セミコンダクタ・コーポレ
ーション(NationalSemiconductor Corporation)製のU
ART8250および16450チップである。
【0005】
【発明が解決しようとする課題】モデム装置のハードウ
エア部分は、このようなモデムの根元的コストの殆どを
占めている。更に、これらハードウェア部分はモデムの
サイズにも影響を及ぼす。モデムの部品数を少しでも減
らすことができれば、コスト低減となるので望ましいこ
とである。
【0006】更に、技術が急速に変化しすぐに旧式とな
ってしまう今日の状況では、アップグレードが容易なこ
と、および異なるオペレーティング・システム・プラッ
トフォームを越えてのデータの移動可能性(portabilit
y)が、モデム製造者には重要である。製造者は、製品ラ
イフサイクルの短縮化にも拘わらず、ハードウエア開発
コストを回収しようという問題に直面している。したが
って、このようなハードウエア開発における削減は、ど
のようなものであっても、同様に望ましいことである。
【0007】
【課題を解決するための手段】本発明の好適実施例によ
るモデムでは、UARTおよびマイクロコントローラ機
能を仮想化し、ホスト・プロセッサ上で実行するソフト
ウエア(「モデム・モジュール」)として実施する。モ
デム・モジュールは、オペレーティング・システムと相
互作用を行うオペレーティング・システムに特定した仮
想ポート・ドライバを含む、第2レイヤ(「仮想装置駆
動レイヤ」)とインターフェースする。この二層化アー
キテクチャ(dicotomized architecture)は、モデムを異
なるオペレーティング・システム(OS)と共に使用す
るときに、モデム・モジュール・ソフトウエアが仮想的
に不変であるという利点がある。殆どのオペレーティン
グ・システムは、既に、UARTと通信する機能(abili
ty)を内蔵している。したがって、仮想装置駆動レイヤ
のみを修正することは、双方のレイヤを修正しようとす
るよりも単純であり、費用効率も高くなる。
【0008】モデムのハードウエア部分をソフトウエア
・モジュールとして実施することによって、付加的な利
点も得られる。今日の強力なマイクロプロセッサの潜在
能力をレベル化(leveraging)することにより、物理的な
UARTに伴う欠点を解消し、「標準的」モデムよりも
事実上改善された、高速モデム性能が得られる。したが
って、本発明によるモデムは、従来のモデム・カードに
比べて、低価格化、高速化、および高機能化の容易性を
図ることができる。
【0009】
【発明の実施の形態】図1を参照すると、モデム・カー
ド30を含む、コンピュータ・システムCの簡略ブロッ
ク図が示されている。コンピュータ・システムCは、ホ
スト・バス16に結合された中央演算ユニット(CP
U)システム10を内蔵している。ホスト・バスは、C
PUシステム10を、主メモリ12と呼ばれるメモリ・
アレイを含む、コンピュータ・システムCの残りの部分
にインターフェースするように機能する。CPUシステ
ム10は、インテル・コーポレーション(Intel Corpora
tion)の486またはペンティウム(PENTIUM)のような単
純なマイクロプロセッサで構成することもでき、あるい
は、マイクロプロセッサ、キャッシュ・コントローラ、
およびその他の構成物を含むより完全なCPUシステム
として構成することもできる。ビデオ・システム14
も、ホスト・バス16に接続されている。
【0010】ホスト・バス16は、バス・コントローラ
18を通じて、I/Oバス20に結合されている。バス
・コントローラ18は、業界標準アーキテクチャ(IS
A:Industry Standard Architecture)バスまたは拡張業
界標準アーキテクチャ(EISA:Extended Industry S
tandard Architecture)バスと互換性があることが好ま
しい。I/Oバス20の正確なアーキテクチャは、本発
明にはさほど重要なことではない。
【0011】I/Oバス20には、コンピュータ・シス
テムCのシステム・ボード上に従来から配置されている
様々な構成要素が接続されている。これらは、BIOS
およびその他のシステム・レベルの命令を与えるリード
・オンリ・メモリ(ROM)32、および8042キー
ボード・コントローラ34を含んでいる。キーボード部
分36および補助ポート即ちポインティング・デバイス
・ポート38が、8042キーボード・コントローラ3
4に接続されている。ハード・ディスク・ドライブ24
が、IDEコントローラ22を介して、I/Oバス20
に接続されている。IDEコントローラ22は、バッフ
ァ制御ロジックを内蔵し、IDE装置に対するデータ読
み出しおよびデータ書き込みの間、IDE装置に対して
チップ・セレクト(chip select)を発生する。
【0012】モデム・カード30が、スロット接続器2
8を通じて、パーソナル・コンピュータ・メモリ・カー
ド国際連合(PCMCIA:Personal Computer Memory
CardInternational Association)インターフェース2
6に接続されている。PCMCIAインターフェース2
6は、I/Oバス20への接続を可能にするものであ
る。PCMCIA仕様2.0は、もともとメモリ拡張
(標準1.0)インターフェースとして意図されたもの
であるが、PCMCIAインターフェースを用いたファ
ックス・モデム、SCSIアダプタ、全世界測位システ
ム(GPS:Global Positioning System)受信機のよう
な様々なI/O装置に、クレジット・カードの大きさの
カードを使用可能にしている。簡略化のために、以下で
論じるモデム機能は、ファクシミリ、データ、および音
声情報を処理する能力を含むものと仮定する。なぜな
ら、これら各々に対する通信プロトコルが関係するから
である。
【0013】図1のコンピュータ・システムは一例であ
り、多数の他のコンピュータ・システムの設計も使用可
能である。更に、モデム・カード30は、直接I/Oバ
ス20上に、またはホスト・バス16を含む、コンピュ
ータ・システムCが利用する他のいずれかのバス上に配
置することができる。モデムの正確な位置は本発明には
さほど重要ではない。
【0014】簡単に図2を参照すると、従来のモデム・
ハードウエアのブロック図が示されている。従来のモデ
ムは、データ・アクセス構成(DAA:data access arr
angement)を通じて、電話線(図示せず)に結合され
る。データ・アクセス構成は、モデム30を電話線から
電気的に分離し、連邦通信委員会(FCC:Federal Com
munications Commision)の要求にしたがって、電磁干
渉/無線周波数干渉(EMI/RFI:electromagnetic
interference/radio frequency interference)の発生
を制御するものである。また、DAA54は通常、受信
信号の送信アナログ信号からの分離も行い、デジタル・
リング信号を発生し、コンピュータ・システムに応答す
るよう通知する。DAA54は、公衆電話交換網(PS
TN:public switched telephone network)インターフ
ェースとの互換性があることが好ましい。DAA54
は、標準的な電話機に使用されているRJ11Cのよう
な電話ジャックを介して、電話線から信号を受信する。
【0015】更に、従来のモデムは、DSP58および
サポート・メモリ64、RAM42およびROM44を
必要とするマイクロコントローラ40、物理UART4
6、ならびに周辺インターフェース装置(PID:perip
heral interface device)48も含む。このような従来
技術のモデムでは、マイクロコントローラ40は通常、
UART46を通じてCPUシステム10と通信を行
う。CPU10は、別個のUARTを用いて、UART
46とのデータ送受信を行う。一方、UART46は、
マイクロコントローラ40にデータを供給し、マイクロ
コントローラ40からのデータをCPUシステム10に
送出する。
【0016】しかしながら、マイクロコントローラ40
は、単純に、CPU10からのデータを受信したり、電
話線を通じてそれを送出したり、あるいは単純に電話線
からのデータを受信したり、それをCPU10に送出し
たりできる訳ではない。すなわち、標準HayesAT
コマンド・セット(standard Hayes AT command set)の
ようなモデム・コマンド・セットを実施するために必要
なソフトウエアを含んでいる。マイクロコントローラ4
0は、UART46によって設定されるATコマンドに
したがってASCIIコマンドを受信し、該コマンドに
基づいて種々の機能を行うソフトウエアを含んでいる。
例えば、「ATH」コマンドは、マイクロコントローラ
40に、DAA54を「終了させ」(hang up)、モデム
・リンクを遮断させる。他のコマンドは、ATコマンド
・セットにより既知である。更に、マイクロコントロー
ラ40は、種々のエラー訂正およびデータ圧縮プロトコ
ルも実施する。これらの機能は全て、当業者には公知で
ある。ソフトウエアがコマンド・モードではなく通信モ
ードにあるときは、マイクロコントローラ40はUAR
T46およびDSP58との間でデータの受け渡しを行
う。次いで、DSP58は、このデータを適切なデジタ
ル化信号レベルに変換し、そのデータをCODEC56
(図4参照)に転送する。データ通信モードを終了しコ
マンド・モードに入るためには、マイクロコントローラ
40は、ATコマンド・セットにしたがって動作するこ
とが好ましく、コマンド・モードに切り替え、マイクロ
コントローラ40を通じてホストPCにATコマンドを
供給させることによって、一連の3つのプラス符号「+
++」に応答する。マイクロコントローラ40に使用さ
れる1つの一般的なマイクロコントローラは、モトロー
ラ(Motorola)のMC68302を埋め込んだコントロー
ラである。
【0017】次に図3を参照すると、ここに開示する本
発明の実施例によるモデム・ハードウエアのブロック図
が示されている。ソフトウエアで実現されたことにより
もはや不要となった物理的構成要素は、破線で示されて
いる。上述のように、従来技術のモデム・システムは通
常マイクロコントローラ40(図2)を含んでおり、こ
れがDSP58にデータを供給し、モニタおよびDAA
54を制御して、必要に応じてオンフックまたはオフフ
ックを行っていた。通信リンクを確立するためには、マ
イクロコントローラ40は、適切な信号列を送出して発
信するか、あるいは電話のコールに応答する。しかしな
がら、好適実施例によるモデムでは、マイクロコントロ
ーラ40やUART46の様々な機能は、仮想モデム・
モジュール114(図5および図6)において実現され
ている。このソフトウエア・インプリメンテーションの
結果、大幅な経済的節約とデータ・レートの向上が得ら
れた。更に、マイクロコントローラ40およびUART
46は、好ましくは、他のオペレーティング・システム
・ソフトウエアからは独立したモジュールとして実施す
ることにより、マイクロコントローラ40ならびにマイ
クロコントローラ40およびUART46の仮想バージ
ョンを、他のオペレーティング・システムに容易に移動
できるようにする。
【0018】ここで図4に進むと、本発明によるモデム
・カード30がより詳細に示されている。PCMCIA
ホスト・インターフェース特定用途集積回路(ACI
C:application specific integrated circuit)PID
2 62を用い、PCMCIAスロット接続器28を介
して、モデム・カード30がコンピュータ・システムC
に接続されている。PID2 62はEEPROM64
にも接続されている。EEPROM64は、PID2
62にロードされるカード情報構造(CIS:Card Info
rmation Structure)を含む。好適実施例では、EEP
ROM64は、ナショナル・セミコンダクタ・コーポレ
ーションによって製造されたものである。PID2 6
2は、更に、インターフェースASIC V32INF
C2にも接続されており、一方、これはDSPチップ5
8に対するインターフェースを備えている。DSP58
は、所望のモデム機能を与えるための計算を行う。好適
実施例では、DSP58は、AT&Tコーポレーション
(AT&T corporation)によって製造された汎用のDSP1
6Aである。
【0019】DSP58は、通常、コンピュータ・シス
テムCからのデジタル・データを、デジタル化されたア
ナログ波形に変換し、CODEC56に供給する。CO
DEC56は、次に、真のアナログ波形をDAA54に
供給する。また、DSP58は、CODEC56からデ
ジタル化されたアナログ波形を受け取る。CODEC5
6は、DAA54から真のアナログ波形を受け取り、こ
のアナログ・データを、コンピュータ・システムCのた
めにデジタル・データに変換する。また、DSP58
は、エコー・キャンセレーションも行い、送信信号によ
ってモデム30にエコー・バックされる信号を打ち消す
ことが好ましい。
【0020】CODEC56は、RXD、TXD、SY
NC、CLKと呼ばれる4つの信号によって、DSP5
8に接続される。RXDおよびTXD信号は、受信およ
び送信デジタル信号であり、SYNCおよびCLK信号
は、DSP58とコーデック56との間で利用される従
来の信号である。V32INFC2 60、DSP58
およびCODEC56が連携して、一般的に「データ・
ポンプ」50と呼ばれるものを形成する。データ・ポン
プ50は、典型的に、モデム通信の様々なプロトコルに
対応する、モデム・データ・ポンプ・チップ・セットで
ある。好適実施例では、データ・ポンプ50として、A
T&Tマイクロエレクトロニクス(AT&TMicroelectronic
s)によって販売されている、DSP16A−V32IN
FC2−LT V.32bis plus FAX Dat
a Pump Chip Setを用いている。
【0021】コーデック56は、RXA即ちDAA54
からの受信アナログ信号を受け、TXA即ち送信アナロ
グ信号をDAA54に供給する。CODEC56は、D
SP58による処理のために、RXA信号からのアナロ
グ・データをデジタル化する。同様に、DSP58から
受けたデジタル・データTXDは、TXA信号上でアナ
ログ・フォーマットに変換される。
【0022】上述のように、DAA54は、FCC即ち
EMI/RFI干渉制御のための国内規制を満足するた
めに、モデム30を電話線から分離するように機能す
る。外部装置からDAA54に受信されるデータは、濾
波され、TXA信号上でCODEC56からDAA54
に、アナログ形態で供給される。同様に、モデム30に
よって送信されるデータは、CODEC56からDAA
54に、TXA信号上で供給され、次にDAA54によ
って電話線上でアサートされる。データはDSP58お
よびCODEC56間を直列に転送されることが好まし
い。例示したDAA回路の更なる詳細は、"Modem Havin
g Separate Modem Engine and Data Access Arrangemen
t"と題する、係属中の米国特許出願番号第08/30
4,262号に開示され、本出願において参照されてい
る。
【0023】DAA54は、RJ−11電話ジャック5
2を通じて、標準電話線に接続されている。電話ジャッ
ク52は、当業者には既知にように、ある電話信号を供
給および受信するために設けられている。多くの異なる
種類の電話線およびその他の送信媒体が考えられるの
で、電話ジャック52およびDAA54は、いかなる電
話線手段または送信媒体が使用されても、それと互換性
を保つように構成される。本発明は、送信媒体、電話ジ
ャックまたはDAAのいずれの特定のタイプにも限定さ
れないので、ここに示すものは、単に例示の目的で使用
しているに過ぎないものである。
【0024】好適実施例によるモデム30は、プラグ・
アンド・プレイ外部COM装置仕様に記載されている方
法にしたがって、それ自体を識別可能とすることが理想
的である。加えて、Windows(登録商標)95のロゴに
適任とするために、モデム30は、データ・モデムに対
するV.42/V42bisプロトコルによる少なくと
も毎秒9600ビット(bps)に対応し、TIA−6
02(Hayes(登録商標)互換)ATコマンド・セッ
ト、およびV42/V42bisのフロー制御のための
拡張機能に対応し、クラス1(TIA−578A)の少
なくとも9600bps V.29のファックス機能に
対応し、更に、16459A/16550と互換性のあ
るUARTインターフェースに対応しなければならな
い。Windows(登録商標)95は、古い8250UAR
Tチップにも対応する。
【0025】Window(登録商標)95の背景 Window(登録商標)95の核心は、仮想マシーン・マネ
ージャ(VMM:virtual machine manager)と呼ばれ
る、32ビット・プロテクト・モード・オペレーティン
グ・システムである。VMMは、メモリ、プロセス、割
り込み、および一般的な保護不履行のような例外を管理
するサービスを提供する。VMMは仮想装置(VxD)
と共に動作し、仮想装置が割り込みや不履行を傍受し
て、アプリケーションが有するハードウエア装置へのア
クセスや、インストールされたソフトウエアの管理を行
えるようにする。VMMおよびVxDは双方とも、単一
32ビット・フラット・モデル・アドレス空間におい
て、特権レベル0(リング0とも言う)で実行する。リ
ング0で実行するコードは、プロセッサが処理可能なあ
らゆるタスクを遂行することができ、更に、コンピュー
タ・システム内のいかなるメモリ・アドレスでも操作可
能である。リング1はリング2よりも特権が多く、一方
リング2はリング3よりも特権が多い。Windows(登録
商標)95は、リング0およびリング3のみを使用す
る。
【0026】Windows(登録商標)95では、VxDは
32ビット・プロテクト・モード・モジュールであり、
コンピュータのハードウエア装置を管理し、ソフトウエ
アに対応することによって、装置に独立のVMMをサポ
ートする。VxDは、直接メモリ・アクセス(DMA)
素子、IDEコントローラ、シリアル・ポート、パラレ
ル・ポート、キーボード、およびビデオ・カード・アダ
プタを含む、典型的なコンピュータ・システムC内のハ
ードウエア装置全てに対応する。VxDは、プログラム
可能な処理モードを有する、即ち、任意の時間期間にわ
たってデータを保持するあらゆるハードウエア装置に必
要なものである。即ち、多数の仮想マシーンまたはアプ
リケーション間で切り替えることによって、ハードウエ
ア装置の状態を変化させることができれる場合は、この
装置は常に対応するVxDを備える必要がある。
【0027】Windows(登録商標)95は、ユーザがカ
スタムVxDをインストールできるようにすることによ
って、ハードウエア装置の追加を支援する。また、Vx
Dがソフトウエアを支援することも許されているが、対
応するハードウエア装置については許されていない。
【0028】モデム・ソフトウエア 次に図5を参照すると、本発明によるコントローラのな
いモデムを実施したWindows(登録商標)95オペレー
ティング・システムの様々なソフトウエア構成が示され
ている。モデム・ソフトウエアは、モデムを使用したい
アプリケーションとモデム自体との間に介在するソフト
ウエア・レイヤとして組織されている。Windows(登録
商標)95は、Windows(登録商標)3.xおよびDOS
に対して、上位互換性がある。ここに開示する実施例に
よるモデムでは、したがって、Windows(登録商標)9
5の32ビット・アプリケーション100、Windows
(登録商標)3.xの16ビット・アプリケーション1
02、およびWindows(登録商標)95のDOSアプリ
ケーション104全てに対応する。これらのアプリケー
ションは全てリング3で実行し、各々多少異なる方法
で、モデム・モジュール114とのインターフェースを
行う。
【0029】32ビット・アプリケーション100で
は、サービス要求は、VCOMM.386 108、仮想
通信ドライバによって処理される。VCOMM.386
108は、プロテクト・モードが高速データ・ポートお
よび従来のRS−232シリアル・ポート(COMポー
ト)に対応できるようにする。VCOMM.386 10
8は、通信装置への全てのアクセスを管理し、128個
のシリアル・ポートまで対応可能である。
【0030】VCOMM.386 108は、Windows
(登録商標)95オペレーティング・システムに用いら
れている標準的なモジュールの1つであり、本発明によ
れば不変のままである。その様々なインターフェース・
プロトコルは、当業者にはよく知られている。
【0031】Windows(登録商標)3.x用16ビット・
アプリケーション102の場合、かかるアプリケーショ
ンはWindows(登録商標)95アーキテクチャを使用す
ることができないので、多少異なる実行経路が必要とな
る。Windows(登録商標)3.x用に書かれた通信用ソフ
トウエアは、Win16Comm API(図示せず)
を用いてサービスを要求することを基本とし、また、Wi
ndows(登録商標)95の別の標準的なモジュールであ
る、通信ドライバCOMM.DRV106とインターフ
ェースすることも念頭においている。COMM.DRV
106は、1組のエクスポート機能(exported functio
n)を備えており、アプリケーションがこれをコールして
Windows(登録商標)の通信APIを実施する。Windows
(登録商標)95では、COMM.DRV106はいず
れの特定通信ハードウエアとも連結されておらず、Wind
ows(登録商標)の以前のバージョンにおいて行われた
ように、交換されていない。COMM.DRV106
は、VCOMM.386 108を物理ポートであるかの
ように、直接これと通信することによって、通信資源に
アクセスする。
【0032】Windows(登録商標)3.x用アプリケーシ
ョン102および32ビット・アプリケーション100
では、VCOMM.386 108は、CPQFMW9
5.VXD112とインターフェースを行う。CPQF
MW95.VXD112は、仮想ポート・ドライバであ
り、直接VCOMM.386のサービスをコールするこ
とができ、あるいはVCOMM.386が通信ポートに
アクセスするために用いることができる。Windows(登
録商標)95では、VCOMM.386は、物理的ハー
ドウエアと通信するためには、仮想ポート装置ドライバ
を必要とする。CPQFMW95.XVD112は、こ
の仮想装置ドライバを提供するものである。しかしなが
ら、直接UARTと通信する代わりに、以下に述べるよ
うに、CPQFMW95.VXD112は、太線で表さ
れている仮想UARTを通じて、モデム・モジュール1
14と通信を行う。好適実施例では、仮想UARTはモ
デム・モジュール114内に含まれている。従来技術の
システムでは、UARTチップは、コンピュータ・シス
テムのCOMポートのハードウエア部分であり、実際に
CPUシステム10と、COMポートに取り付けられて
いるいずれかの装置との間で通信を行う。上述のよう
に、UARTは典型的にパラレル・データをシリアル化
して送信し、開始ビット、パリティ・ビットおよびスト
ップ・ビットを挿入し、シリアル・データを受信してパ
ラレル・データに変換する。物理UARTは、クロック
制御や構成可能レジスタを含む、様々な任意の機能を与
える。必要なUART機能は、好適実施例によるモデム
では、ソフトウエアで実現される。CPQFMW95.
VXDとモデム・モジュール114との間のインターフ
ェースの詳細については、図7と関連して以下で説明す
る。アセンブリ言語で書かれたそのソース・コードを添
付資料Aに示す。
【0033】また、モデム・モジュール114はモデム
・コードも含み、典型的に、モデム・コードは物理マイ
クロコントローラ内にプログラムされる。Windows(登
録商標)3.xとの互換性の理由で、モデム・モジュー
ル114は2つの部分、即ち、CPQFM19A.38
6 114aおよびCPQFM19B.386 114b
に分離されるが、Windows(登録商標)95のインプリ
メンテーションでは統合可能である。上述のように、モ
デム・モジュール114はオペレーティング・システム
には依存しない。モデム・モジュール114のデータ端
末機器(DTE:Data Terminal Equipment)部分は、デ
ータの供給または受信を行う送信線の端部に配置された
装置(即ち、コンピュータ、電話機、ファックス等)を
エミュレート(emulate)する。更に、モデム・モジュー
ル114のデータ通信機器(DCE)部分は、一般的に
モデムである、データ送信装置をエミュレートする。好
適実施例では、モジュール114のDTE部分およびD
CE部分間のシリアル・データ交換インターフェース
は、EIA(Electronic Industires Association)のR
S232C規格に従っている。
【0034】簡単にWindows(登録商標)95DOS用
アプリケーション104に言及すると、この場合も、デ
ータは異なる経路を通じてモデム・モジュール114に
達する。データは最初にCPQFMDB.VXD110
に移動する。これは、Windows(登録商標)95DOS
インターフェース、即ち「DOS box」において実
行するアプリケーション用の通信ハードウエアをシミュ
レートする、ポート仮想化VxDである。このソース・
コードを添付資料Bに示す。VCOMM.386に登録
した後、CPQFMDB.VXD110は、仮想ポート
・ドライバCPQFMW95.VXD112にデータを
再送出することが許される。CPQFMDB.VXD1
10およびCPQFMW95.VXD112間のインタ
ーフェースは図7により詳細に示されている。
【0035】モデム・モジュール114は、PCMCI
Aインターフェース26およびPCMCIAスロット接
続器28を通じて、モデム・カード30上のハードウエ
ア(特に、DSP58)に通信する。データ通信では、
モデム・モジュール114によってDSP58に送出さ
れた情報は、キャリア開始および停止コマンドと、送出
すべきデータとを含んでいる。モデム・モジュールは、
当業者には公知のモデムATコマンドを用いて、どのよ
うにしてデータをDSP58に送出するかを決定する。
データの受信後、DSP58はキャリア信号を発生し、
電話線を介してのデータを変調する。
【0036】モデム・モジュール114を実施するハー
ドウエアは、概略的に、従来技術のシステムにおいてマ
イクロプログラム40をプログラムするために使用する
ソフトウエアと同一である。これは、C言語のような高
水準コードで書くことができ、種々のプロセッサ間での
移植を可能にする。更に、モデム・モジュール114が
元々マイクロコントローラ40のためにC言語で書かれ
たものである場合、これを単純にコンパイルし直すこと
によって、本発明によるモデム・モジュール114とし
て使用することができる。
【0037】マイクロコントローラ40用のコードは、
当技術分野では一般的によく知られている。これは、R.
Scott & Associatesのような多数の供給元から入手可
能である。通常これは高水準言語で書かれているので、
様々なマイクロコントローラ40で使用可能である。し
かしながら、図2のマイクロコントローラ40を参照す
ると、マイクロコントローラ40に使用されているコー
ドはUART46およびDSP58との通信を念頭に入
れていることを、理解しなければならない。本発明によ
れば、UART46は、代わりに、添付資料Cに含まれ
る「仮想」コードとして実施されている。したがって、
「貼り付け」インターフェース(glue interface)がマイ
クロコントローラ40には必要となるので、ハードウエ
アのUARTではなく、その代わりにソフトウエア・ル
ーチンと通信し、UART46、およびコンピュータ・
システム自体に通常存在するUARTを仮想化する。こ
の「貼り付け」ルーチンも添付資料Cに示している。こ
れらのルーチンも、PCMCIAインターフェースを通
じて、PCMCIAモデム・カード30と通信するため
に使用される。
【0038】DSP58によって発生されるハードウエ
ア割り込みは、割り込みハンドラVPICD.386 1
16を通じて、仮想ポート・ドライバCPQFMW9
5.VXD112に伝達される。VPICD.386 1
16は、標準的なマイクロソフトのVxDであり、シス
テムがブートされると直ちにインストールされる。ポー
ト・ドライバは、キューを用いて入出力処理を行うべき
ときには、このような割り込みハンドラをインストール
しなければならない。
【0039】本発明にしたがって実施されたWindow(登
録商標)3.1の様々なソフトウエア構成を描いたブロ
ック図が図6に示されている。モデム・ソフトウエア
は、Window(登録商標)3.1およびWindow(登録商
標)3.1DOS用アプリケーション102、104と
実装されたモデム・カード30との間に挿入されたソフ
トウエア・レイヤとして組織されている。
【0040】DOSアプリケーション104では、読み
出しおよび書き込みは、ポートに依存し、CPUシステ
ム10によって受信され、CPQFMVCD.386 1
22に転送される。CPQFMVCD.386 122
は、DOSおよびWindow(登録商標)3.1用アプリケ
ーションを処理する、低レベル仮想通信ドライバ(Vx
D)である。CPQFMVCD.386 122は、ポー
ト仮想化VxD CPQFMDB.VXD110(図5)
の機能の内のいくつかを行うが、Window(登録商標)
3.1では、実際に物理ポートと通信するために、更に
ソフトウエアを含んでいる。Window(登録商標)95
は、図5に示すように、VCOMM.386108およ
びCPQFMDB.VDX110が提供する仮想インタ
ーフェースを、CPQFMW95.VXD112とモデ
ム・ソフトウエア114が一体で提供する実際の物理イ
ンターフェースから分離する。したがって、CPQFM
VCD.386は、データストリームを従来技術のモデ
ムまたはその他のシリアル・ポート装置に送出すること
ができるように修正することが好ましい。コントローラ
を含まないモデム30を使用しないDOS用アプリケー
ション104では、CPFMVCD.386 122は、
データストリームを取得し、COMBUFF.386 1
24(標準的なマイクロソフトVxD)を使用すること
により、それをバッファ記憶する。
【0041】コントローラを具備しないモデム30を必
要とするアプリケーションでは、データはCPQFMW
31.386 126を通じてバッファ記憶される。CP
QFMW31.386 126は、実際には、COMBU
FF.386 124コードの幾つかの部分を実現する。
CPQFMW31.386 126は、添付資料Dとして
含まれている。次に、データはモデム・モジュール11
4に供給され、続いてモデム・ハードウエアに送出され
る。全てのシリアル・ポート・データは、CPQFMV
CD.386 122を通過する。CPQFMVCD.3
86 122は、CPQFMW31.386 126レジ
スタとの通信を可能にするルーチン・コールを有する。
ここに開示する実施例では、CPQFMVCD.386
122は、マイクロソフトのVxDであり、CPQFM
W31.386 126を認識するように、多少修正され
たものである。CPQFMVCD.386 122および
CPQFMW31.386 126間の通信は、図8Aお
よび図8Bにより詳しく示されている。
【0042】しかしながら、モデム・モジュール114
は、図6のWindows(登録商標)3.1のインプリメンテ
ーションおよび図5のWindows(登録商標)95のイン
プリメンテーションの双方において同一である。即ち、
モデム・モジュール114内部の仮想UARTと通信す
る仮想装置ドライバのみが異なるに過ぎないものであ
る。Windows(登録商標)95では、CPQFMW95.
VXD112(追加資料A)を用いて、モデム・モジュ
ール114の仮想UARTコードとの通信を行ってい
る。Windows(登録商標)3.1バージョンでは、モデム
CPQFMW31.386 126がこの役割を行うと想
定する。
【0043】Windows(登録商標)3.1用アプリケーシ
ョン102では、通信はWindows(登録商標)プロテク
ト・モードAPI SSCom.drv120によって処
理される。SSCom.drv120は、ソフトウエア
・フック(software hook)を使用することにより、CP
QFMVCD.386 122にデータを渡す。その後、
データは、DOS用アプリケーションに用いたのと同じ
経路に従って移動する。
【0044】CPQFMCFG.EXE130は、隠れ
(hidden) Windows(登録商標)アプリケーションであ
り、Windows(登録商標)3.1と共に起動される。CP
QFMCFG.EXE130はカード・サービス132
に登録される。カード・サービス132は、ソケット・
サービス(製造者に依存するPCMCIAカード伝達す
る方法)への高水準インターフェースである。PCMC
IAカード30を挿入すると、カード・サービス132
は、当該カードが本発明によるコントローラのないモデ
ム・カード30であるか否か調べる。その場、CPQF
MW31.386126をコールし、準拠するカードが
実装されたことを知らせる。すると、CPQFMW3
1.386 126は、CPQFMVCD.386 122
に対して、後続のモデム・データをモデム・モジュール
114に向けるよう指令する。QUEUES134は、
SSComm.drv120およびCPQFMW31.3
86126間で通信されるデータをバッファ記憶するた
めに用いられる。
【0045】仮想化UARTは、CPQFMW31.3
86およびモデム・モジュール114間の太線で表され
ている。VPICD.386 116、モデム・モジュー
ル114、およびその他のシステム構成要素は、本質的
に、図5に関して論じたものと同一の機能を行う。
【0046】図7を参照すると、CPQFMW95.V
XD112およびモデム・モジュール114のインター
フェースが詳細に示されている。上述のように、割り込
みハンドラVPICD.386 116は、DSP58か
らのハードウエア割り込みをCPQFMW95.VXD
112に伝達する。更に、仮想UARTからの「仮想」
割り込みも、最終的には、割り込みハンドラVPIC
D.386 116を通過する。図示したのは、CPQF
MW95.VXDに結合されているモデム・モジュール
114内の仮想UARTの受信データ・レジスタ内に入
りつつある受信データの場合である。その場合、「割り
込み」は、CPQFMW95.VXD112内の直列割
り込みサービス・ルーチンに、モデム・モジュール11
4の同じ仮想UARTの別のレジスタの中にある、割り
込みソースを検査させる。この割り込みソースに基づい
て、割り込みルーチンは、割り込みサービス・ジャンプ
・テーブル112aに基づき、データを入手可能なルー
チンにジャンプする。このルーチンは、モデム・モジュ
ール114内の仮想UARTから、データを読み込まな
ければならない。
【0047】標準的なUARTサービス・ドライバが、
どのようにして物理UARTからこのデータを読み込む
かについて考慮しなければならない。通常、x86アセ
ンブリ言語の"IN"処理は、適切な入出力位置から実行
される。これは、リング0で行うことができる。リング
0では、図7のコードが動作するが、この場合は、読み
出すべきUARTは仮想UARTである。したがっ
て、"IN"処理を実行する代わりに、CPQFMW9
5.VXD 112のソース・コードは、各”IN"命令を
マクロで置き換える。このマクロは、インライン・コー
ド(in-line code)をコンパイルし、"IN"処理を実行す
る代わりに、CPQFMW95.VXD112に結合さ
れている仮想UART内の適切なルーチンをコールす
る。UARTへの書き込み処理については、対応する"
OUT"入出力処理が同様のマクロで置き換えられる。
【0048】このように、"IN"および"OUT"入出力
命令を対応するマクロで置き換えることによって、標準
的な物理UART仮想装置ドライバをCPQFMW.V
XD112に使用することができる。図7のソフトウエ
ア相互作用の詳細は、図9〜図20のフローチャートに
示されている。
【0049】しかし、更に、モデム・モジュール114
は、オペレーティング・システム間において仮想的に不
変のままでいることが可能である。これは、単純に、オ
ペレーティング・システムの装置ドライバへの「仮想」
UARTインターフェースを表わし、装置ドライバを多
少修正して、物理的な入力または出力を行う代わりに、
そのインターフェースをコールする。しかし、仮想化イ
ンターフェースのために、これ以上装置ドライバに変更
を加える必要はない。UARTに伝達可能であれば、仮
想化UARTにも伝達可能である。
【0050】PCMCIAカード30に対するモデム・
コントローラ114のインターフェースは、標準的なP
CMCIAインターフェースを介して行われる。モデム
・モジュール114のこの部分は、モデム・モジュール
114の残りの部分から分離され、ハードウエア・イン
ターフェースにおける変更を一部分に制限できるように
することが好ましい。このインターフェースのソース・
コードを添付資料Eに示している。
【0051】モデム・モジュール114はまた、実際の
システム割り込み、特に、VPICD.386 116に
よる、PCMCIAカード30自体のDSP58からの
割り込みからも分離することが好ましい。このようにす
れば、モデム・モジュール114は、割り込みソースの
ハードウエア構成には依存しない。更に、モデム・モジ
ュール114は、10ms毎にコールし、DSP58と
の通信を維持するために必要得なデータ処理を実行でき
るようにするが好ましい。
【0052】図8Aおよび図8Bは、本発明によるモデ
ムがコンピュータ・システム内にインストールされてい
るか否かを判定するために、CPQFMVCD/386
122が使用するルーチンを示している。まず図8A
を参照すると、制御は、ルーチンVCD_DISPAT
CH_IO200で開始し、これは捕獲されたI/Oに
続いている。このルーチンは、CPQFMVCD.28
6 122ソフトウエア内に含まれている。制御は、次
にステップ202に移行し、VCHD_DISPATC
H_IOをコールする。これは、CPQFMW31.3
86 126モジュール内に含まれている。ルーチン
(図8B)は、最初に、コントローラのないモデム・ポ
ートを捕獲したか否かについて判断を行う。捕獲したな
らば、コントロールはステップ214に移行し、キャリ
ー・フラグをクリアする。捕獲しなかったならば、制御
はステップ216に移行し、キャリー・フラグをクリア
する。いずれの場合でも、制御は次にステップ218に
移行し、VCD_DISPATCH_IO200に戻
る、すなわちリターンする。
【0053】このリターンに続いて、制御はステップ2
04に移行し、キャリー・フラグのステータスを検査す
る。キャリー・フラグがセットされている場合、制御は
ステップ206に移行し、I/Oコールは従来のように
実行される。キャリー・フラグがVCHD_DISPA
TCH_IO200によってセットされなかった場合、
コントローラを具備しないモデムI/Oとして、データ
・コールを行う。ステップ206または208のいずれ
かに続いて、制御は次にステップ210に移行しリター
ンする。
【0054】このソフトウエア・モジュールの構成を用
いて、従来のRS−232COMポートまたはISDN
ライン、更に次世代のパラレル・ポート・モデム上でも
動作するモデムに対応可能とすることが考えられる。
【0055】本発明によって実現されるモデムは様々な
マイクロコントローラを含み、UART機能は仮想化さ
れたモデム・モジュールにおいて実現されることが明ら
かであろう。このソフトウエア・インプリメンテーショ
ンの結果、大幅な経済的節約およびデータ・レートの上
昇がもたらされる。更に、マイクロコントローラおよび
UART機能は、他のオペレーティング・システム・ソ
フトウエアからは独立したモジュールとして実施するこ
とにより、マイクロコントローラやUARTの仮想化バ
ージョンを他のオペレーティング・システムに容易に移
植(port)できるようにすることが好ましい。
【0056】コントローラの無いモデムのモジュール化 再び図5、図6および図7を参照すると、本発明による
コントローラのないモジュールの機能分散が示されてい
る。図5および図6におけるCPQFMW31.386
126モジュールおよびCPQFMW95.VXD11
2モジュールは、仮想装置ドライバの異なる例示であ
り、それぞれ、前者はWindows(登録商標)3.1オペレ
ーティング・システムと互換性があり、他方はWindows
(登録商標)95オペレーティング・システムと互換性
がある。これらの装置ドライバがそれぞれ対応するオペ
レーティング・システムに合わせなければならないイン
ターフェースは異なるが、通常、これらは、UARTに
アクセスしなければならない種々のシステム構成要素お
よびUART自体間のソフトウエア・レイヤを形成する
ように書かれている。このために、これらの仮想装置ド
ライバは、他のシステム・ソフトウエアによってコール
された場合、通常、当該UARTのI/Oポートと対象
とする一連の入出力動作を通じて、物理UARTにアク
セスする。装置ドライバを種々のオペレーティング・シ
ステムに対して書くことは公知であるが、一旦標準的な
装置ドライバを新しいオペレーティング・システムのた
めに書いたなら、そのコードを変えなくても済むことが
望ましい。
【0057】しかし、本発明によるコントローラの具備
しないモデムでは、物理UARTは勿論存在しない。し
かしながら、各オペレーティング・システムに対して、
UARTに対する広範な装置ドライバは存在する。本発
明によれば、この大量のコードを破棄したり、あるいは
それを修正してモデム・モジュール114自体に統合す
る代わりに、モデム・モジュール114および仮想装置
ドライバ間のインターフェースが、「仮想」UARTの
形態を取っている。このように、標準的な仮想装置ドラ
イバを使用し、僅かな修正のみで、新たなシステムが実
施されたモデム・モジュール114と通信可能となる。
モデム・モジュール114は「仮想」UARTを含むの
で、これらの仮想装置ドライバに必要な実際の変更は、
物理UART自体への実際の入出力動作ではなく、それ
らの入出力処理を、「仮想UART」へのコールという
形態の対応する「仮想」処理で置き換えるのみである。
【0058】したがって、オペレーティング・システム
の変更に対して、CPQFMW95.VXD112モジ
ュールに対応する適切なCPQFMW31.386 12
6モジュールを、僅かに修正するだけでよい。モデム・
ハードウエア30が変わらない場合、同一のモデム・モ
ジュール114は殆ど変更なく使用することができる。
逆に、DSP58のようなモデム・ハードウエアを変更
すると、モデム・モジュール114内の「仮想」マイク
ロコントローラに対する異なるコードを用いて、新たな
DSPにアクセスすることができる。
【0059】このモジュラー・ソフトウエア手法を用い
ると、新たなオペレーティング・システムへの移植がむ
しろ簡単になる。その新しいオペレーティング・システ
ムのための標準的モデムまたはUARTソフトウエアを
用いることができる。ソフトウエアは容易に入手可能で
あり、モデム・モジュール114の形態の仮想モデム・
コントローラを、単純に新たなオペレーティング・シス
テムに移植し、必要であれば、仮想装置ドライバへの
「仮想UART」インターフェースを有する別のCPU
システム10に再度コンパイルすることも可能である。
【0060】UARTの基礎 IBMPC互換コンピュータでは、UARTは基準ポー
トから始まる入出力アドレスに一連の標準ポートを有す
る。これらの入出力アドレスにアクセスするには、一般
に、x86命令セットにおける入出力命令を用いる。即
ち、これらのポートの1つから入力するために用いる命
令は"IN AL, DX"であり、DXレジスタによって
指定されるI/Oアドレスに位置するデータを、ALレ
ジスタに入力する。同様に、DXレジスタにおいて指定
されるポートにALレジスタ内のデータを出力するに
は、"OUT DX, AL"命令を実行する。
【0061】IBMPCにおいて用いられる標準的なU
ARTは8250、あるいはそれと互換性のある後発製
品の1つは、16450または16550である。該U
ARTにおける標準的なポートは以下の通りである。
【0062】
【表1】 レジスタ オフセット DLAB 受信バッファ・レジスタ(DAT) 00h 0 送信保持レジスタ(DAT) 00h 0 割り込みイネーブル・レジスタ(IER) 01h − 割り込み識別レジスタ(IIR) 02h − データ・フォーマット・レジスタ (ライン制御レジスタ) (LCR) 03h − モデム制御レジスタ(MCR) 04h − 直列化ステータス・レジスタ (ライン・ステータス・レジスタ)(LSR)05h − モデム・ステータス・レジスタ(MSR) 06h − スクラッチパッド・レジスタ(SCR) 07h − 除数ラッチ・レジスタ 下位ビット(DLL) 00h 1 除数ラッチ・レジスタ 上位ビット(DLH) 01h 1 DLAB=除数ラッチ・アクセス・ビット(LCRにある) これらのレジスタに書き込まれるデータまたはこれらか
ら読み出されるデータは、当技術では公知の標準的な意
味を有する。例えば、送信保持レジスタDATへの書き
込みを実行すると、後のシリアル・ラインを介しての送
信のために、データ・バイトが送信保持レジスタ内に配
置される。他の例として、ライン・ステータス・レジス
タLSRは、送信保持レジスタ空ビットTHRE、送信
シフト・レジスタ空ビットTSRE、中断検出ビットB
RKI、フレーミング・エラー・ビットFRMR、パリ
ティ・エラー・ビットPARE、オーバーラン・エラー
・ビットORRE、および受信データ入手可能ビットR
DRIのようなデータ・ビットを備えている。
【0063】CPQFMW31.386 126モジュー
ルやCPQFMW95.VXD112に類似した標準的
な装置ドライバは、通常、入出力命令を用いて、これら
I/Oポートにおけるこれらのハードウエア・レジスタ
に直接アクセスする。本発明によれば、仮想的に、これ
ら仮想装置ドライバに対する1回の変更は、各"INA
L,DX"および"OUT DX, AL"命令を、対応する
マクロ命令"INALDX"および"OUTDXAL"と置
き換えることである。これらのマクロは、コンパイルさ
れると、16450UARTへのレジスタ・アクセスを
シミュレートする、貼り付けロジックへのコールを行
う。このロジックは、て添付資料Cの中のSIM 450.
Cルーチンにあり、図13〜図20と関連付けて以下で
更に詳細に説明する。この貼り付けロジックは、標準的
物理UARTへの標準的入出力命令の同一のパラメータ
を受け、対応する同一データを返送する。したがって、
通常にはハードウエアUARTにアクセスする標準的装
置ドライバを使用することができるが、代わりに、モデ
ム・モジュール114のSIM 450.C仮想UARTイ
ンターフェースを介することになる。
【0064】この仮想UARTインターフェースの動作
に移る前に、仮想装置ソフトウエア・モジュール11
2、126、およびモデム・モジュール114に対する
いくつかの別の細かい改造について認識すべきであろ
う。まず、モデム・モジュール114が図2に示したそ
れ自体の専用マイクロコントローラ40に予め実現され
ていた場合、マイクロコントローラ40は他の機能を有
さないので、実質的に連続して動作することができる。
ここでは、モデム・モジュール114は、他の仕事を有
するCPUシステムによって実行されるように実現され
ているので、モデム・モジュール114は、その必要な
機能を遂行した後は、代わりに制御を放棄しなければな
らない。このために必要となることは殆どなく、モデム
・モジュール114が、保持ループに進むのではなく、
確実にオペレーティング・システムにリターンすること
だけである。
【0065】モデム・モジュール114は周期的にオペ
レーティング・システムに戻らなければならないので、
その所望の機能を実行するために、オペレーティング・
システムも周期的にモデム・モジュール114をコール
しなければならない。これは、通常、オペレーティング
・システム自体の内部で、タイマ・ソフトウエアによっ
て行われる。即ち、周期的にモデム・モジュール114
をコールし、その所望の機能を遂行するようにするに
は、標準的なタイマ装置が必要となる。これを達成する
には、2通りの方法がある。第1に、モデム・モジュー
ル114をタイマによって周期的にコールする。第2
に、DSP58は周期的にモデム・モジュール114に
よるサービスを要求するので、DSP58がVPIC
D.386 116モジュールに割り込みを供給し、これ
によって、モデム・モジュール114および仮想装置モ
ジュール112または126の双方を実行させる。
【0066】標準的なUART仮想装置の変更 図9および図10に移ると、これらの図は、モデム・モ
ジュール114にアクセスする際に、CPQFMW9
5.VXD112モジュール内部で実行される標準的な
ルーチンのフロー・チャートの一例を示している。PP
ORTOPENルーチン300が例示のために提示され
ている。このルーチン300は、通常、VCOMM.3
86 108モジュールやCPQFMDB.VXD110
モジュールのような、オペレーティング・システム・ソ
フトウエア内部の他のルーチンによってコールされる。
勿論、CPQFMW95.VXD112モジュール内部
には他にも多数のルーチンが存在し、これらはオペレー
ティング・システム内の他のルーチンによってコールさ
れる。これら種々のモジュールはUARTにアクセスし
て、シリアル装置との間のデータ送信および受信を行う
と共に、UARTの制御を行う。しかし、この例示のル
ーチン300は、物理的なコールがいかにして仮想コー
ルと簡単に交換されるかを示すものである。
【0067】ステップ302から開始し、ルーチン30
0は、ポートが存在するが未だにオープン状態でないか
否かを判定する。虚の場合、制御はステップ304に移
行し、ポートが存在しないか、あるいはポートが未だオ
ープン状態でないので、ルーチンはリターンする。そう
でなければ、制御はステップ302からステップ306
に移行し、このポートに対するデータ構造を確立する。
次に、ステップ308に移行し、オープンしたいシリア
ル・ポートのポート基準アドレスにオフセットの03h
を加えたものを、EDXレジスタにロードする。このオ
フセットは、標準的な8259、16450、1655
0UARTに対する、ライン制御レジスタLCRポート
のオフセットに対応する。したがって、EDXレジスタ
は、この時点で、LCRポートからの入力のための適切
なポート・アドレスを有することになる。
【0068】ステップ310に移行し、"INALD
X”ルーチン350を実行する。図11と関連付けて以
下で論ずるが、このルーチンは、実際には、仮想UAR
Tインターフェース内の適切な貼り付けロジックをコー
ルする、拡張インライン・コードを形成するマクロであ
ることが好ましい。一方、仮想UARTインターフェー
スはモデム・モジュール114をコールする。ステップ
310において、"INALDX"マクロは、x86プロ
セッサの"IN AL,DX"命令を用いて物理的なUAR
Tライン制御レジスタLCRから読み出した場合と全く
同じ機能を実行する。より具体的には、ALレジスタに
は、この時点で「仮想」ライン制御レジスタLCRから
のデータ入力が含まれている。ステップ312に移行
し、ALレジスタの高位ビットをセットする。これは、
ライン制御レジスタLCRの除数ラッチ・アクセス・ビ
ットDLABに対応する。次に、ステップ314に移行し、
対応する"OUTDXAL"マクロを実行し、本発明によ
る「仮想」UARTのライン制御レジスタLCR内のD
LABをセットする。制御は次にステップ316に移行
し、基準ポート・アドレスに00hを加えたものを、E
DXレジスタにロードする。これは、除数ラッチ下位ビ
ット・レジスタDLLに対応する。ステップ318にお
いて、INALDXマクロを実行し、仮想UARTから
除数ラッチ低位バイトDLLに読み込む。ステップ32
0において、ALレジスタをセーブし、基準ポートアド
レスに01hを加えたものをEDXレジスタにロードす
る。これは、除数ラッチ上位バイトDLHに対応する。
ステップ322に移行し、INALDXマクロを用いて
このバイトを読み込む。次に、ステップ324に移行
し、除数ラッチの下位および上位バイトを組み合わせ、
格納する。ステップ326において、元のライン制御レ
ジスタLCR入力値をALにロードする。次にステップ
328に移行し、OUTDXALマクロを実行し、ライ
ン制御レジスタLCRをその元の値に復元する。即ち、
元々ディゼーブルされていたのであれば、DLABをディゼ
ーブルする。次にステップ330に移行し、他の設定を
実行する。
【0069】この一連の命令の要点は、モデム・モジュ
ール114内に配置された仮想UARTが、あたかも実
際のUARTであるかのように、同じくアクセスされる
ことである。前述のシーケンスは、除数ラッチに適切な
値をセットするために実行され、実際にボー・レートを
セットした。データは仮想的に瞬時にモデム・モジュー
ル114と、仮想UARTを通じてこのソフトウエアを
コールしたいずれかの装置ドライバとの間で転送される
ので、仮想UARTには「ボー・レート」は事実上ない
ことを考慮しなければならない。しかし、標準的なUA
RT装置ドライバは、ボー・レートをセットしアクセス
可能であることを念頭に入れているので、仮想UART
は、実際には何も行わなくても、仮想除算ラッチ・バイ
トへのアクセスを与える。このように、既存のハードウ
エアUART装置ドライバを変更し、モデム・モジュー
ル114の仮想UARTと共に使用可能とするのは容易
である。
【0070】ルーチンを完了するために、制御は次にス
テップ332に移行し、ここでエラーが検出されたな
ら、制御はステップ334に移行し、ルーチンはリター
ンする。エラーがなかった場合、制御は代わりに332
からステップ336に移行し、ポート基準アドレスにモ
デム制御MCRに対する適切なオフセットを加えたもの
を入力する。次に、そのデータのOUTZビットをイネ
ーブルし、ステップ338においてOUTDXALマク
ロを用いて出力する。次に制御はステップ340に移行
し、割り込み要求ラインIRQを非マスク(unmask)する
ためにコールを行う。以下で論ずるが、仮想UARTも
適切なオペレーティング・システム割り込みサービス・
ルーチンへの「仮想」割り込みを発生する。ステップ3
40から移行して、次に制御はステップ342でリター
ンする。
【0071】図11に移ると、2つのマクロ・ルーチン
INALDX350およびOUTDXAL360が示さ
れている。INALDXルーチン350は、マイクロプ
ロセッサのX86シリーズ上の標準IN AL, DX命
令の代わりとなる。一方、OUTDXALルーチン36
9は対応して、OUT DX, AL命令の代わりとな
る。これらはコール可能なルーチンではないが、代わり
にマクロであり、CPQFMW95.VXD112モジ
ュール、CPQFMDB.VXD110モジュール、お
よび図6における対応するルーチンにおいて、インライ
ンでアセンブルされる。INALDXルーチン350お
よびOUTDXALルーチン360は、実際には、貼り
付けロジックへのコールを、標準的な入出力命令と交換
する。
【0072】INALDXルーチン350はステップ3
52から開始し、ここで変更されたレジスタを全てセー
ブする。ステップ354に移って、貼り付けルーチンV
IPD1_REG_READに仮想装置ドライバ・コー
ルを行う。このルーチンについては、以下で図12に関
連付けて更に論ずるが、DXレジスタの物理アドレスを
はぎ取り、オフセットを残し、次に仮想UARTルーチ
ンをコールする。このルーチンについては、図13〜図
20に関連付けて以下で論じる。
【0073】ステップ356に移行し、レジスタを復元
し、ステップ354におけるコールの結果をALレジス
タに格納する。次に、ステップ358において、インラ
イン・マクロを実行し、他のコードが実行し続けるよう
にする。
【0074】OUTDXALルーチン360も同様に動
作し、ステップ362から開始して、ここでレジスタを
格納する。次に、制御はステップ364に移行し、貼り
付けロジック・ルーチン(図12参照)、即ち、VIP
D1_REG_WRITEをコールする。次に、制御は
ステップ366に移行し、レジスタを復元し、ルーチン
はステップ368において完了する。
【0075】INALDXルーチン350およびOUT
DXALルーチン360を、単に適切なI/O処理と置
き換えれば、種々の装置ドライバは、事実上変更なく、
ハードウエアのUARTと共に通常に動作することが理
解されるであろう。
【0076】図12に移ると、VIPD1_REG_R
EADルーチン370およびVIPD1_REG_WR
ITEルーチン380が示されている。これらのルーチ
ンは、図11のステップ354および364でコールさ
れ、実際には、モデム・モジュール114の仮想UAR
Tおよびオペレーティング・システムの残りの部分間を
橋架するための貼り付けロジックである。VIPD1_
REF_READルーチン370はステップ372から
開始し、ここでDXレジスタ内のアドレスと07hとの
二進AND演算を行い、物理アドレスをはぎ取り、標準
的なUARTの適切なポートにオフセットを残す。
【0077】ステップ374に移行し、VIPD1_R
EG_READルーチン370は、ルーチンSIM45
0_READ400をコールする。仮想UARTのIM
450_READルーチン400は、16450UAR
Tのポートからのリードをシミュレートする。このルー
チン400は、仮想UARTの適切な「ポート」からの
「リード」を実行する。ステップ376に移行し、VI
PD1_REG_READルーチン370は、それをコ
ールしたINALDXルーチン350(図11)のマク
ロ・インライン・コードにリターンする。
【0078】VIPD1_REG_WRITEルーチン
380も同様に動作する。ステップ382から開始し、
07hとの二進AND演算によって、DXレジスタから
アドレスをはぎ取る。次に、ステップ384に移行し、
SIM450_WRITEルーチン500をコールし、
仮想UARTの「ポート」への「ライト」を実行する。
次いでステップ386に移行し、VIPD1_REG_
WRITEルーチン380は、それをコールしたOUT
DXALルーチン360のインライン・コード(図1
1)にリターンする。
【0079】VIPD1_REG_READルーチン3
70およびVIPD1_REG_WRITEルーチン3
80は、添付資料Cのソース・コードに示されている。
INALDXルーチン350およびOUTDXALルー
チン360は、例えば、添付資料Aのソース・コードの
中のマクロとして示されている。これらのフローチャー
トは全て例示的なものであり、更なる詳細は添付資料の
ソース・コードの中で見ることができる。
【0080】仮想UARTのリードおよびライト・ルー
チン 図14および図15に移ると、SIM450_READ
ルーチン400が示されている。これは、VIPD1_
REG_READルーチン370(ステップ12)のス
テップ374でコールされる。SIM_450READ
ルーチン400の詳細に移る前に、いくつかの表記上の
慣例について説明する。SIM450_READルーチ
ン400のみで用いるデータは、通常1つの構造の中に
格納される。これは、添付資料Cとして添付したソース
・コード・リストとして添付した、SIM450.Hお
よびSIM450.Hモジュール内に配置されている、
そのルーチンのソース・コードの中で見出すことができ
る。主要なデータ構造はSIM450_DATA構造で
あり、この中では、従来のCプログラム表記を用いて、
ある構造の中に変数を格納する。例えば、「仮想」スク
ラッチパッド・レジスタの内容は、SIM450_DA
TA/SCRATCH変数の中にある。このデータ構造
への各参照への序文(preface)としてのリス
ト”SIM450_DATA”ではなく、短縮表記を用
いているので、SIM450_DATA.SCRATC
H変数は、単純に.SCRATCH変数となる。
【0081】更に、明確化のために、SIM450_R
EADルーチン400のフローチャートからは、ある種
の詳細を省いてある。具体的には、SIM450_RE
ADルーチン400は、モデム・モジュール114自体
の内部に実施されている一連のコールを通じて、モデム
・モジュール114と通信を行う。モデム・モジュール
114は、多数の「フック」を含み、これが、異なるタ
イプのソフトウエア・インターフェースとの様々な方法
での通信を可能にする。このように、再び図2を参照す
ると、モデム・モジュール114は、マイクロコントロ
ーラ40内に実施されUART46と通信を行うことが
でき、あるいは、代わりにその貼り付けルーチンを通じ
て様々な他のタイプの装置と通信を行うことができる。
モデム・モジュール114に対する「フック」は、種々
の制御パラメータの設定、およびデータの送受信の双方
をコールする多数のソフトウエア・コールを含む。通
常、データは、SIM450.Cモジュール自体によっ
て維持されているデータ・アレイとの間で送受信が行わ
れる。これらのルーチン各々について詳細に論ずる代わ
りに、これらのルーチンのいくつかを概略的に論じて、
いかにしてこれらがSIM450.Cモジュールとイン
ターフェースするのかについて説明する。
【0082】モデム技術に精通する者には認められよう
が、モデム・モジュール114は、典型的に、電話線を
通じてSIM450コードとの間で送受信されるデータ
を通信するためのコードを含むが、更に、標準的なHa
yes”AT”コマンド・セットを実施する制御ソフト
ウエアも含む。即ち、モデム・モジュール114が送受
信モードにあるとき、実際のデータは電話線を通じて送
受信される。このモードは、典型的に、ユーザが3つの
連続する「+++」記号、即ち、標準的な”AT”エス
ケープ・シーケンスを入力することによって終了する。
これによって、モデム・モジュール114は制御モード
に入る。そのモードでは、モデム・モジュール114
は、コンピュータ自体からの”AT”コマンドに応答す
るが、遠隔通信リンクを介してのデータ通信は行わな
い。
【0083】モデム・モジュール114によって実施さ
れた1つのタイプの通信モードにフロー制御モードがあ
り、このモードでは、いずれかのソフトウエア・コード
を用いて、モデム・モジュール114へのデータ伝送を
開始および終了するか、あるいはハードウエア・フロー
制御モデルを用いる。後者の場合、送出消去ビット(cl
ear to send bit)CTSおよび送出レディ・ビット(r
eady to send bit)RTSを用いて、データを送出可能
かまたは受信可能かを示す。このコードは、SIM45
0.Cのフローチャートには示されていないが、添付資
料Cの中に添付されているSIM450.Cの中にあ
る。このコードをどのようにして組み込むかについて
は、容易に理解されるであろう。
【0084】SIM450_READルーチン400
は、一連のケース・ステートメントとして実行する。第
1のケースはステップ402から開始し、コールされた
値がスクラッチパッド・レジスタSCRのオフセットに
対応するときに、ここに制御が移る。標準的なUART
では、これは07hのポート・オフセットに対応する。
そうであれば、.SCRATCH 変数の内容を一時的
変数Bにロードする。次に、制御はステップ404に移
行し、ここでルーチンはB変数の内容をパラメータとし
て、リターンする。
【0085】シミュレートされたUARTの動作をより
よく理解するために、スクラッチパッド・レジスタのリ
ードに関連付けて、図9〜図14を簡単に検討する。所
望のポートの基準アドレスにスクラッチパッド・レジス
タSCRに対応するオフセットである07hを加えたも
のが、DXレジスタに含まれている状態で、INALD
Xルーチン350を実行すると仮定する。すると、IN
ALDXルーチン350はステップ354において、V
IPD1_REG_READルーチン370をコール
し、一方、このルーチンは、07hのオフセット以外の
全てをはぎ取り、ステップ374においてSIM450
_READルーチン400をコールする。次に、ステッ
プ402において、.SCRATCH 変数をその変数に
ロードし、ステップ404においてリターンする。次
に、INALDXルーチン350のステップ356にお
いて、このデータをALレジスタに格納する。このよう
にして、「仮想」スクラッチパッド・レジスタSCRか
ら「リード」が行われたことになる。
【0086】標準的なレジスタの残りのものも同様にし
てリードすることができる。SIM450_READル
ーチン400は、オフセットがモデム・ステータス・レ
ジスタMSRに対応する場合、ステップ406に移る。
この場合、ステップ406において、モデム・ステータ
ス・レジスタ.MSRの内容をB変数にロードする。こ
の変数は、仮想UARTのMSRレジスタの内容を含ん
でいる。ステップ408に移行し、.MSR変数のデル
タ・ビットをクリアする。これらのビットは、.MSR
変数の下位4ビットであり、.MSR変数を最後に読ん
で以来、データ・キャリア検出ビット(DCD)、リン
グ・インディケータ・ビット(RI)、データ・セット
・レディ・ビット(DSR)、または送出クリア(CT
S)ビット(これらは全て、.MSR変数の上位4ビッ
トにある)が変化したか否かを検出するために標準的な
UARTで使用されるビットに対応する。尚、これは標
準的なUARTの機能をシミュレートしたものであるこ
とは理解されるであろう。
【0087】ステップ410に移って、モデム制御レジ
スタ変数.MSRのLOOPビットを調べる。このビッ
トが真である場合、仮想UARTは、16450UAR
Tに対する標準的な動作形態である、ループ・バック・
モードにある。セットされていない場合、制御はステッ
プ404に移行し、SIMU450_READルーチン
400は、.MSR変数の内容と共にリターンする。ス
テップ410において.MCR変数のLOOPビットが
真である場合、制御は代わりにステップ412に移行
し、ここで、B変数に含まれている.MSR変数の下位
4ビット、および左シフトされた.MCR変数の下位4
ビットをBに格納する。.MCR変数のLOOPビット
がセットされると、これは、標準的UART内のモデム
・ステータス・レジスタMSRのリードに対して返送す
べき適切な値であるので、ステップ404においてこの
値を返送する。
【0088】ライン・ステータス・レジスタLSRから
の読み出しが行われると、制御はステップ400からス
テップ414に移行し、ステップ414においてライン
・ステータス・レジスタ変数.LSRの内容をB変数に
ロードし、次いで制御はステップ416に移行し、01
EhとのANDを取った.LSR変数の内容を.LSR変
数にロードし、適切なビットをマスクして、パリティ・
エラー・ビット、オーバーラン・エラー・ビット、およ
びフレーム・エラー・ビットをクリアする。次に、制御
はステップ418に移行し、EVALUATE_INT
ERRUPTルーチン600をコールし(図18および
図19)、次いでルーチン400はステップ400にお
いてリターンする。
【0089】EVALUATE_INTERRUPTル
ーチン418は、仮想「割り込み」を実行すべきか否か
について評価を行う。仮想割り込みは、図5および図6
の様々な装置ドライバ内に配置されている割り込みサー
ビス・ルーチンの1つへのコールによって起動される。
勿論、UARTからの真のハードウエア割り込みが使用
するための標準的な割り込みサービス・ルーチンもあ
り、このサービス・ルーチンは、したがって、「仮想」
割り込が必要な場合に、コールされる。EVALUAT
E_INTERRUPTルーチン600は、かかる仮想
割り込みを起動することが必要な適切な時にコールされ
る。例えば、標準的なUARTのライン・ステータス・
レジスタLSRを読むとき、追加データが得られ割り込
みがイネーブルされると、割り込みが実行されて、追加
データが実際に得られることを示す。これは、割り込み
を少なくとも評価し、割り込みを実行すべきかを判定す
る場合であり、EVALUATE_INTERRUPT
ルーチン600がこの評価を行う。
【0090】モデム制御レジスタMCRを読む場合、制
御はステップ400からステップ420に移る。ステッ
プ420において、モデム制御変数MCRの内容をB変
数にロードし、制御はステップ404でリターンする。
同様に、ライン制御レジスタLCRを読む場合、制御は
ステップ400からステップ422に移る。ステップ4
22において、ライン制御変数/LCRの内容をB変数
にロードする。次いで、制御はステップ404において
Bの内容を返送する。
【0091】割り込み識別レジスタIIRを読む場合、
ステップ420からステップ424に入る。ステップ4
24では、割り込み識別変数.IIRの内容をB変数に
ロードする。次に、制御はステップ426に移行し、B
変数(この時点では、.IIR変数の内容を収容してい
る)を定数ITHRと比較する。この定数は、送出保持
レジスタが空であるために生じた保留中の割り込み(pe
nding interrupt)に対応する。等しい場合、割り込み
識別レジスタIIRからのリードはこのタイプの割り込
みをクリアするので、この割り込みをクリアしなければ
ならない。これを行うために、中断送信空割り込み変
数.IIR_TXに0をロードする。これによって、E
VALUATE_INTERRUPTルーチン600に
おいてこの割り込みをクリアする。このルーチン600
は、ステップ428でコールされる。次いで、制御はス
テップ404においてリターンする。
【0092】割り込みイネーブル・レジスタIENを読
む場合、ステップ400からステップ430に入る。ス
テップ430において、最初に、ライン制御レジスタL
CRのDLABビットの内容を表わす、除算ラッチ・ア
クセス・ビット変数.CLABを検査することにより、
除算ラッチ・アクセス・ビットDLABがセットされて
いるか否か判定する。セットされていない場合、制御は
ステップ432に移行し、割り込みイネーブル変数.I
ENの内容をB変数にロードする。これを行うのは、除
算ラッチ・アクセス・ビットDLABがセットされてい
ないと、IENレジスタからのリードは、そのレジスタ
の通常の割り込みイネーブル値を戻すからである。次
に、制御はステップ404に移行し、ここでその値を返
送する。
【0093】ステップ430において、DLABがセッ
トされていると、制御はステップ434に移行し、ここ
で、除算ラッチ高変数.DLHの内容をB変数にロード
する。この変数はボー・レートの判定に用いられ、ここ
に開示する実施例では、厳密に維持することによって、
仮想UARTが、オペレーティング・システムには、標
準的なハードウエアUARTであるように見えるように
する。この場合も、これは、仮想UARTの「ボー・レ
ート」は、実際、プロセッサがいかに速く動作できても
よいからである。即ち、仮想UARTは人工的に通常の
UARTのボー・レートに下げることはない(可能であ
るとしても)。次に、制御はステップ404に移行し、
ここで除算ラッチの高位バイトが返される。
【0094】図14に移ると、ステップ400から入る
最後の選択肢がDATポートから読み込まれる。これ
は、DLABの設定に応じて、仮想UARTの受信バッ
ファまたは除数ラッチからデータを読み込むことを示
す。この処理はステップ436において行われ、DLA
Bがセットされているか否かを判定する。セットされて
いれば、制御はステップ438に移行し、除数ラッチ低
変数.DLLをB変数にロードする。除数ラッチ・アク
セス・ビットが真なので、これは適切な動作である。次
に、制御はステップ440に移行し、ここでSIM45
0_READルーチン400は、B変数にロードされた
値と共にリターンする。
【0095】ステップ436からは、DLABがセット
されていない場合、制御は代わりにステップ442に移
る。このステップは、受信データが入手可能な場合、S
IM450.Cコードで実施されている仮想UARTか
らその受信データを読み出すシーケンスの開始である。
ステップ442において、ライン・ステータス・レジス
タ変数.LSR内の受信データ・レディ・ビットRDR
Iをクリアする。これを行うのは、以下のステップで受
信バッファからデータを読み出すからである。入手可能
な受信データがそれ以上ない場合、続いてRDRIレジ
スタをセットするが、このリードは最初にそのRDRI
ビットをクリアする。ステップ444に移行し、EVA
LUATE_INTERRUPTルーチン600をコー
ルして、オペレーティング・システムに対して割り込み
を発生させるか否かを判定する。例えば、まだデータが
入手可能な場合、割り込みが発生する。
【0096】ステップ446に移行し、モデム・モジュ
ール114からの送信バッファ内のデータ量が0より大
きいか否かを判定する。0より大きい場合、モデム・モ
ジュール114から読む出すべきデータがあることを示
し、そうでなければ、モデム・モジュール114から得
られるデータがないことを示す。モデム送信バッファ・
カウント変数.TX_CNTが0より大きい場合、制御
はステップ448に移行し、モデムの送信アレイからの
データがB変数にロードされる。送信アレイは、モデム
・モジュール114から送信されたデータを収容する。
更に、.TX_CNT変数を減分し、モデム・モジュー
ル114からのデータが、送信機から読み出されたこと
を示す。
【0097】ステップ446から、送信カウント変数.
TX_CNTが0より大きい場合、モデム・モジュール
114から得られるデータがないことを示すので、制御
はステップ450に移行し、ここでNULL文字、即
ち、0がB変数にロードされる。次に制御は、ステップ
448および450の双方からステップ452に移る。
【0098】ステップ452において、.TX_CNT
変数が0と等しくない場合、モデム・モジュール114
から更にデータが得られることを示し、制御はステップ
454に移行し、ここで、ライン・ステータス・レジス
タ変数.LSR内の受信データ・レディ・インディケー
タ・ビットRDRIをセットし、EVALUATE_I
NERRUPTルーチン600へのコールによって、割
り込みを評価する。.TX_CNT変数が0に等しい場
合、ステップ452から、そしていずれの場合でもステ
ップ454から、制御はステップ440に移る。
【0099】図15〜図17には、SIM450_WR
ITEルーチン500のフローチャートが示されてい
る。このルーチンのソース・コードも、添付資料Cの中
のSIM450.Cソース・コード・リストに存在す
る。この場合も、明確化のために、フロー制御に関する
詳細の内あるものは省略されている。しかしながら、通
常、仮想装置ドライバが、対応するハードウエアUAR
T上のハードウエア・ポートへの出力を実行するときは
いつでも、SIM450_WRITEルーチン500を
代わりにコールする。
【0100】このルーチン500も、ケース・ステート
メントの形態で示されている。選択したポート・オフセ
ットがスクラッチパッド・レジスタSCRに対応する場
合、制御はステップ502に移行し、.SCRATCH
変数をVALUE変数に等しくセットし、図11のOU
TDXALマクロ360に示すように、パラメータをA
Lレジスタに転送する。制御はステップ502からステ
ップ506に移行し、SIM450_WRITEルーチ
ン500はそのコール元のルーチンにリターンする。コ
ール元のルーチンは、ここでは、VIPD1_REG_
WRITEルーチン380として示されている。
【0101】モデム制御レジスタMCRを対象とする書
き込みを行う場合、制御はステップ500からステップ
506に移行し、ここで、モデム制御レジスタ変数.M
CRをVALUEパラメータに等しくセットする。次
に、制御はステップ508に移行し、フロー制御を更新
する。これが必要となるのは、モデム制御レジスタ変数
MCRは、OUT2*、IYT1*、RST*、DTR
*のような多数のビット、およびフロー制御に影響を与
え得るその他のモデム制御を含むからである。
【0102】ステップ510に移行して、SIM450
_WRITEルーチン500は、EVALUATE_I
NTERRUPTルーチン600をコールする。これが
行われるのは、.MCR変数の値の変化のために、オペ
レーティング・システムのドライバ・コードへの割り込
み開始が必要な場合があるからである。次に、制御はス
テップ506においてリターンする。
【0103】I/Oライトがライン制御レジスタLCR
に対して意図したものである場合、制御はステップ50
0からステップ512に移る。ステップ512におい
て、.LCR変数にVALUEパラメータをロードし、
次に制御はステップ514に移行し、あらゆるパリティ
処理テーブルを更新する。これは、.LCR変数内部の
3つのビットが、パリティ無し、基数パリティ、偶数パ
リティ、マーク・パリティ、またはスペース・パリティ
のパリティ設定を対象としているからである。
【0104】ステップ514から、制御はステップ51
6に移行し、VALUE変数内にあるDLABビットが
セットされているか否かを判定する。真であれば、ステ
ップ518において、.DLAB変数を1に等しくセッ
トする。偽であれば、制御はステップ520に移行し、
ここで、.DLAB変数を0にセットする。したがっ
て、.DLAB変数は.LCR変数内のDLABビット
の現在値を反映する。ステップ520から、制御はステ
ップ522に移行し、ここで、.MCR変数のLOOP
ビットがセットされているか否かを判定する。セットさ
れていれば、ループ・バック・モードにあるので、制御
はステップ524に移行し、VALUEのSBRKビッ
トが真であれば、.LSRレジスタのBRKIビットを
真にセットする。セットされていなければ、.LSRレ
ジスタのBRKIビットは不変のままとする。即ち、仮
想UARTがループ・バック・モードにある場合、仮想
UARTの中断入力ビットを、仮想UARTの中断出力
ビットと対応するようにセットする。
【0105】ステップ518、522、524から、制
御は次にステップ526に移行し、EVALUATE_
INTERRUPTルーチン600をコールして、オペ
レーティング・システムがUART割り込みを実行すべ
きか否かを判定する。
【0106】図16に、他の状態を示す。書き込みがU
ART割り込みイネーブル・レジスタIENへの書き込
みに対応する場合、制御はステップ500からステップ
528に移行し、ここで、最初に.DLAB変数が真に
セットされているか否かを判定する。真にセットされて
いる場合、制御は530に移行し、ここで、除数ラッチ
高位バイト変数.DLHをVALUEパラメータに等し
くセットする。これを行うのは、DLABビットをセッ
トするとき、IENレジスタおよびDATレジスタに対
する読み出しおよび書き込みによって、除数ラッチがア
クセスされるからである。次に、制御はステップ530
からステップ532に移行し、ここで制御はコール元の
ルーチンにリターンする。
【0107】.DLB変数が真でない場合、制御はステ
ップ528からステップ534に移行し、割り込みイネ
ーブル・レジスタ.IENの空送信保持ビットETHR
を検査する。このビットが真の場合、送信保持レジスタ
(即ち、DAT)が空のときに割り込みが発生すること
を示している。このビットがセットされていない場合、
制御はステップ536に移行し、ここでVALUEパラ
メータのETHRビットを検査し、真であれば、制御は
ステップ538に移る。ステップ538において、ライ
ン・ステータス・レジスタ変数.LSR内の送信保持レ
ジスタ空ビットを検査する。セットされている場合、送
信保持レジスタが空であることに基づく割り込みがオン
になったところであり、送信保持レジスタは実際に空で
あるので、送信割り込みが発生することを示す。そし
て、制御はステップ538からステップ540に移行
し、ここで、割り込み中断割り込み識別レジスタ送信変
数.IRR_TXを1、即ち、真にセットする。
【0108】ステップ534ないし538およびステッ
プ540から、他の全ての状態の場合、制御はステップ
542に移行し、ここで、割り込み識別レジスタ変数.
IENをVALUEパラメータに等しくセットする。次
に、制御はステップ544に移行し、EVALUATE
_INTERRUPTルーチン600をコールする。ス
テップ540に達し、送信保持レジスタが空であり、空
の送信保持レジスタに基づく割り込みがオンになったこ
とに基づいて、割り込みが発生することを示した場合、
EVALUTATE_INTERRUPTルーチン60
0において、オペレーティング・システム・ソフトウエ
アに割り込みを発生させる。ステップ530、544か
ら、制御はステップ532に移行し、ここでリターンが
実行される。
【0109】書き込むべきUARTレジスタが送出デー
タ・レジスタDATである場合、制御はステップ500
からステップ546に移行し、ここで、除数ラッチ・ア
クセス・ビット変数.DLABを検査する。真であれ
ば、ステップ548において除数ラッチ低位ビット変
数.DLLに、VALUEパラメータをロードし、次い
でステップ532において制御はリターンする。
【0110】ステップ546において、.DLAB変数
がセットされていない場合、制御はステップ530に移
行し、モデム制御レジスタ変数.MCRのLOOPビッ
トを検査する。これがセットされている場合、ループ・
バック・モードにあることを示し、制御はステップ55
2に移行し、ここで、モデム・モジュール送信バッファ
・ルーチンへのバイトの入力PUT_TX_BYTE7
00を実行する。これについては、以下で図15を参照
しながら更に説明する。PUT_TX_BYTEルーチ
ン700は、送信バッファ内に1バイトを入力し、モデ
ム・モジュール114から仮想UARTに移動するに対
応することは理解されるであろう。したがって、バイト
を送信バッファに入力すれば、実際は、仮想UARTに
よって受け取られることになる。書き込むべきデータは
実際にループ・バック・モードのUARTによって読み
取られるので、ステップ552においてこれは適切であ
る。制御はステップ552からステップ532に移行
し、コール元のルーチンにリターンする。
【0111】ループ・バック・モードにない場合、制御
はステップ550からステップ544に移行し、ライン
・ステータス・レジスタ変数.LSR内の送信保持レジ
スタ空ビットTHREおよび送信シフト・レジスタ空ビ
ットTSREをリセットする。何故なら、これらのレジ
スタに書き込むデータのバイトを用意している最中であ
るからである。次に、制御はステップ556に移行し、
EVALUATE_INTERRUTルーチン600を
コールする。ステップ556から、制御はステップ55
8に移行し(図17)、モデム・モジュール受信バッフ
ァ・カウンタ.RX_CNTが最大値より小さいか否か
を判定する。小さければ、モデム・モジュール114の
受信バッファは、仮想UARTからの他のバイトを受け
る余裕がまだあることを示す。このバイトは、OUTD
XALマクロによって出力されたものであり、その結果
ルーチンはステップ558に到達した訳である。したが
って、制御はステップ560に移行し、仮想UARTの
現在パリティ設定に基づいて適切なパリティ変換を行っ
た後に、VALUEパラメータを、モデム・モジュール
114の受信アレイRX_ARRAYに格納する。
【0112】次に、制御はステップ562に移行し、.
RX_CNT変数を増分し、受信アレイへのデータ追加
を反映する。ステップ518からは、.RX_CNT変
数が最大バッファ・サイズを超過した場合、あるいはス
テップ562からはいずれの場合でも、制御はステップ
564に移行し、.RX_CNT変数がフロー・オフ条
件よりも小さいか否かを判定する。偽であれば、モデム
・モジュール114がそのデータを処理するまで、オペ
レーティング・システムの仮想装置がこれ以上データを
送出するのを停止しなくてはならないことを意味する。
上述のステップ554を参照すると、ここでは、送信保
持レジスタ空ビットTHREおよび送信シフト・レジス
タ空ビットTSREが、ステップ554において、ライ
ン・ステータス・レジスタ変数.LSR内でリセットさ
れた。したがって、これらのビットがセットされるま
で、オペレーティング・システム内の仮想装置ドライバ
はUARTに書き込んではならない。なぜなら、これら
がSIM450_READルーチン40を通じてLSR
変数を読むとき、これらのビットは送信バッファが満杯
であることを示すからである。したがって、モデム・モ
ジュール114の受信アレイが満杯の場合、これらのビ
ットは不変のまま残され、制御はステップ564からス
テップ568に移行し、ここでリターンが実行される。
【0113】そうでない場合、制御はステップ564か
らステップ566に移行し、適切な処置を行って、仮想
UARTを通じ、追加データをモデム・モジュール11
4に書き込めるようにする。最初に、割り込み識別レジ
スタ送信変数.IIR_TXを真にセットし、割り込み
が発生することを示し、必要であれば、送信バッファに
はデータのための空きが余分にあることを示す。ライン
・ステータス・レジスタ変数.LSRの送信保持レジス
タ空ビットTHREおよび送信ステータス・レジスタ空
ビットTSREを真にセットし、これらのレジスタが空
であり、オペレーティング・システムからのデータを受
け入れ可能であることを示す。次に、EVALUATE
_INTERRUPTルーチン600をコールし、適切
な割り込みをオペレーティング・システムにかけること
ができるようにする。ステップ566から、制御はステ
ップ568に移行し、ここでコール元のルーチンに戻
る。
【0114】仮想割り込み 図18および図19に移ると、SIM450_EVAL
UATE_INTERRUPTルーチン600、即ち、
簡略化表現のEVALUATE_INTERRUPTル
ーチン600が示されている。このルーチン600をコ
ールするのは、仮想UARTがオペレーティング・シス
テムの仮想装置に対して、ソフト割り込みを発生すべき
か否かを判定しなければならないときである。先に説明
したように、オペレーティング・システムは、UART
によるハードウエア割り込みの際にコールされる、割り
込みエントリ・ポイントを有する。この割り込みエント
リ・ポイントは、典型的に、IRQ3またはIRQ4割
り込み要求ラインからの割り込みのためのエントリ・ポ
イントである。これらの初期のハウスキーピング(hous
ekeeping)の一部として、仮想装置ドライバは、かかる
割り込みに対してエントリ・ポイントを設定しなければ
ならない。SIM450.Cモジュールは、UARTか
らの割り込み時に移動させるアドレスでコールされるエ
ントリ・ポイントを含む。これは、仮想UARTが割り
込みを実行するのが適切なときに、SIM450_EV
ALUATE_INTERRUPTルーチン600によ
ってコールされるルーチンとして、このエントリ・ポイ
ントをセットする。
【0115】SIM450_EVALUATE_INT
ERRUPTルーチン600の具体的なコードに移る前
に、全体的な概要として、ルーチン600は、仮想UA
RT内部のデータ変数の様々な設定が、オペレーティン
グ・システムの仮想装置ドライバ内の割り込みサービス
・ルーチンへのコールを発生するに際して、適切である
ことを示しているか否かを判定する検査を行う。かかる
条件は、例えば、送信保持レジスタが空になり、対応す
る割り込みが割り込みイネーブル・レジスタ変数.IE
Nにおいてイネーブルされた場合である。勿論、他にも
割り込みを発生する条件はある。
【0116】ステップ602から開始し、現ライン・レ
ジスタ変数.LSRの送信保持レジスタビットTHRE
と共に、以前のストア・ライン・ステータス・レジスタ
変数.OLD_LSRの送信保持レジスタ空ビットTH
REを検査する。THREが、.LSR変数の中でセッ
トされているが、.OLD_LSR変数の中ではクリア
されている場合、SIM450_EVALUATE_I
NTERRUPTルーチン600への直前のコール以
来、送信保持レジスタが空になっていることを意味す
る。この場合、制御はステップ602からステップ60
4に移行し、送信空割り込み変数.IIR_TXを1に
セットし、割り込み条件が存在することを示す。ステッ
プ604においてその他の場合、そしてステップ602
において虚であった場合、制御はステップ606に移行
し、古いライン・ステータス・レジスタ変数.OLD_
LSRに、現ライン・ステータス・レジスタ変数.LS
Rの値をロードする。
【0117】ステップ608に移行し、割り込みイネー
ブル・レジスタ変数.IENの様々な状態を検査する。
ステップ608において、割り込みイネーブル変数.I
ENの中のステータス・レジスタERLSビットのエラ
ーを、ライン・ステータス・レジスタ変数.LSRの中
断ビットBRKI、フレーム・エラー・ビットFRM
R、パリティ・エラー・ビットPARE、およびオーバ
ーラン・エラー・ビットOVREと共に検査する。ER
LSビットは、真の場合、ライン・ステータス・レジス
タ変数.LSRにおけるこれらエラー条件のいずれかに
より、割り込みを開始すべきことを示す。したがって、
この状態が真の場合、制御はステップ608からステッ
プ610に移行し、割り込み識別レジスタ変数.IIR
に、ライン・ステータス・レジスタ上の割り込み基準
(interrupt base)に対応する値(この値は06h)を
セットする。
【0118】偽の状態の場合、制御はステップ608か
らステップ612に移行し、割り込みイネーブル・レジ
スタ変数.IENのイネーブル送信保持レジスタ割り込
みビットETHRと共に、送信空割り込み変数.IR_
TXを検査する。双方が真である場合、送信保持レジス
タが空であることによる割り込みがイネーブルされ、先
のステップ604において示したように、送信保持レジ
スタが実際に空となったか、あるいは、図13Bのステ
ップ540において示すように、この割り込みが丁度イ
ネーブルされたことを示す。いずれの場合でも、割り込
みを実行し、オペレーティング・システムに、送信保持
レジスタが空であることを通知する。したがって、ステ
ップ614では、割り込み識別レジスタ変数.IIR
は、かかる割り込み(02hの値)に対応する値にセッ
トされる。
【0119】その他の場合、ステップ612から制御は
ステップ616に移行し、ライン・ステータス・レジス
タ変数.LSRの受信データ・レディ割り込みビットR
DRIを、割り込みイネーブル・レジスタ変数.IEN
のイネーブル受信データ入手可能割り込みビットERD
Aと共に検査する。双方が真である場合、モデム・モジ
ュール114からデータが得られることを示し、かかる
データが得られるときに割り込みが発生するようにセッ
トされているので、制御はステップ618に移行し、割
り込み識別レジスタ変数.IIRを再び適切な値(ここ
では04h)にセットする。
【0120】その他の場合、制御はステップ616から
ステップ620に移行し、割り込みイネーブル・レジス
タ変数.IENのイネーブル・モデム・ステータス・レ
ジスタ割り込みビットEMSRを、モデム・ステータス
・レジスタ変数.MSR内のデルタ・ビットと共に検査
する。デルタ・ビットは、真のとき、モデム・ステータ
ス・レジスタ変数.MSRの対応する上位ビットが、最
後の.MSR変数を読み出したときから変化しているこ
とを示す。これらのビットの1つが変化しており、対応
する割り込みがイネーブルされると、制御はステップ6
22に移行し、割り込み識別レジスタ変数.IIRが、
モデム・ステータス・レジスタに基づく割り込みに対応
する値(0hの値)にセットされる。
【0121】その他の場合、制御はステップ620から
ステップ624に移行し、割り込み識別レジスタ変数.
IIRを、01hの値である、無割り込み値にセットす
る。更に、割り込みアクティブ変数.INT_ACTI
VEを偽にセットし、現在割り込みが発生していないこ
とを示す。
【0122】ステップ610、614、618、622
において、割り込み識別レジスタ変数.IIRのゼロ・
ビットを、そのアクティブ状態である低にセットし、標
準的なUARTにしたがって、割り込みが保留中である
ことを示す。したがって、これらのステップから、割り
込みを保留にセットし、割り込み識別レジスタ変数.I
IRは、このタイプの割り込みの識別を含む。ステップ
610、614、618、624から、制御はステップ
626(図19)に移行する。
【0123】ステップ626において、.IIR変数を
無割り込み値INOIと比較し、割り込みアクティブ変
数.INT_ACTIVEを検査し、モデム制御レジス
タ変数.MCRのOUT2ビットを検査する。.IIR変
数が無割り込み状態に等しくない場合、INT_ACT
IVE変数は偽となり、現在処理中の割り込みがないこ
とを示す。更に、出力OUT2をイネーブルし、これに
よって、割り込みを発生すべきことを示すので、制御は
ステップ628に移行し、割り込みアクティブ変数.I
NT_ACTIVEを1にセットし、割り込みが現在発
生中であることを示し、次にステップ630において、
(SIM_450コードの適正な初期化によって発生さ
れたはずの)割り込みのためにエントリがセットされた
か否かを判定する。ステップ630から、割り込みに対
してエントリがセットされている場合、ステップ632
においてその割り込みエントリをコールする。さもなけ
れば、ステップ626および630から、そしてステッ
プ632からは常に、制御はステップ634に移行し、
コール元のコードへのリターンが実行される。
【0124】割り込みアクティブ変数.INT_ACT
IVEに関して、その動作は、図18および図19を参
照することによって理解されよう。割り込みがアクティ
ブの場合、.INT_ACTIVE変数は、ステップ6
08、612、616、629の検査において保留の割
り込みがなくなるまで、偽にリセットしない。これによ
って、多数の疑似割り込みを防止する。
【0125】モデム・モジュール これまでのルーチンは、システム・ソフトウエア内にあ
る様々な仮想装置ドライバに対する形態としての、仮想
UARTのインターフェースを例示するものである。仮
想UARTはモデム・モジュール114へのインターフ
ェースも有している。先に注記したように、モデム・モ
ジュール114に対する適切なコードは通常、R.Scott
& Associatesのような多数のモデム用ソフトウエア開発
者によって提供される。これらの供給元は、通常、コン
トローラを特定せず、高水準言語で書かれたコントロー
ラ・コードを書くので、様々なプラットフォーム上でコ
ンパイルし実行することができる。例えば、例示したコ
ントローラ・コードは、68302マイクロコントロー
ラ上で実行するためにコンパイルされた高水準コードで
あっても、ここでは代わりに、本発明により用いられ
る、X86シリーズのプロセッサ上で実行するためにコ
ンパイルされる。
【0126】このコントローラ・コードは様々な「フッ
ク」を有し、これを通じてコンピュータからの外部デー
タの送受信を行う。主な例、即ち、SIM450_PU
T_TX_BYTEルーチン700およびSIM_45
0_GET_RX_BYTEルーチン750が、図20
に示されている。
【0127】702から開始し、SIM450_PUT
_TX_BYTEルーチン700は、送信アレイTX_
ARRAYに1バイトを入力する。この場合も、送信ア
レイは、モデム・モジュール114から仮想UARTの
方向である。ステップ704に移行し、タイマを起動し
て、ある時間(約10ミリ秒)の間にモデム・モジュー
ル114がコールされない場合、この時間の後に、モデ
ム・モジュール114への割り込みを発生する。この遅
延により、モデム・モジュール114は他のバイトを仮
想UARTに転送可能となる。タイマを起動し、UAR
Tに行き着く(drain)アプリケーションがない場合
に、文字を「消去」(expire out)するようにする。実
際のUARTでは、文字が上書きされ、OVERRRU
Nエラーが発生する。
【0128】SIM450_GET_RX_BYTEル
ーチン750では、モデム・モジュール114は、その
受信バッファからバイトを読み出す。受信バッファはS
IM450ルーチンによって満たされている。ステップ
752から開始し、一時的変数Bに、受信バッファRX
_ARRAY内の次のバイトをロードする。ステップ7
54に移行し、受信バッファ・カウントRX_CNTを
減分して、このアレイ内で入手可能な1バイトが少なく
なったことを示す。ステップ756に移行し、受信バッ
ファ・カウントRX_CNTがフロー・オン・スレシホ
ルドRX_FLOW_ONよりも小さいか否かを判定す
る。小さい場合、バッファには十分空きがあり、仮想U
ARTから文字を余分に受け入れ可能であるので、制御
はステップ758に移行し、ライン・ステータス・レジ
スタ変数.LSR内の送信保持レジスタ空ビットTHR
Eを検査する。これが真である場合、制御はステップ7
60に移行し、送信空割り込み変数.IIR_TXを
1、即ち、真にセットし、割り込みを与えて、仮想装置
ドライバに、仮想UARTの送信保持レジスタが空であ
ることを通知すべきことを示す。また、ライン・ステー
タス・レジスタ変数.LSRの送信シフト・レジスタ空
ビットTSREおよび送信保持レジスタ・ビットTHR
Eを真にセットし、これらのレジスタが空であり、オペ
レーティング・システムの仮想装置ドライバからのデー
タを受け入れるために使用可能であることを示す。最後
に、EVALUATE_INTERRUTルーチン60
0をコールし、オペレーティング・システムの仮想装置
ドライバに割り込みをかけるべきか否かを判定する。ス
テップ756、758、760から、制御はステップ7
62に移行し、EVALUATE_INTERRUPT
ルーチン600を再度コールする。最後に、ステップ7
64に移行し、一時的B変数内の値をパラメータとし
て、ルーチンはモデム・モジュール114にリターンす
る。
【0129】結論 上述の説明から、いかにして仮想UARTをモデム・モ
ジュール114への追加として装備し、モデム・モジュ
ール114がこの仮想UARTとデータの交信を行うこ
とができ、しかも仮想UARTはオペレーティング・シ
ステム・ソフトウエアには、事実上物理UARTとして
見えるようにするかが理解できるであろう。通常、物理
UARTにアクセスする仮想装置ドライバに加えること
が必要な唯一の大きな変更は、装置ドライバの入出力命
令を、仮想UARTコードへのコールとして、これらの
入出力命令を再送する適切なマクロで置き換えることだ
けである。
【0130】このソフトウエア分割は、新しいオペレー
ティング・システムおよび異なるモデム・モジュールに
対する非常に明確な経路を設けるものである。モデム・
モジュール114の前段に設けられる仮想UARTイン
ターフェースのために、このモデム・コントローラを新
たなオペレーティング・システムに移動するには、オペ
レーティング・システムの仮想装置ドライバを変更し
て、入出力命令の代わりにコールを実行するようにすれ
ばよい。仮想UARTは事実上物理UARTとして見え
るので、他のデータ構造やパラメータの変更は不要であ
る。
【0131】同様に、モデム・モジュール自体を変更す
る場合も、仮想UARTとのインターフェースのみを変
更すればよい。仮想UARTインターフェースは標準化
された状態を保持しているので、既存の仮想装置ドライ
バの変更は不要である。
【0132】コンピュータ・システムCおよびDSP5
8間の物理リンクは、多数の入出力ポートのように、様
々な方法で実施可能である。また、モデム・モジュール
114は、DSPとの適切な通信のためにフックを含
み、これらは、DSPがそれ自体をモデム・モジュール
114に接続するいかなるタイプのハードウエア・イン
ターフェースに対しても、容易に変更が可能である。好
ましくは、これは、多数のメールボックス・レジスタを
通じた標準的なインターフェースを有するPCMCIA
カードの形態とする。このインターフェースのインプリ
メンテーションのためのモデム・モジュール・コードを
ソース・コード添付資料Aに示すが、この場合も、これ
はさほど重要ではなく、多種多様のインターフェースが
可能である。
【0133】上述の本発明の開示および記載は、例示的
かつその説明のためのものであり、サイズ、形状、材
料、構成物、回路素子、ワイヤ接続、および接点、なら
びに図示した回路および構造ならびに動作方法の詳細に
おいて、本発明の範囲および技術思想から逸脱すること
なく、様々な変更が可能である。
【図面の簡単な説明】
【図1】本発明による任意のモデム・カードを有するコ
ンピュータ・システムの簡略ブロック図である。
【図2】PCMCIAカードにおける従来のモデム・ハ
ードウエアを示すブロック図である。
【図3】除去したハードウエア部分を示す、本発明の開
示した実施例におるモデム・ハードウエアのブロック図
である。
【図4】本発明によるモデム・カードの詳細ブロック図
である。
【図5】本発明にしたがって実施したモデムと共に用い
る、Windows(登録商標)95の環境における、種々の
ソフトウエア構成要素を示すブロック図である。
【図6】本発明にしたがって実施したモデムと共に用い
る、Windows(登録商標)3.1の環境における、種々の
ソフトウエア構成想要素を示すブロック図である。
【図7】CPQFMW95.VXDおよびモデム・モジ
ュール・インターフェースをより詳細に示すブロック図
である。
【図8】本発明によるモデムがコンピュータ・システム
にインストールされているか否かを判定するために、C
PQFMVCD.386が使用するルーチンのフローチ
ャートである。
【図9】本発明による仮想UARTに対する「仮想」入
出力動作を処理する、PPORTOPENルーチンのフ
ローチャートの一部を示す図である。
【図10】PPORTOTENルーチンのフローチャー
トの残りの部分を示す図である。
【図11】「仮想」入出力動作に対して発生するマクロ
・インライン・コードのフローチャートである。
【図12】図11のマクロによってコールされるフロー
チャートである。
【図13】仮想UARTへのコール時に実行されるSI
M450_READルーチンのフローチャートの第1部
分を示す図である。
【図14】SIM450_READルーチンのフローチ
ャートの第2部分を示す図である。
【図15】仮想UARTへのコール時に実行されるSI
M450_WRITEルーチンのフローチャートの第1
部分を示す図である。
【図16】SIM450_WRITEルーチンのフロー
チャートの第2部分を示す図である。
【図17】SIM450_WRITEルーチンのフロー
チャートの第3部分を示す図である。
【図18】いつ仮想UARTによって割り込みをかける
べきかを判定するSIM_450_EVALUATE_
INTERRUPTルーチンのフローチャートの一部を
示す図である。
【図19】SIM_450_EVALUATE_INT
ERRUPTルーチンのフローチャートの残りの部分を
示す図である。
【図20】本発明にしたがって仮想UARTとのデータ
送受信を行うために、モデム・コントローラ・コードが
使用する2つのルーチンのフローチャートである。
フロントページの続き (71)出願人 591030868 20555 State Highway 249,Houston,Texas 77070,United States o f America (72)発明者 ピーター・ジェイ・ブラウン アメリカ合衆国テキサス州77069,ヒュー ストン,アッシュモア・ドライブ 6919 (72)発明者 ドン・エイ・ダイクス アメリカ合衆国テキサス州77070,ヒュー ストン,ジョーンズ・ロード 152 (72)発明者 アンドリュー・エル・ラブ アメリカ合衆国テキサス州77388,スプリ ング,ウッズボロ・ドライブ 2411 (72)発明者 ケヴィン・ダブリュー・アイリス アメリカ合衆国テキサス州77375,トムボ ール,ウォルドウィック 15419

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】 モデム・コントローラ・コードを実行す
    るマイクロコントローラを具備していないモデムと共に
    用いられ、前記モデム・コントローラ・コードを実行す
    る汎用コンピュータ・システムにおいて、 命令を実行するためのプロセッサと、 前記プロセッサに結合された入出力バスであって、デジ
    タル信号プロセッサを有しかつコントローラのないハー
    ドウエア・モデムと通信するように構成された入出力バ
    スとを備えており、 前記プロセッサは、汎用コンピュータ・システム・コー
    ドと前記モデム・コントローラ・コードとの双方を実行
    し、前記実行したモデム・コントローラ・コードと前記
    デジタル信号プロセッサとの間でデータおよびコマンド
    を通信することを特徴とする汎用コンピュータ・システ
    ム。
  2. 【請求項2】 請求項1記載のコンピュータ・システム
    において、該システムは更に、 前記プロセッサによって実行されるオペレーティング・
    システムと、 ハードウエアUART装置のための装置ドライバであっ
    て、前記オペレーティング・システムによってコールさ
    れ、前記ハードウエアUART装置との直列的動作を実
    行する装置ドライバと、 前記プロセッサによって実行される仮想UARTであっ
    て、前記モデム・コントローラ・コードとの間でデータ
    通信を行い、前記ハードウエアUARTからの読み出し
    および前記ハードウエアUARTへの書き込みに対応す
    るエントリ・ポイントを提供する仮想UARTとを備え
    ており、 前記仮想装置ドライバは、前記ハードウェアUARTの
    代わりに、前記エントリ・ポイントをコールして、前記
    仮想UARTとの間の読み出しおよび書き込みを実行す
    るように変更されることを特徴とするコンピュータ・シ
    ステム。
  3. 【請求項3】 請求項2記載のコンピュータ・システム
    において、前記仮想UARTは、16450UARTを
    エミュレートすることを特徴とするコンピュータ・シス
    テム。
  4. 【請求項4】 請求項2記載のコンピュータ・システム
    において、前記装置ドライバは、Windows(登録商標)
    3.1の仮想装置ドライバであることを特徴とするコン
    ピュータ・システム。
  5. 【請求項5】 請求項2記載のコンピュータ・システム
    において、前記装置ドライバは、Windows(登録商標)
    95の仮想装置ドライバであることを特徴とするコンピ
    ュータ・システム。
  6. 【請求項6】 請求項2記載のコンピュータ・システム
    において、前記プロセッサは、x86シリーズのプロセ
    ッサであり、"IN AL, DX"および"OUT DX, AL"命令を、
    前記エントリ・ポイントへのコールで置き換えることに
    よって、前記仮想装置ドライバが変更されることを特徴
    とするコンピュータ・システム。
  7. 【請求項7】 請求項2記載のコンピュータ・システム
    において、前記仮想UARTは、前記装置ドライバに対
    して個別化したインターフェースを与え、前記仮想UA
    RTに大幅な修正を加えることなく、前記オペレーティ
    ング・システムを、第2の装置ドライバを有する第2の
    オペレーティング・システムに変更可能としたことを特
    徴とするコンピュータ・システム。
  8. 【請求項8】 請求項2記載のコンピュータ・システム
    において、前記仮想化UARTは、前記装置ドライバに
    対して個別化したインターフェースを与え、前記装置ド
    ライバに大幅な修正を加えることなく、前記コントロー
    ラのないハードウエア・モデムを、第2のコントローラ
    のないハードウエア・モデムに変更可能としたことを特
    徴とするコンピュータ・システム。
  9. 【請求項9】 デジタル信号プロセッサを有するが、モ
    デム・コントローラ・コードを実行するマイクロコント
    ローラを有していないモデムと共に用いるコンピュータ
    ・システムにおいて、 命令を実行するプロセッサであって、前記モデム・コン
    トローラ・コードを実行するプロセッサと、 物理ハードウエア・インターフェースの仮想化バージョ
    ンであって、実行中の前記モデム・コントローラ・コー
    ドに仮想化されたインターフェースを提供する仮想化バ
    ージョンと、 物理ハードウエア・インターフェースと通信するために
    書かれた装置ドライバであって、前記物理ハードウエア
    ・インターフェースを対象にした命令を、前記仮想化イ
    ンターフェースへのコールで置き換えることによって変
    更された装置ドライバとを備えていることを特徴とする
    コンピュータ・システム。
  10. 【請求項10】 請求項9記載のコンピュータ・システ
    ムにおいて、前記仮想化インターフェースは、仮想化さ
    れた16450と互換性のあるインターフェースである
    ことを特徴とするコンピュータ・システム。
  11. 【請求項11】 請求項9記載のコンピュータ・システ
    ムにおいて、前記装置ドライバは、Windows(登録商
    標)3.1の仮想装置ドライバであることを特徴とする
    コンピュータ・システム。
  12. 【請求項12】 請求項9記載のコンピュータ・システ
    ムにおいて、前記装置ドライバは、Windows(登録商
    標)95の仮想装置ドライバであることを特徴とするコ
    ンピュータ・システム
  13. 【請求項13】 汎用コンピュータ・システムにおいて
    実行される方法であって、ハードウエア・モデム・コン
    トローラを用いずにモデム通信を行う方法において、 通信リンクを通じて通信するためのデジタル信号プロセ
    ッサを提供するステップと、 前記汎用コンピュータ・システムで、前記デジタル信号
    プロセッサとの通信のためのモデム・コントローラ・コ
    ードを実行するステップと、 前記モデム・コントローラ・コードから前記デジタル信
    号プロセッサへの通信のためのハードウエア・インター
    フェースを提供するステップと、 前記汎用コンピュータ・システムのオペレーティング・
    システムの装置ドライバ・ソフトウエアと前記汎用コン
    ピュータ・システムで実行するモデム・コントローラ・
    コードとの間に、ハードウエア・インターフェースの仮
    想化されたバージョンを提供するステップであって、そ
    れにより、前記オペレーティング・システムの装置ドラ
    イバ・ソフトウエアと前記モデム・コントローラ・コー
    ドの間でモデム・コマンドおよびデータを送信されるよ
    うにしたステップとを含んでいることを特徴とする方
    法。
  14. 【請求項14】 モデム・コントローラ・コードを実行
    するマイクロコントローラのないモデムと共に用いら
    れ、該モデム・コントローラ・コードを実行する汎用コ
    ンピュータ・システムにおいて、 命令を実行するプロセッサと、 前記プロセッサに結合され、前記モデム・コントローラ
    ・コードを格納するディスク・ドライブと、 前記モデム・コントローラ・コードを格納する主メモリ
    と、 前記プロセッサに結合された入出力バスであって、デジ
    タル信号プロセッサを有しかつコントローラのないハー
    ドウエア・モデムと通信するように構成された入出力バ
    スとを備え、 前記プロセッサは、汎用コンピュータ・システム・コー
    ドと前記モデム・コントローラ・コードの双方を実行
    し、実行した前記モデム・コントローラ・コードと前記
    デジタル信号プロセッサとの間でデータおよびコマンド
    を通信することを特徴とする汎用コンピュータ・システ
    ム。
  15. 【請求項15】 請求項14記載のコンピュータ・シス
    テムにおいて、該システムは更に、 前記プロセッサによって実行されるオペレーティング・
    システムであって、前記ディスク・ドライブおよび前記
    メモリ・メモリ内に格納されたオペレーティング・シス
    テムと、 ハードウエアUART装置用の装置ドライバであって、
    前記オペレーティング・システムによってコールされて
    前記ハードウエアUART装置の直列的動作を実行し、
    前記ディスク・ドライブおよび前記主メモリ上に格納さ
    れた装置ドライバと、 前記プロセッサによって実行される仮想UARTであっ
    て、前記モデム・コントローラ・コードとの間でデータ
    の通信を行い、前記ハードウエアUARTからの読み出
    しおよび前記ハードウエアUARTへの書き込みに対応
    するエントリ・ポイントを提供し、前記ディスク・ドラ
    イブおよび前記主メモリに格納された前記仮想UART
    とを含み、 前記仮想装置ドライバは、前記ハードウエアUARTの
    代わりに、前記エントリ・ポイントをコールして、前記
    仮想UARTからの読み出しおよび前記仮想UARTへ
    の書き込みを実行するよう変更されることを特徴とする
    コンピュータ・システム。
JP9019178A 1996-01-31 1997-01-31 コンピュータ・システム Pending JPH1083365A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US1090996P 1996-01-31 1996-01-31
US60/010909 1996-01-31

Publications (2)

Publication Number Publication Date
JPH1083365A true JPH1083365A (ja) 1998-03-31
JPH1083365A5 JPH1083365A5 (ja) 2004-12-24

Family

ID=21747979

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9019178A Pending JPH1083365A (ja) 1996-01-31 1997-01-31 コンピュータ・システム

Country Status (1)

Country Link
JP (1) JPH1083365A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002314630A (ja) * 2001-04-17 2002-10-25 Oki Micro Design Co Ltd データ転送装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002314630A (ja) * 2001-04-17 2002-10-25 Oki Micro Design Co Ltd データ転送装置

Similar Documents

Publication Publication Date Title
EP0788057B1 (en) Computer system with controllerless modem
US5812820A (en) Virtual UART
US5790895A (en) Modem sharing
US5864710A (en) Controllerless modem
EP0817096B1 (en) Integrated circuit
US6629157B1 (en) System and method for virtualizing the configuration space of PCI devices in a processing system
CA2284277C (en) Software implementation of modem on computer
US5600790A (en) Method and system for loading and confirming correct operation of an application program in a target system
US5604870A (en) UART emulator card
US5802318A (en) Universal serial bus keyboard system
US4787026A (en) Method to manage coprocessor in a virtual memory virtual machine data processing system
US6141744A (en) PC circuits, systems and methods
EP0192944B1 (en) Data processing system with a main processor and a co-processor sharing the same resources
JP2781815B2 (ja) 専用コントローラ無しで動作する集積化modem
US6539476B1 (en) Mobile computer system capable for copying set-up application including removal routine from peripheral device for removing device programs after the device is removed
JP4054390B2 (ja) モデムインタフェース
US5678059A (en) Technique for time-sharing a microprocessor between a computer and a modem
US6272452B1 (en) Universal asynchronous receiver transmitter (UART) emulation stage for modem communication
WO2000019292A2 (en) Upgrade card for a computer system
KR20100087295A (ko) 이더넷 컨트롤러
US6353857B2 (en) Controllerless modem
EP1552403B1 (en) Software compatible parallel interface with bidirectional handshaking for serial peripherals
JPH1083365A (ja) コンピュータ・システム
US6216192B1 (en) Dynamic resource allocation across bus bridges
HK1034126A (en) Virtual 16550 uart

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040121

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060711

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20061201