[go: up one dir, main page]

JPH1083365A - Computer system - Google Patents

Computer system

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
Japanese (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/en
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

PROBLEM TO BE SOLVED: To reduce size and cost and to efficiently update functions by realizing the hardware part of a modem by a software module. SOLUTION: A modem card 30 is connected to a computer through a slot connector 28 but not provided with a microcontroller, UART(universal asynchronizing receiver-transmitter) 46, etc., before being necessitated. The functions of these are realized by a virtual modem controller called by the operating system of the computer itself. The virtual modem controller includes virtual UART, which looks a hardware from an operating software, and is provided with an entry point for a call to replace with an input/output instruction. Therefore, a standard device driver code written for executing input/output operation is converted to operate virtual UART.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の技術分野】本発明は、パーソナル・コンピュー
タに用いられるモデムに関し、更に特定すれば、仮想化
されたドライバおよびモデム・モジュールとして組織さ
れたソフトウエアを用いて、ホストCPUがコントロー
ラおよびUART機能を実行し、モジュールが仮想化U
ARTインターフェースを通じて通信する、モデムに関
するものである。
FIELD OF THE INVENTION The present invention relates to a modem for use in a personal computer, and more particularly, to a host CPU having a controller and a UART function using software organized as virtualized drivers and modem modules. And the module is virtualized U
It relates to a modem that communicates through an ART interface.

【0002】[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によって復調され、外
部装置から送出された元のデジタル・データを抽出す
る。この手順を逆に行うと、モデムによってデータが外
部装置に送信される。
BACKGROUND OF THE INVENTION Most personal computers today include some form of modem function. Typically, a high-speed modem system is built into the option card and is available from the International Telegraph and Telephone Consultative Committee (CCITT: I
nternational Telegraph and Telephone Consultative
Committee), V.22, V.22b
is, V.32, V.32bis, and V.34 (28.
8Kbps) protocol to support various modem communication protocols, such as "data pump" (data
pump). The data pump itself typically provides D, which performs modulation, demodulation, and echo cancellation.
SP (digital signal processor) and analog-
Digital (A / D) and digital-analog (D /
A) Includes a coder / decoder (CODEC) that performs the conversion. The analog signal from the telephone line is digitized by the CODEC and then demodulated by the DSP to extract the original digital data sent from the external device. When this procedure is reversed, the data is transmitted to the external device by the modem.

【0003】従来のモデムでは、モデムをコンピュータ
・システムにインターフェースするためのサポート・ロ
ジックは、典型的に、マイクロコントローラを含み、こ
れによってI/Oバスを介してユニバーサル非同期受信
送信機(UART:universalasynchronous receiver tr
ansmitter)によって通信リンクを確立し、一連のイベ
ントを制御してコール(呼出)を発信し、あるいはコー
ルに応答し、そしてコンピュータ・システムからのデジ
タル・データの送信または受信を行う。また、マイクロ
コントローラは、典型的に、V.42プロトコルによる
もののようなエラー訂正手順や、CCITTによって勧
告されているV.42bisプロトコルによるもののよ
うな圧縮/伸張手順も実行する。
[0003] In conventional modems, the support logic for interfacing the modem to the computer system typically includes a microcontroller, thereby via a I / O bus a universal asynchronous receiver and transmitter (UART). receiver tr
Ansmitter establishes a communication link, controls a sequence of events, initiates a call, or answers a call, and sends or receives digital data from a computer system. The microcontroller also typically performs error correction procedures, such as those according to the V.42 protocol, and compression / decompression procedures, such as those according to the V.42bis protocol recommended by CCITT.

【0004】UARTは、元々、シリアル・インターフ
ェース、典型的には、バス上にあるデータを直列化する
(すなわち、RS−232通信リンク上でのようなシリ
アル送信、およびこのようなデータの受信、そのパラレ
ル形態への変換、バスを通じての送出)ためのインテリ
ジェント・マイクロチップとして設計されたものであ
る。UARTチップへのアクセスは、通常、パーソナル
・コンピュータ・システムのI/Oポート(典型的に
は、COM1およびCOM2)を通じて得られる。典型
的な代表例は、ナショナル・セミコンダクタ・コーポレ
ーション(NationalSemiconductor Corporation)製のU
ART8250および16450チップである。
[0004] UARTs inherently serialize data residing on a serial interface, typically a bus (ie, serial transmission, such as over an RS-232 communication link, and reception of such data, It is designed as an intelligent microchip for its conversion to parallel form and transmission over a bus). Access to the UART chip is typically obtained through I / O ports (typically COM1 and COM2) of the personal computer system. A typical representative is a U.S.A. made by National Semiconductor Corporation.
ART8250 and 16450 chips.

【0005】[0005]

【発明が解決しようとする課題】モデム装置のハードウ
エア部分は、このようなモデムの根元的コストの殆どを
占めている。更に、これらハードウェア部分はモデムの
サイズにも影響を及ぼす。モデムの部品数を少しでも減
らすことができれば、コスト低減となるので望ましいこ
とである。
The hardware portion of a modem device accounts for most of the underlying cost of such a modem. In addition, these hardware parts also affect the size of the modem. It would be desirable to reduce the number of parts in the modem, as it would reduce costs.

【0006】更に、技術が急速に変化しすぐに旧式とな
ってしまう今日の状況では、アップグレードが容易なこ
と、および異なるオペレーティング・システム・プラッ
トフォームを越えてのデータの移動可能性(portabilit
y)が、モデム製造者には重要である。製造者は、製品ラ
イフサイクルの短縮化にも拘わらず、ハードウエア開発
コストを回収しようという問題に直面している。したが
って、このようなハードウエア開発における削減は、ど
のようなものであっても、同様に望ましいことである。
Furthermore, in today's circumstance where technology is changing rapidly and becoming obsolete, ease of upgrade and portability of data across different operating system platforms are difficult.
y) is important to modem manufacturers. Manufacturers face the problem of recovering hardware development costs despite shortening the product life cycle. Therefore, any reduction in such hardware development is equally desirable.

【0007】[0007]

【課題を解決するための手段】本発明の好適実施例によ
るモデムでは、UARTおよびマイクロコントローラ機
能を仮想化し、ホスト・プロセッサ上で実行するソフト
ウエア(「モデム・モジュール」)として実施する。モ
デム・モジュールは、オペレーティング・システムと相
互作用を行うオペレーティング・システムに特定した仮
想ポート・ドライバを含む、第2レイヤ(「仮想装置駆
動レイヤ」)とインターフェースする。この二層化アー
キテクチャ(dicotomized architecture)は、モデムを異
なるオペレーティング・システム(OS)と共に使用す
るときに、モデム・モジュール・ソフトウエアが仮想的
に不変であるという利点がある。殆どのオペレーティン
グ・システムは、既に、UARTと通信する機能(abili
ty)を内蔵している。したがって、仮想装置駆動レイヤ
のみを修正することは、双方のレイヤを修正しようとす
るよりも単純であり、費用効率も高くなる。
SUMMARY OF THE INVENTION In a modem according to a preferred embodiment of the present invention, the UART and microcontroller functions are virtualized and implemented as software ("modem module") running on a host processor. The modem module interfaces with a second layer (the "virtual device drive layer"), which includes an operating system specific virtual port driver that interacts with the operating system. This dicotomized architecture has the advantage that the modem module software is virtually invariant when using the modem with a different operating system (OS). Most operating systems already have the ability to communicate with the UART (abili
ty). Therefore, modifying only the virtual device drive layer is simpler and more cost effective than trying to modify both layers.

【0008】モデムのハードウエア部分をソフトウエア
・モジュールとして実施することによって、付加的な利
点も得られる。今日の強力なマイクロプロセッサの潜在
能力をレベル化(leveraging)することにより、物理的な
UARTに伴う欠点を解消し、「標準的」モデムよりも
事実上改善された、高速モデム性能が得られる。したが
って、本発明によるモデムは、従来のモデム・カードに
比べて、低価格化、高速化、および高機能化の容易性を
図ることができる。
[0008] Implementing the hardware portion of the modem as a software module also offers additional advantages. Leveraging the potential of today's powerful microprocessors eliminates the shortcomings associated with physical UARTs and provides high-speed modem performance that is substantially improved over "standard" modems. Therefore, the modem according to the present invention can achieve lower cost, higher speed, and easier functionality than the conventional modem card.

【0009】[0009]

【発明の実施の形態】図1を参照すると、モデム・カー
ド30を含む、コンピュータ・システムCの簡略ブロッ
ク図が示されている。コンピュータ・システムCは、ホ
スト・バス16に結合された中央演算ユニット(CP
U)システム10を内蔵している。ホスト・バスは、C
PUシステム10を、主メモリ12と呼ばれるメモリ・
アレイを含む、コンピュータ・システムCの残りの部分
にインターフェースするように機能する。CPUシステ
ム10は、インテル・コーポレーション(Intel Corpora
tion)の486またはペンティウム(PENTIUM)のような単
純なマイクロプロセッサで構成することもでき、あるい
は、マイクロプロセッサ、キャッシュ・コントローラ、
およびその他の構成物を含むより完全なCPUシステム
として構成することもできる。ビデオ・システム14
も、ホスト・バス16に接続されている。
DETAILED DESCRIPTION OF THE INVENTION Referring to FIG. 1, a simplified block diagram of a computer system C including a modem card 30 is shown. Computer system C includes a central processing unit (CP) coupled to host bus 16.
U) The system 10 is built in. The host bus is C
The PU system 10 has a memory called a main memory 12.
It functions to interface to the rest of the computer system C, including the array. The CPU system 10 is an Intel Corpora
486 or PENTIUM, or a microprocessor, cache controller,
And a more complete CPU system including other components. Video system 14
Are also connected to the host bus 16.

【0010】ホスト・バス16は、バス・コントローラ
18を通じて、I/Oバス20に結合されている。バス
・コントローラ18は、業界標準アーキテクチャ(IS
A:Industry Standard Architecture)バスまたは拡張業
界標準アーキテクチャ(EISA:Extended Industry S
tandard Architecture)バスと互換性があることが好ま
しい。I/Oバス20の正確なアーキテクチャは、本発
明にはさほど重要なことではない。
[0010] The host bus 16 is coupled to an I / O bus 20 through a bus controller 18. The bus controller 18 uses an industry standard architecture (IS
A: Industry Standard Architecture (Bus) or Extended Industry Standard Architecture (EISA)
Preferably, it is compatible with a Tandard Architecture) bus. The exact architecture of the I / O bus 20 is not critical to the invention.

【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)を発生する。
Various components conventionally arranged on a system board of the computer system C are connected to the I / O bus 20. These are BIOS
And a read only memory (ROM) 32 for providing system and other system level instructions, and an 8042 keyboard controller 34. The keyboard portion 36 and the auxiliary port or pointing device port 38
4 is connected. Hard disk drive 24
Is connected to the I / O bus 20 via the IDE controller 22.
It is connected to the. The IDE controller 22 has a built-in buffer control logic, and generates a chip select for the IDE device during data reading and data writing to the IDE device.

【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装置に、クレジット・カードの大きさの
カードを使用可能にしている。簡略化のために、以下で
論じるモデム機能は、ファクシミリ、データ、および音
声情報を処理する能力を含むものと仮定する。なぜな
ら、これら各々に対する通信プロトコルが関係するから
である。
When the modem card 30 is connected to the slot connector 2
8, PCMCIA (Personal Computer Memory Card)
CardInternational Association) Interface 2
6 is connected. PCMCIA interface 2
6 enables connection to the I / O bus 20. The PCMCIA specification 2.0, originally intended as a memory expansion (standard 1.0) interface, uses a PCMCIA interface for fax modems, SCSI adapters, Global Positioning System (GPS) reception. Various I / O devices, such as machines, allow credit card-sized cards to be used. For simplicity, it is assumed that the modem functions discussed below include the ability to process facsimile, data, and voice information. This is because the communication protocol for each of these is involved.

【0013】図1のコンピュータ・システムは一例であ
り、多数の他のコンピュータ・システムの設計も使用可
能である。更に、モデム・カード30は、直接I/Oバ
ス20上に、またはホスト・バス16を含む、コンピュ
ータ・システムCが利用する他のいずれかのバス上に配
置することができる。モデムの正確な位置は本発明には
さほど重要ではない。
The computer system of FIG. 1 is an example, and numerous other computer system designs may be used. Further, modem card 30 may be located directly on I / O bus 20 or on any other bus utilized by computer system C, including host bus 16. The exact location of the modem is not critical to the invention.

【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のよう
な電話ジャックを介して、電話線から信号を受信する。
Referring briefly to FIG. 2, a conventional modem
A hardware block diagram is shown. Conventional modems have a data access configuration (DAA).
through an angement) to a telephone line (not shown). The data access configuration electrically separates the modem 30 from the telephone line and provides the Federal Communications Commission (FCC).
EMI / RFI (electromagnetic / radio frequency interference)
interference / radio frequency interference). The DAA 54 also typically separates the received signal from the transmitted analog signal,
Generate a ring signal to notify the computer system to respond. DAA 54 is a public switched telephone network (PS).
Preferably, it is compatible with a public switched telephone network (TN) interface. DAA54
Receives signals from a telephone line via a telephone jack, such as the RJ11C used in standard telephones.

【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に
送出する。
Further, conventional modems include a microcontroller 40 which requires a DSP 58 and support memory 64, RAM 42 and ROM 44, a physical UART 4
6, and peripheral interface device (PID: perip
heral interface device) 48. In such prior art modems, microcontroller 40 is typically
The communication with the CPU system 10 is performed through the UART 46. The CPU 10 uses a separate UART,
Data transmission / reception with 46 is performed. On the other hand, UART 46
It supplies data to the microcontroller 40 and sends data from the microcontroller 40 to the CPU system 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を埋め込んだコントロー
ラである。
However, the microcontroller 40
Cannot simply receive data from the CPU 10, send it over the telephone line, or simply receive data from the telephone line or send it to the CPU 10. That is, the standard HayesAT
Contains the software needed to implement a modem command set, such as a standard Hayes AT command set. Microcontroller 4
0 includes software that receives an ASCII command according to the AT command set by the UART 46 and performs various functions based on the command.
For example, the "ATH" command causes the microcontroller 40 to "hang up" the DAA 54 and disconnect the modem link. Other commands are known from the AT command set. In addition, microcontroller 40 also implements various error correction and data compression protocols. All of these functions are known to those skilled in the art. When the software is in communication mode rather than command mode, microcontroller 40
Data is transferred between T46 and the DSP 58. The DSP 58 then converts this data to the appropriate digitized signal level and converts the data to the CODEC 56
(See FIG. 4). To end the data communication mode and enter the command mode, the microcontroller 40 preferably operates according to the AT command set, switches to the command mode, and causes the host PC to supply the AT command through the microcontroller 40. Thus, a series of three plus signs "+
++ ". One common microcontroller used for microcontroller 40 is a controller with an embedded Motorola MC68302.

【0017】次に図3を参照すると、ここに開示する本
発明の実施例によるモデム・ハードウエアのブロック図
が示されている。ソフトウエアで実現されたことにより
もはや不要となった物理的構成要素は、破線で示されて
いる。上述のように、従来技術のモデム・システムは通
常マイクロコントローラ40(図2)を含んでおり、こ
れがDSP58にデータを供給し、モニタおよびDAA
54を制御して、必要に応じてオンフックまたはオフフ
ックを行っていた。通信リンクを確立するためには、マ
イクロコントローラ40は、適切な信号列を送出して発
信するか、あるいは電話のコールに応答する。しかしな
がら、好適実施例によるモデムでは、マイクロコントロ
ーラ40やUART46の様々な機能は、仮想モデム・
モジュール114(図5および図6)において実現され
ている。このソフトウエア・インプリメンテーションの
結果、大幅な経済的節約とデータ・レートの向上が得ら
れた。更に、マイクロコントローラ40およびUART
46は、好ましくは、他のオペレーティング・システム
・ソフトウエアからは独立したモジュールとして実施す
ることにより、マイクロコントローラ40ならびにマイ
クロコントローラ40およびUART46の仮想バージ
ョンを、他のオペレーティング・システムに容易に移動
できるようにする。
Referring now to FIG. 3, there is shown a block diagram of modem hardware according to an embodiment of the present invention disclosed herein. Physical components that are no longer required by being implemented in software are indicated by dashed lines. As mentioned above, prior art modem systems typically include a microcontroller 40 (FIG. 2), which provides data to DSP 58, a monitor and a DAA.
54 was controlled to perform on-hook or off-hook as necessary. To establish a communication link, the microcontroller 40 sends out an appropriate sequence of signals to originate or answer a telephone call. However, in the modem according to the preferred embodiment, the various functions of the microcontroller 40 and the UART 46 are based on the virtual modem
Implemented in module 114 (FIGS. 5 and 6). This software implementation resulted in significant economic savings and increased data rates. Further, the microcontroller 40 and the UART
46 is preferably implemented as a module independent of other operating system software so that microcontroller 40 and virtual versions of microcontroller 40 and UART 46 can be easily moved to other operating systems. To

【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である。
Turning now to FIG. 4, a modem card 30 according to the present invention is shown in more detail. PCMCIA
Host Interface Application Specific Integrated Circuit (ACI)
C: application specific integrated circuit) PID
Modem 62 via the PCMCIA slot connector 28 using the computer system C
It is connected to the. PID2 62 is EEPROM64
Is also connected. The EEPROM 64 has a PID2
62 (CIS: Card Info)
rmation Structure). In the preferred embodiment, the EEP
ROM 64 is manufactured by National Semiconductor Corporation. PID2 6
2 further includes an interface ASIC V32INF
C2, while this is connected to DSP chip 5
8 is provided. DSP58
Performs calculations to give the desired modem function. In the preferred embodiment, DSP 58 comprises AT & T Corporation.
General-purpose DSP1 manufactured by (AT & T corporation)
6A.

【0019】DSP58は、通常、コンピュータ・シス
テムCからのデジタル・データを、デジタル化されたア
ナログ波形に変換し、CODEC56に供給する。CO
DEC56は、次に、真のアナログ波形をDAA54に
供給する。また、DSP58は、CODEC56からデ
ジタル化されたアナログ波形を受け取る。CODEC5
6は、DAA54から真のアナログ波形を受け取り、こ
のアナログ・データを、コンピュータ・システムCのた
めにデジタル・データに変換する。また、DSP58
は、エコー・キャンセレーションも行い、送信信号によ
ってモデム30にエコー・バックされる信号を打ち消す
ことが好ましい。
The DSP 58 generally converts digital data from the computer system C into a digitized analog waveform and supplies it to the CODEC 56. CO
The DEC 56 then supplies the true analog waveform to the DAA 54. Also, the DSP 58 receives a digitized analog waveform from the CODEC 56. CODEC5
6 receives the true analog waveform from DAA 54 and converts this analog data into digital data for computer system C. In addition, DSP58
Preferably also performs echo cancellation and cancels the signal echoed back to modem 30 by the transmitted signal.

【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を用いている。
The CODEC 56 includes RXD, TXD, SY
By using four signals called NC and CLK, DSP5
8 is connected. The RXD and TXD signals are received and transmitted digital signals, and the SYNC and CLK signals are conventional signals used between DSP 58 and codec 56. V32INFC2 60, DSP58
And CODEC 56 cooperate to generally provide “
It forms what is called a “pump” 50. Data pump 50 is typically a modem data pump chip set that supports various protocols for modem communication. In the preferred embodiment, data pump 50 is A
T & T Microelectronics (AT & TMicroelectronic
s), DSP16A-V32IN
FC2-LT V.32bis plus FAX Dat
a A Pump Chip Set is used.

【0021】コーデック56は、RXA即ちDAA54
からの受信アナログ信号を受け、TXA即ち送信アナロ
グ信号をDAA54に供給する。CODEC56は、D
SP58による処理のために、RXA信号からのアナロ
グ・データをデジタル化する。同様に、DSP58から
受けたデジタル・データTXDは、TXA信号上でアナ
ログ・フォーマットに変換される。
Codec 56 is an RXA or DAA 54
, And supplies a TXA, that is, a transmission analog signal to the DAA 54. CODEC 56 is D
The analog data from the RXA signal is digitized for processing by SP58. Similarly, digital data TXD received from DSP 58 is converted to analog format on a TXA signal.

【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号に開示され、本出願において参照されてい
る。
As mentioned above, DAA 54 functions to separate modem 30 from the telephone line in order to meet national regulations for FCC or EMI / RFI interference control. Data received by the DAA 54 from an external device is filtered and transmitted from the CODEC 56 to the DAA 54 on the TXA signal.
Are supplied in analog form. Similarly, data transmitted by modem 30 is transmitted from CODEC 56 to DAA
At 54, it is provided on the TXA signal and then asserted by the DAA 54 on the telephone line. The data is preferably transferred serially between the DSP 58 and the CODEC 56. Further details of the illustrated DAA circuit can be found in "Modem Havin
g Separate Modem Engine and Data Access Arrangemen
Pending US Patent Application Serial No. 08/30, entitled "t"
No. 4,262, and is referenced in the present application.

【0023】DAA54は、RJ−11電話ジャック5
2を通じて、標準電話線に接続されている。電話ジャッ
ク52は、当業者には既知にように、ある電話信号を供
給および受信するために設けられている。多くの異なる
種類の電話線およびその他の送信媒体が考えられるの
で、電話ジャック52およびDAA54は、いかなる電
話線手段または送信媒体が使用されても、それと互換性
を保つように構成される。本発明は、送信媒体、電話ジ
ャックまたはDAAのいずれの特定のタイプにも限定さ
れないので、ここに示すものは、単に例示の目的で使用
しているに過ぎないものである。
DAA 54 is an RJ-11 telephone jack 5
2 to a standard telephone line. Telephone jack 52 is provided for supplying and receiving certain telephone signals, as is known to those skilled in the art. Since many different types of telephone lines and other transmission media are possible, telephone jack 52 and DAA 54 are configured to be compatible with whatever telephone line means or transmission medium is used. Because the invention is not limited to any particular type of transmission medium, telephone jack or DAA, the ones shown here are used for illustrative purposes only.

【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チップにも対応する。
The modem 30 according to the preferred embodiment includes a plug
Ideally, it should be able to identify itself according to the method described in the And Play External COM Device Specification. In addition, to qualify for the Windows® 95 logo, the modem 30 supports at least 9600 bits per second (bps) with the V.42 / V42bis protocol for data modems, and TIA-6
02 (Hayes® compatible) AT command set and extended functions for flow control of V42 / V42bis, compatible with at least 9600 bps V.29 fax function of class 1 (TIA-578A), In addition, it must support a UART interface compatible with 16459A / 16550. Windows 95 is an older 8250 UAR
It also supports T chips.

【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のみを使用す
る。
Background of Window® 95 At the heart of Window® 95 is a 32-bit protected mode operating system called a virtual machine manager (VMM). VMM provides services to manage exceptions such as memory, processes, interrupts, and general breach of protection. VMM is a virtual device (VxD)
Work together to allow the virtual device to intercept interrupts and defaults, access the hardware devices of the application, and manage installed software. Both VMM and VxD execute at privilege level 0 (also called ring 0) in a single 32-bit flat model address space. Code executing on ring 0 can perform any task that the processor can handle, and can operate on any memory address in the computer system. Ring 1 has more privileges than ring 2, while ring 2 has more privileges than ring 3. Windows® 95 uses only Ring 0 and Ring 3.

【0026】Windows(登録商標)95では、VxDは
32ビット・プロテクト・モード・モジュールであり、
コンピュータのハードウエア装置を管理し、ソフトウエ
アに対応することによって、装置に独立のVMMをサポ
ートする。VxDは、直接メモリ・アクセス(DMA)
素子、IDEコントローラ、シリアル・ポート、パラレ
ル・ポート、キーボード、およびビデオ・カード・アダ
プタを含む、典型的なコンピュータ・システムC内のハ
ードウエア装置全てに対応する。VxDは、プログラム
可能な処理モードを有する、即ち、任意の時間期間にわ
たってデータを保持するあらゆるハードウエア装置に必
要なものである。即ち、多数の仮想マシーンまたはアプ
リケーション間で切り替えることによって、ハードウエ
ア装置の状態を変化させることができれる場合は、この
装置は常に対応するVxDを備える必要がある。
In Windows 95, VxD is a 32-bit protected mode module,
By managing the hardware devices of the computer and supporting the software, the device supports an independent VMM. VxD is a direct memory access (DMA)
All hardware devices in a typical computer system C are supported, including devices, IDE controllers, serial ports, parallel ports, keyboards, and video card adapters. VxD is required for any hardware device that has a programmable processing mode, that is, retains data for any period of time. That is, if the state of a hardware device can be changed by switching between multiple virtual machines or applications, the device must always have a corresponding VxD.

【0027】Windows(登録商標)95は、ユーザがカ
スタムVxDをインストールできるようにすることによ
って、ハードウエア装置の追加を支援する。また、Vx
Dがソフトウエアを支援することも許されているが、対
応するハードウエア装置については許されていない。
Windows 95 supports the addition of hardware devices by allowing users to install custom VxDs. Also, Vx
D is also allowed to support the software, but not the corresponding hardware devices.

【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とのインターフェースを
行う。
Modem Software Referring now to FIG. 5, there is shown various software configurations of the Windows 95 operating system implementing a controllerless modem according to the present invention. Modem software is organized as a software layer that intervenes between the application that wants to use the modem and the modem itself. Windows (R) 95 is Windows (R) 3.x and DOS
Is upward compatible. In the modem according to the embodiment disclosed herein, therefore, Windows 9
5 32-bit applications 100, Windows
(Registered trademark) 3.x 16-bit application 1
02 and the Windows (registered trademark) 95 DOS application 104. All of these applications run on Ring 3 and each interface with the modem module 114 in a slightly different manner.

【0029】32ビット・アプリケーション100で
は、サービス要求は、VCOMM.386 108、仮想
通信ドライバによって処理される。VCOMM.386
108は、プロテクト・モードが高速データ・ポートお
よび従来のRS−232シリアル・ポート(COMポー
ト)に対応できるようにする。VCOMM.386 10
8は、通信装置への全てのアクセスを管理し、128個
のシリアル・ポートまで対応可能である。
In a 32-bit application 100, service requests are processed by VCOMM.386 108, a virtual communication driver. VCOMM.386
108 allows the protected mode to accommodate high speed data ports and conventional RS-232 serial ports (COM ports). VCOMM.386 10
8 manages all access to the communication device and can handle up to 128 serial ports.

【0030】VCOMM.386 108は、Windows
(登録商標)95オペレーティング・システムに用いら
れている標準的なモジュールの1つであり、本発明によ
れば不変のままである。その様々なインターフェース・
プロトコルは、当業者にはよく知られている。
VCOMM.386 108 is compatible with Windows
One of the standard modules used in the <RTIgt; 95 </ RTI> operating system, which remains unchanged according to the present invention. Various interfaces
Protocols are well known to those skilled in the art.

【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を物理ポートであるかの
ように、直接これと通信することによって、通信資源に
アクセスする。
16 bits for Windows (registered trademark) 3.x
In the case of application 102, such an application cannot use the Windows® 95 architecture, and therefore requires a slightly different execution path. Communication software written for Windows (registered trademark) 3.x is a Win16Comm API (not shown).
Service is basically requested by using
It also envisages interfacing with another standard module of ndows® 95, the communication driver COMM.DRV106. COMM.DRV
106 is a set of exported functions (exported functio
n) and the application calls this
Implement a Windows (registered trademark) communication API. Windows
In (Registered Trademark) 95, COMM.DRV 106 is not connected to any specific communication hardware,
Not replaced, as was done in previous versions of ows®. COMM.DRV106
Access communication resources by communicating directly with VCOMM.386 108 as if it were a physical port.

【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に示す。
Windows® 3.x application 102 and 32-bit application 100
Then, VCOMM.386 108 is the CPQFMW9
5. Interface with VXD112. CPQF
The MW95.VXD 112 is a virtual port driver and can directly call the services of VCOMM.386 or it can be used by VCOMM.386 to access a communication port. In Windows 95, VCOMM.386 requires a virtual port device driver to communicate with physical hardware. CPQFMW95.XVD112 provides this virtual device driver. However, instead of communicating directly with the UART, as described below, the CPQFMW95.VXD 112 communicates with the modem module 1 through a virtual UART, which is represented by a bold line.
14 is communicated. In the preferred embodiment, the virtual UART is included in the modem module 114. In prior art systems, the UART chip is the hardware portion of the COM port of the computer system and actually communicates between the CPU system 10 and any device attached to the COM port. As described above, UARTs typically serialize and transmit parallel data, insert start, parity, and stop bits, receive serial data, and convert it to parallel data. The physical UART provides a variety of optional functions, including clock control and configurable registers. The necessary UART functions are implemented in software in the modem according to the preferred embodiment. CPQFMW95.
Details of the interface between the VXD and the modem module 114 are described below in connection with FIG. Appendix A shows the source code in assembly language.

【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規格に従っている。
[0033] Modem module 114 also includes modem code, which is typically programmed into a physical microcontroller. For compatibility with Windows® 3.x, the modem module 114 has two parts: CPQFM19A.38.
6 114a and CPQFM19B.386 114b
, But can be integrated in an implementation of Windows® 95. As mentioned above, the modem module 114 is operating system independent. The data terminal equipment (DTE) portion of the modem module 114 emulates the equipment (ie, computer, telephone, fax, etc.) located at the end of the transmission line that supplies or receives data. ). Further, the data communication equipment (DCE) portion of the modem module 114 emulates a data transmitter, typically a modem. In the preferred embodiment, the DTE portion of module 114 and DTE
The serial data exchange interface between the CE parts is based on EIA (Electronic Industries Association) R
It complies with the S232C standard.

【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により詳細に示されている。
Referring briefly to the Windows® 95 DOS application 104, data again reaches the modem module 114 through a different path. The data is first CPQFMDB.VXD110
Go to This is Windows (registered trademark) 95DOS
Interface, a port virtualized VxD that simulates the communication hardware for applications running in a "DOS box". This source
The code is shown in Appendix B. After registering with VCOMM.386, CPQFMDB.VXD110 is allowed to retransmit data to virtual port driver CPQFMW95.VXD112. CPQFMDB.VXD1
The interface between 10 and CPQFMW95.VXD 112 is shown in more detail in FIG.

【0035】モデム・モジュール114は、PCMCI
Aインターフェース26およびPCMCIAスロット接
続器28を通じて、モデム・カード30上のハードウエ
ア(特に、DSP58)に通信する。データ通信では、
モデム・モジュール114によってDSP58に送出さ
れた情報は、キャリア開始および停止コマンドと、送出
すべきデータとを含んでいる。モデム・モジュールは、
当業者には公知のモデムATコマンドを用いて、どのよ
うにしてデータをDSP58に送出するかを決定する。
データの受信後、DSP58はキャリア信号を発生し、
電話線を介してのデータを変調する。
The modem module 114 is a PCMCI
It communicates through A interface 26 and PCMCIA slot connector 28 to hardware on modem card 30 (specifically, DSP 58). In data communication,
Information sent by the modem module 114 to the DSP 58 includes carrier start and stop commands and data to be sent. The modem module is
A modem AT command known to those skilled in the art is used to determine how to send data to DSP 58.
After receiving the data, the DSP 58 generates a carrier signal,
Modulate data over telephone lines.

【0036】モデム・モジュール114を実施するハー
ドウエアは、概略的に、従来技術のシステムにおいてマ
イクロプログラム40をプログラムするために使用する
ソフトウエアと同一である。これは、C言語のような高
水準コードで書くことができ、種々のプロセッサ間での
移植を可能にする。更に、モデム・モジュール114が
元々マイクロコントローラ40のためにC言語で書かれ
たものである場合、これを単純にコンパイルし直すこと
によって、本発明によるモデム・モジュール114とし
て使用することができる。
The hardware that implements modem module 114 is generally identical to the software used to program microprogram 40 in prior art systems. It can be written in high-level code, such as C, and allows porting between various processors. Further, if the modem module 114 was originally written in C for the microcontroller 40, it can be used as the modem module 114 according to the present invention by simply recompiling it.

【0037】マイクロコントローラ40用のコードは、
当技術分野では一般的によく知られている。これは、R.
Scott & Associatesのような多数の供給元から入手可
能である。通常これは高水準言語で書かれているので、
様々なマイクロコントローラ40で使用可能である。し
かしながら、図2のマイクロコントローラ40を参照す
ると、マイクロコントローラ40に使用されているコー
ドはUART46およびDSP58との通信を念頭に入
れていることを、理解しなければならない。本発明によ
れば、UART46は、代わりに、添付資料Cに含まれ
る「仮想」コードとして実施されている。したがって、
「貼り付け」インターフェース(glue interface)がマイ
クロコントローラ40には必要となるので、ハードウエ
アのUARTではなく、その代わりにソフトウエア・ル
ーチンと通信し、UART46、およびコンピュータ・
システム自体に通常存在するUARTを仮想化する。こ
の「貼り付け」ルーチンも添付資料Cに示している。こ
れらのルーチンも、PCMCIAインターフェースを通
じて、PCMCIAモデム・カード30と通信するため
に使用される。
The code for the microcontroller 40 is
It is generally well known in the art. This is R.
Available from a number of sources, such as Scott & Associates. Usually this is written in a high-level language,
It can be used with various microcontrollers 40. However, referring to the microcontroller 40 of FIG. 2, it should be understood that the code used for the microcontroller 40 allows for communication with the UART 46 and the DSP 58. According to the present invention, UART 46 is instead implemented as "virtual" code contained in Appendix C. Therefore,
Because a "glue interface" is required for the microcontroller 40, it communicates with software routines instead of the hardware UART, instead of the UART 46, and the computer interface.
Virtualize the UART normally present in the system itself. This "paste" routine is also shown in Appendix C. These routines are also used to communicate with the PCMCIA modem card 30 through the PCMCIA interface.

【0038】DSP58によって発生されるハードウエ
ア割り込みは、割り込みハンドラVPICD.386 1
16を通じて、仮想ポート・ドライバCPQFMW9
5.VXD112に伝達される。VPICD.386 1
16は、標準的なマイクロソフトのVxDであり、シス
テムがブートされると直ちにインストールされる。ポー
ト・ドライバは、キューを用いて入出力処理を行うべき
ときには、このような割り込みハンドラをインストール
しなければならない。
The hardware interrupt generated by the DSP 58 includes an interrupt handler VPICD.3861.
16 through the virtual port driver CPQFMW9
5. Transmitted to VXD112. VPICD.386 1
16 is a standard Microsoft VxD, which is installed as soon as the system is booted. The port driver must install such an interrupt handler when performing input / output processing using the queue.

【0039】本発明にしたがって実施されたWindow(登
録商標)3.1の様々なソフトウエア構成を描いたブロ
ック図が図6に示されている。モデム・ソフトウエア
は、Window(登録商標)3.1およびWindow(登録商
標)3.1DOS用アプリケーション102、104と
実装されたモデム・カード30との間に挿入されたソフ
トウエア・レイヤとして組織されている。
A block diagram depicting various software configurations of Window® 3.1 implemented in accordance with the present invention is shown in FIG. The modem software is organized as a software layer inserted between the Window 3.1 and Window 3.1 DOS applications 102, 104 and the mounted modem card 30. ing.

【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)を使用すること
により、それをバッファ記憶する。
In the DOS application 104, reads and writes are port dependent and are received by the CPU system 10 and CPQFMVCD.386 1
22. CPQFMVCD.386 122
Is a low-level virtual communication driver (Vx) that processes DOS and Windows 3.1 applications.
D). CPQFMVCD.386 122 is a port virtualization VxD CPQFMDB.VXD110 (FIG. 5).
Performs some of the functions of Windows®
3.1 includes additional software to actually communicate with the physical port. Window (registered trademark) 95
Separates the virtual interface provided by VCOMM.386108 and CPQFMDB.VDX110 from the actual physical interface provided by CPQFMW95.VXD112 and modem software 114 as shown in FIG. Therefore, CPQFM
VCD.386 is preferably modified so that the data stream can be sent to a prior art modem or other serial port device. For the DOS application 104 that does not use the modem 30 without a controller, the CPFMVCD.386 122
Acquire the data stream and select COMBUFF.386 1
24 (standard Microsoft VxD) to buffer it.

【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により詳しく示されている。
For applications requiring a modem 30 without a controller, the data is CPQFMW
It is buffered through 31.386 126. CP
QFMW 31.386 126 is actually a COMBU
Implement some parts of the FF.386 124 code.
CPQFMW 31.386 126 is included as Appendix D. Next, the data is transferred to the modem module 11.
4 and subsequently sent out to the modem hardware. All serial port data is CPQFMV
CD.386 122. CPQFMVCD.3
86 122 has routine calls that allow it to communicate with the CPQFMW 31.386 126 register.
In the embodiment disclosed herein, CPQFMVCD.386
122 is Microsoft VxD, CPQFM
It has been slightly modified to recognize W31.386 126. The communication between CPQFMVCD.386 122 and CPQFMW31.386 126 is shown in more detail in FIGS. 8A and 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がこの役割を行うと想
定する。
However, the modem module 114
Is the same in both the implementation of Windows 3.1 in FIG. 6 and the implementation of Windows 95 in FIG. That is,
Only the virtual device driver which communicates with the virtual UART inside the modem module 114 is different. In Windows (registered trademark) 95, CPQFMW95.
Communication with the virtual UART code of the modem module 114 is performed using the VXD 112 (Additional Material A). In the Windows 3.1 version, it is assumed that the modem CPQFMW31.386 126 performs this role.

【0043】Windows(登録商標)3.1用アプリケーシ
ョン102では、通信はWindows(登録商標)プロテク
ト・モードAPI SSCom.drv120によって処
理される。SSCom.drv120は、ソフトウエア
・フック(software hook)を使用することにより、CP
QFMVCD.386 122にデータを渡す。その後、
データは、DOS用アプリケーションに用いたのと同じ
経路に従って移動する。
In the Windows® 3.1 application 102, communication is handled by the Windows® protected mode API SSCom.drv120. SSCom.drv 120 uses a software hook to create a CP.
Pass the data to QFMVCD.386 122. afterwards,
Data travels along the same path used for DOS applications.

【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間で通信されるデータをバッファ記憶するた
めに用いられる。
The CPQFMCFG.EXE 130 is a hidden Windows (registered trademark) application and is started together with Windows (registered trademark) 3.1. CP
QFMCFG.EXE 130 is the card service 132
Registered in. Card Services 132 uses sockets
It is a high-level interface to services (manufacturer dependent method of transmitting PCMCIA cards). PCMC
When the IA card 30 is inserted, the card service 132
Checks whether the card is a modem card 30 without a controller according to the present invention. On the spot, CPQF
Call MW31.386126 to indicate that a compliant card has been implemented. Then, CPQFMW3
1.386 126 is CPQFMVCD.386 122
, To direct subsequent modem data to the modem module 114. QUEUES 134
SSComm.drv120 and CPQFMW31.3
Used to buffer data communicated between 86126.

【0045】仮想化UARTは、CPQFMW31.3
86およびモデム・モジュール114間の太線で表され
ている。VPICD.386 116、モデム・モジュー
ル114、およびその他のシステム構成要素は、本質的
に、図5に関して論じたものと同一の機能を行う。
The virtualized UART is CPQFMW31.3.
86 and the modem module 114 are represented by the bold lines. VPICD.386 116, modem module 114, and other system components perform essentially the same functions as discussed with respect to FIG.

【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から、データを読み込まな
ければならない。
Referring to FIG. 7, CPQFMW95.V
The interface between XD 112 and modem module 114 is shown in detail. As described above, the interrupt handler VPICD.386 116 sends a hardware interrupt from the DSP 58 to CPQFMW95.VXD.
Transmit to 112. Furthermore, "virtual" from virtual UART
Finally, the interrupt handler VPIC
D.386 116. Shown is the CPQF
This is the case of received data going into the received data register of the virtual UART in the modem module 114 coupled to MW95.VXD. In that case, the "interrupt" is sent to the serial interrupt service routine in the CPQFMW95.VXD 112 by the modem module 11
4. Check the interrupt source in another register of the same virtual UART of 4. Based on this interrupt source, the interrupt routine jumps to an available routine based on the interrupt service jump table 112a. This routine must read data from the virtual UART in the modem module 114.

【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"入出力処理が同様のマクロで置き換えられる。
The standard UART service driver is
One has to consider how to read this data from the physical UART. Typically, x86 assembly language "IN" processing is performed from the appropriate input / output location. This can be done on ring 0. In ring 0, the code of FIG. 7 operates, but in this case, the UART to be read is a virtual UART. Therefore, instead of executing “IN” processing, CPQFMW9
5. The VXD 112 source code replaces each "IN" instruction with a macro. This macro calls the appropriate routine in the virtual UART that is coupled to CPQFMW95.VXD112 instead of compiling in-line code and performing "IN" processing. Regarding the writing process to the UART, it corresponds. "
OUT "input / output processing is replaced by a similar macro.

【0048】このように、"IN"および"OUT"入出力
命令を対応するマクロで置き換えることによって、標準
的な物理UART仮想装置ドライバをCPQFMW.V
XD112に使用することができる。図7のソフトウエ
ア相互作用の詳細は、図9〜図20のフローチャートに
示されている。
Thus, by replacing the "IN" and "OUT" input / output instructions with the corresponding macros, the standard physical UART virtual device driver can be replaced with the CPQFMW.V
Can be used for XD112. Details of the software interaction of FIG. 7 are shown in the flowcharts of FIGS.

【0049】しかし、更に、モデム・モジュール114
は、オペレーティング・システム間において仮想的に不
変のままでいることが可能である。これは、単純に、オ
ペレーティング・システムの装置ドライバへの「仮想」
UARTインターフェースを表わし、装置ドライバを多
少修正して、物理的な入力または出力を行う代わりに、
そのインターフェースをコールする。しかし、仮想化イ
ンターフェースのために、これ以上装置ドライバに変更
を加える必要はない。UARTに伝達可能であれば、仮
想化UARTにも伝達可能である。
However, furthermore, the modem module 114
Can remain virtually unchanged between operating systems. This is simply a "virtual" connection to the operating system device driver.
Instead of representing a UART interface and slightly modifying the device driver to provide physical input or output,
Call that interface. However, no further changes need to be made to the device driver for the virtualization interface. If it can be transmitted to the UART, it can also be transmitted to the virtualized UART.

【0050】PCMCIAカード30に対するモデム・
コントローラ114のインターフェースは、標準的なP
CMCIAインターフェースを介して行われる。モデム
・モジュール114のこの部分は、モデム・モジュール
114の残りの部分から分離され、ハードウエア・イン
ターフェースにおける変更を一部分に制限できるように
することが好ましい。このインターフェースのソース・
コードを添付資料Eに示している。
Modem for PCMCIA card 30
The interface of the controller 114 is a standard P
This is performed via the CMCIA interface. This part of the modem module 114 is preferably separated from the rest of the modem module 114 so that changes in the hardware interface can be limited in part. The source of this interface
The code is shown in Appendix E.

【0051】モデム・モジュール114はまた、実際の
システム割り込み、特に、VPICD.386 116に
よる、PCMCIAカード30自体のDSP58からの
割り込みからも分離することが好ましい。このようにす
れば、モデム・モジュール114は、割り込みソースの
ハードウエア構成には依存しない。更に、モデム・モジ
ュール114は、10ms毎にコールし、DSP58と
の通信を維持するために必要得なデータ処理を実行でき
るようにするが好ましい。
The modem module 114 also preferably isolates itself from actual system interrupts, in particular, from the PICCD.386 116, from the DSP 58 of the PCMCIA card 30 itself. In this way, the modem module 114 does not depend on the hardware configuration of the interrupt source. In addition, the modem module 114 preferably calls every 10 ms to allow any necessary data processing to be maintained to maintain communication with the DSP 58.

【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に戻
る、すなわちリターンする。
FIGS. 8A and 8B illustrate the use of CPQFMVCD / 386 to determine if a modem according to the present invention is installed in a computer system.
Reference numeral 122 denotes a routine used. First, FIG. 8A
With reference to the control, the routine VCD_DISPAT
Starting at CH_IO 200, this is followed by captured I / O. This routine is called CPQFMVCD.28
6 Included in the 122 software. Control then transfers to step 202 where VCHD_DISPATC
Call H_IO. This is CPQFMW31.3
86 included in the 126 module. The routine (FIG. 8B) first determines if it has captured a modem port without a controller. If so, control transfers to step 214 to clear the carry flag. If not, control transfers to step 216 to clear the carry flag. In either case, control then passes to step 218 and returns to, or returns to, VCD_DISpatch_IO 200.

【0053】このリターンに続いて、制御はステップ2
04に移行し、キャリー・フラグのステータスを検査す
る。キャリー・フラグがセットされている場合、制御は
ステップ206に移行し、I/Oコールは従来のように
実行される。キャリー・フラグがVCHD_DISPA
TCH_IO200によってセットされなかった場合、
コントローラを具備しないモデムI/Oとして、データ
・コールを行う。ステップ206または208のいずれ
かに続いて、制御は次にステップ210に移行しリター
ンする。
Following this return, control proceeds to step 2
Go to step 04 to check the status of the carry flag. If the carry flag is set, control passes to step 206 and the I / O call is performed as before. Carry flag is VCHD_DISPA
If not set by TCH_IO200,
Make a data call as a modem I / O without a controller. Following either step 206 or 208, control then transfers to step 210 and returns.

【0054】このソフトウエア・モジュールの構成を用
いて、従来のRS−232COMポートまたはISDN
ライン、更に次世代のパラレル・ポート・モデム上でも
動作するモデムに対応可能とすることが考えられる。
Using the configuration of this software module, a conventional RS-232COM port or ISDN
It is conceivable to be able to support a modem that operates on a line, and also on a next-generation parallel port modem.

【0055】本発明によって実現されるモデムは様々な
マイクロコントローラを含み、UART機能は仮想化さ
れたモデム・モジュールにおいて実現されることが明ら
かであろう。このソフトウエア・インプリメンテーショ
ンの結果、大幅な経済的節約およびデータ・レートの上
昇がもたらされる。更に、マイクロコントローラおよび
UART機能は、他のオペレーティング・システム・ソ
フトウエアからは独立したモジュールとして実施するこ
とにより、マイクロコントローラやUARTの仮想化バ
ージョンを他のオペレーティング・システムに容易に移
植(port)できるようにすることが好ましい。
It will be apparent that the modem implemented by the present invention includes various microcontrollers and the UART function is implemented in a virtualized modem module. This software implementation results in significant economic savings and increased data rates. Further, by implementing the microcontroller and UART functions as modules independent of other operating system software, virtualized versions of the microcontroller and UART can be easily ported to other operating systems. It is preferable to do so.

【0056】コントローラの無いモデムのモジュール化 再び図5、図6および図7を参照すると、本発明による
コントローラのないモジュールの機能分散が示されてい
る。図5および図6におけるCPQFMW31.386
126モジュールおよびCPQFMW95.VXD11
2モジュールは、仮想装置ドライバの異なる例示であ
り、それぞれ、前者はWindows(登録商標)3.1オペレ
ーティング・システムと互換性があり、他方はWindows
(登録商標)95オペレーティング・システムと互換性
がある。これらの装置ドライバがそれぞれ対応するオペ
レーティング・システムに合わせなければならないイン
ターフェースは異なるが、通常、これらは、UARTに
アクセスしなければならない種々のシステム構成要素お
よびUART自体間のソフトウエア・レイヤを形成する
ように書かれている。このために、これらの仮想装置ド
ライバは、他のシステム・ソフトウエアによってコール
された場合、通常、当該UARTのI/Oポートと対象
とする一連の入出力動作を通じて、物理UARTにアク
セスする。装置ドライバを種々のオペレーティング・シ
ステムに対して書くことは公知であるが、一旦標準的な
装置ドライバを新しいオペレーティング・システムのた
めに書いたなら、そのコードを変えなくても済むことが
望ましい。
Modularization of a Controllerless Modem Referring again to FIGS. 5, 6 and 7, the functional distribution of a controllerless module according to the present invention is shown. CPQFMW31.386 in FIGS. 5 and 6
126 modules and CPQFMW95.VXD11
The two modules are different examples of virtual device drivers, each of which is compatible with the Windows 3.1 operating system and the other is Windows
Compatible with the ® 95 operating system. Although the interfaces that these device drivers must each adapt to the corresponding operating system are different, they typically form a software layer between the various system components that must access the UART and the UART itself. It is written as follows. To this end, these virtual device drivers, when called by other system software, typically access the physical UART through the I / O port of the UART and a series of targeted I / O operations. It is known to write device drivers for various operating systems, but once a standard device driver has been written for a new operating system, it is desirable to keep the code unchanged.

【0057】しかし、本発明によるコントローラの具備
しないモデムでは、物理UARTは勿論存在しない。し
かしながら、各オペレーティング・システムに対して、
UARTに対する広範な装置ドライバは存在する。本発
明によれば、この大量のコードを破棄したり、あるいは
それを修正してモデム・モジュール114自体に統合す
る代わりに、モデム・モジュール114および仮想装置
ドライバ間のインターフェースが、「仮想」UARTの
形態を取っている。このように、標準的な仮想装置ドラ
イバを使用し、僅かな修正のみで、新たなシステムが実
施されたモデム・モジュール114と通信可能となる。
モデム・モジュール114は「仮想」UARTを含むの
で、これらの仮想装置ドライバに必要な実際の変更は、
物理UART自体への実際の入出力動作ではなく、それ
らの入出力処理を、「仮想UART」へのコールという
形態の対応する「仮想」処理で置き換えるのみである。
However, in a modem without a controller according to the present invention, a physical UART does not exist. However, for each operating system,
There is a wide range of device drivers for UARTs. In accordance with the present invention, instead of discarding or modifying this bulk of the code and integrating it into the modem module 114 itself, the interface between the modem module 114 and the virtual device driver is based on the "virtual" UART. Taking the form. In this manner, the new system can communicate with the implemented modem module 114 using standard virtual device drivers and with only minor modifications.
Since the modem module 114 includes a "virtual" UART, the actual changes required for these virtual device drivers are:
It merely replaces those I / O operations with corresponding "virtual" operations in the form of calls to "virtual UARTs", rather than actual I / O operations on the physical UART itself.

【0058】したがって、オペレーティング・システム
の変更に対して、CPQFMW95.VXD112モジ
ュールに対応する適切なCPQFMW31.386 12
6モジュールを、僅かに修正するだけでよい。モデム・
ハードウエア30が変わらない場合、同一のモデム・モ
ジュール114は殆ど変更なく使用することができる。
逆に、DSP58のようなモデム・ハードウエアを変更
すると、モデム・モジュール114内の「仮想」マイク
ロコントローラに対する異なるコードを用いて、新たな
DSPにアクセスすることができる。
Therefore, in response to changes in the operating system, the appropriate CPQFMW31.386 12 corresponding to the CPQFMW95.VXD112 module
The six modules need only be modified slightly. modem·
If the hardware 30 does not change, the same modem module 114 can be used with little change.
Conversely, changing the modem hardware, such as DSP 58, allows the new DSP to be accessed using a different code for the "virtual" microcontroller in modem module 114.

【0059】このモジュラー・ソフトウエア手法を用い
ると、新たなオペレーティング・システムへの移植がむ
しろ簡単になる。その新しいオペレーティング・システ
ムのための標準的モデムまたはUARTソフトウエアを
用いることができる。ソフトウエアは容易に入手可能で
あり、モデム・モジュール114の形態の仮想モデム・
コントローラを、単純に新たなオペレーティング・シス
テムに移植し、必要であれば、仮想装置ドライバへの
「仮想UART」インターフェースを有する別のCPU
システム10に再度コンパイルすることも可能である。
With this modular software approach, porting to new operating systems is rather simple. Standard modem or UART software for the new operating system can be used. The software is readily available and includes a virtual modem
Simply port the controller to the new operating system and, if necessary, another CPU with a "virtual UART" interface to the virtual device driver
It is also possible to recompile into system 10.

【0060】UARTの基礎 IBMPC互換コンピュータでは、UARTは基準ポー
トから始まる入出力アドレスに一連の標準ポートを有す
る。これらの入出力アドレスにアクセスするには、一般
に、x86命令セットにおける入出力命令を用いる。即
ち、これらのポートの1つから入力するために用いる命
令は"IN AL, DX"であり、DXレジスタによって
指定されるI/Oアドレスに位置するデータを、ALレ
ジスタに入力する。同様に、DXレジスタにおいて指定
されるポートにALレジスタ内のデータを出力するに
は、"OUT DX, AL"命令を実行する。
UART Basics On an IBM PC compatible computer, the UART has a series of standard ports at input / output addresses starting from the reference port. To access these I / O addresses, I / O instructions in the x86 instruction set are generally used. That is, the instruction used to input from one of these ports is "IN AL, DX", and the data located at the I / O address specified by the DX register is input to the AL register. Similarly, to output the data in the AL register to the port specified by the DX register, an “OUT DX, AL” instruction is executed.

【0061】IBMPCにおいて用いられる標準的なU
ARTは8250、あるいはそれと互換性のある後発製
品の1つは、16450または16550である。該U
ARTにおける標準的なポートは以下の通りである。
The standard U used in IBMPC
The ART is 8250, or one of the compatible generic products is 16450 or 16550. The U
The standard ports in ART are as follows.

【0062】[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のようなデータ・ビットを備えている。
Table 1 Register Offset DLAB Receive Buffer Register (DAT) 00h 0 Transmission Hold Register (DAT) 00h 0 Interrupt Enable Register (IER) 01h- Interrupt Identification Register (IIR) 02h- Data Format Register (Line Control Register) ) (LCR) 03h- Modem Control Register (MCR) 04h- Serialization Status Register (Line Status Register) (LSR) 05h- Modem Status Register (MSR) 06h- Scratch Pad Register (SCR) 07h- data written to the divisor latch registers (located in the LCR) lower bits (DLL) 00h 1 divisor latch registers upper bits (DLH) 01h 1 DLAB = divisor latch access bit these registers or Data is read from these, with known standard meaning in the art. For example, performing a write to the transmit holding register DAT places a data byte in the transmit holding register for later transmission over a serial line. As another example, the line status register LSR includes a transmission holding register empty bit THRE, a transmission shift register empty bit TSRE, and an interruption detection bit B
RKI, framing error bit FRMR, parity error bit PARE, overrun error bit ORRE, and received data available bit R
It has data bits such as 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イ
ンターフェースを介することになる。
Standard device drivers, similar to the CPQFMW31.386 126 module and the CPQFMW95.VXD112, typically use I / O instructions to directly access these hardware registers at these I / O ports. According to the present invention, virtually one change to these virtual device drivers is made for each "INA"
Replace the "L, DX" and "OUT DX, AL" instructions with the corresponding macro instructions "INALDX" and "OUTDXAL." These macros, when compiled, simulate register access to the 16450 UART. Make a call to the paste logic, which is described in SIM 450.
It is in the C routine and will be described in more detail below in connection with FIGS. The paste logic receives the same parameters of a standard I / O command to a standard physical UART and returns the same corresponding data. Therefore,
Normally, standard device drivers that access the hardware UART can be used, but will instead be through the SIM 450.C virtual UART interface of the modem module 114.

【0064】この仮想UARTインターフェースの動作
に移る前に、仮想装置ソフトウエア・モジュール11
2、126、およびモデム・モジュール114に対する
いくつかの別の細かい改造について認識すべきであろ
う。まず、モデム・モジュール114が図2に示したそ
れ自体の専用マイクロコントローラ40に予め実現され
ていた場合、マイクロコントローラ40は他の機能を有
さないので、実質的に連続して動作することができる。
ここでは、モデム・モジュール114は、他の仕事を有
するCPUシステムによって実行されるように実現され
ているので、モデム・モジュール114は、その必要な
機能を遂行した後は、代わりに制御を放棄しなければな
らない。このために必要となることは殆どなく、モデム
・モジュール114が、保持ループに進むのではなく、
確実にオペレーティング・システムにリターンすること
だけである。
Before proceeding to the operation of the virtual UART interface, the virtual device software module 11
2, 126, and some other minor modifications to the modem module 114. First, if the modem module 114 had previously been implemented in its own dedicated microcontroller 40 as shown in FIG. it can.
Here, since the modem module 114 is implemented to be executed by a CPU system having other tasks, the modem module 114 will instead relinquish control after performing its necessary functions. There must be. There is little need for this, and rather than the modem module 114 going into a holding loop,
It only ensures that you return to the operating system.

【0065】モデム・モジュール114は周期的にオペ
レーティング・システムに戻らなければならないので、
その所望の機能を実行するために、オペレーティング・
システムも周期的にモデム・モジュール114をコール
しなければならない。これは、通常、オペレーティング
・システム自体の内部で、タイマ・ソフトウエアによっ
て行われる。即ち、周期的にモデム・モジュール114
をコールし、その所望の機能を遂行するようにするに
は、標準的なタイマ装置が必要となる。これを達成する
には、2通りの方法がある。第1に、モデム・モジュー
ル114をタイマによって周期的にコールする。第2
に、DSP58は周期的にモデム・モジュール114に
よるサービスを要求するので、DSP58がVPIC
D.386 116モジュールに割り込みを供給し、これ
によって、モデム・モジュール114および仮想装置モ
ジュール112または126の双方を実行させる。
Since the modem module 114 must periodically return to the operating system,
Operating system to perform its desired function
The system must also call the modem module 114 periodically. This is usually done by timer software, inside the operating system itself. That is, the modem module 114 is periodically
Call to perform the desired function, a standard timer device is required. There are two ways to achieve this. First, the modem module 114 is called periodically by a timer. Second
Since the DSP 58 periodically requests service from the modem module 114, the DSP 58
An interrupt is provided to the D.386 116 module, which causes both the modem module 114 and the virtual device module 112 or 126 to execute.

【0066】標準的なUART仮想装置の変更 図9および図10に移ると、これらの図は、モデム・モ
ジュール114にアクセスする際に、CPQFMW9
5.VXD112モジュール内部で実行される標準的な
ルーチンのフロー・チャートの一例を示している。PP
ORTOPENルーチン300が例示のために提示され
ている。このルーチン300は、通常、VCOMM.3
86 108モジュールやCPQFMDB.VXD110
モジュールのような、オペレーティング・システム・ソ
フトウエア内部の他のルーチンによってコールされる。
勿論、CPQFMW95.VXD112モジュール内部
には他にも多数のルーチンが存在し、これらはオペレー
ティング・システム内の他のルーチンによってコールさ
れる。これら種々のモジュールはUARTにアクセスし
て、シリアル装置との間のデータ送信および受信を行う
と共に、UARTの制御を行う。しかし、この例示のル
ーチン300は、物理的なコールがいかにして仮想コー
ルと簡単に交換されるかを示すものである。
Changing the Standard UART Virtual Device Turning now to FIGS. 9 and 10, these figures show that when accessing the modem module 114, the CPQFMW9
5. Shows an example of a flow chart of a standard routine executed inside the VXD112 module. PP
An ORTOPEN routine 300 is provided for illustration. This routine 300 usually has a VCOMM.3
86 108 modules and CPQFMDB.VXD110
Called by other routines within the operating system software, such as modules.
Of course, there are many other routines within the CPQFMW95.VXD112 module that are called by other routines in the operating system. These various modules access the UART to send and receive data to and from the serial device and control the UART. However, this example routine 300 illustrates how a physical call can be easily exchanged for a virtual call.

【0067】ステップ302から開始し、ルーチン30
0は、ポートが存在するが未だにオープン状態でないか
否かを判定する。虚の場合、制御はステップ304に移
行し、ポートが存在しないか、あるいはポートが未だオ
ープン状態でないので、ルーチンはリターンする。そう
でなければ、制御はステップ302からステップ306
に移行し、このポートに対するデータ構造を確立する。
次に、ステップ308に移行し、オープンしたいシリア
ル・ポートのポート基準アドレスにオフセットの03h
を加えたものを、EDXレジスタにロードする。このオ
フセットは、標準的な8259、16450、1655
0UARTに対する、ライン制御レジスタLCRポート
のオフセットに対応する。したがって、EDXレジスタ
は、この時点で、LCRポートからの入力のための適切
なポート・アドレスを有することになる。
Starting from step 302, the routine 30
0 determines whether the port exists but is not yet open. If not, control transfers to step 304 and the routine returns because the port does not exist or the port is not yet open. Otherwise, control proceeds from step 302 to step 306.
And establish a data structure for this port.
Next, the processing shifts to step 308, where the offset 03h is added to the port reference address of the serial port to be opened.
Is loaded into the EDX register. This offset is the standard 8259, 16450, 1655
Corresponds to the offset of the line control register LCR port with respect to 0UART. Thus, the EDX register will now have the appropriate port address for input from the LCR port.

【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に移行し、他の設定を
実行する。
The process proceeds to step 310, where "INALD
X "routine 350. As discussed below in connection with FIG. 11, this routine is actually a virtual UAR.
Preferably, it is a macro that forms the extended inline code that calls the appropriate paste logic in the T interface. On the other hand, the virtual UART interface calls the modem module 114. In step 310, the "INALDX" macro uses the x86 processor's "IN AL, DX" instruction to create a physical UAR.
Performs exactly the same function as when reading from the T line control register LCR. More specifically, the AL register now contains the data input from the "virtual" line control register LCR. Control goes to step 312 to set the high-order bit of the AL register. this is,
Corresponds to divisor latch access bit DLAB of line control register LCR. Next, proceed to step 314,
Execute the corresponding "OUTDXAL" macro, and set the D in the line control register LCR of the "virtual" UART according to the invention
Set LAB. Control then proceeds to step 316, where 00h is added to the reference port address,
Load DX register. This corresponds to the divisor latch lower bit register DLL. In step 318, execute the INALDX macro to read from the virtual UART into the divisor latch low byte DLL. Step 32
At 0, the AL register is saved and the reference port address plus 01h is loaded into the EDX register. This corresponds to the divisor latch upper byte DLH.
In step 322, the byte is read using the INALDX macro. Next, proceeding to step 324, combining the lower and upper bytes of the divisor latch,
Store. In step 326, the original line control register LCR input value is loaded into AL. Next, the process proceeds to step 328, where the OUTDXAL macro is executed to restore the line control register LCR to its original value. That is,
Disable DLAB if it was originally disabled. Next, the process proceeds to step 330 to execute other settings.

【0069】この一連の命令の要点は、モデム・モジュ
ール114内に配置された仮想UARTが、あたかも実
際のUARTであるかのように、同じくアクセスされる
ことである。前述のシーケンスは、除数ラッチに適切な
値をセットするために実行され、実際にボー・レートを
セットした。データは仮想的に瞬時にモデム・モジュー
ル114と、仮想UARTを通じてこのソフトウエアを
コールしたいずれかの装置ドライバとの間で転送される
ので、仮想UARTには「ボー・レート」は事実上ない
ことを考慮しなければならない。しかし、標準的なUA
RT装置ドライバは、ボー・レートをセットしアクセス
可能であることを念頭に入れているので、仮想UART
は、実際には何も行わなくても、仮想除算ラッチ・バイ
トへのアクセスを与える。このように、既存のハードウ
エアUART装置ドライバを変更し、モデム・モジュー
ル114の仮想UARTと共に使用可能とするのは容易
である。
The point of this series of instructions is that the virtual UART located within the modem module 114 is also accessed as if it were a real UART. The above sequence was performed to set the divisor latch to the appropriate value, and indeed set the baud rate. Virtual ARTs have virtually no "baud rate" because data is transferred virtually instantaneously between the modem module 114 and any device driver that has called this software through the virtual UART. Must be considered. But standard UA
Since the RT device driver sets the baud rate and keeps in mind that it is accessible, the virtual UART
Gives access to the virtual divide latch byte without actually doing anything. Thus, it is easy to modify an existing hardware UART device driver to be usable with the virtual UART of the modem module 114.

【0070】ルーチンを完了するために、制御は次にス
テップ332に移行し、ここでエラーが検出されたな
ら、制御はステップ334に移行し、ルーチンはリター
ンする。エラーがなかった場合、制御は代わりに332
からステップ336に移行し、ポート基準アドレスにモ
デム制御MCRに対する適切なオフセットを加えたもの
を入力する。次に、そのデータのOUTZビットをイネ
ーブルし、ステップ338においてOUTDXALマク
ロを用いて出力する。次に制御はステップ340に移行
し、割り込み要求ラインIRQを非マスク(unmask)する
ためにコールを行う。以下で論ずるが、仮想UARTも
適切なオペレーティング・システム割り込みサービス・
ルーチンへの「仮想」割り込みを発生する。ステップ3
40から移行して、次に制御はステップ342でリター
ンする。
To complete the routine, control then transfers to step 332 where, if an error is detected, control transfers to step 334 and the routine returns. If there were no errors, control returns to 332 instead.
Then, the process goes to step 336 to input the port reference address plus an appropriate offset for the modem control MCR. Next, the OUTZ bit of the data is enabled, and in step 338, the data is output using the OUTDXAL macro. Control then transfers to step 340 where a call is made to unmask the interrupt request line IRQ. As discussed below, virtual UARTs are also suitable operating system interrupt services.
Generate a "virtual" interrupt to the routine. Step 3
Moving from 40, control then returns at step 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は、実際には、貼り
付けロジックへのコールを、標準的な入出力命令と交換
する。
Turning to FIG. 11, two macro routines INALDX 350 and OUTDXAL 360 are shown. The INALDX routine 350 replaces the standard INAL, DX instructions on the X86 series of microprocessors. On the other hand, OUTDXAL routine 36
9 correspondingly replaces the OUT DX, AL instruction. These are not callable routines, but instead are macros, which are assembled inline in the CPQFMW95.VXD112 module, the CPQFMDB.VXD110 module, and the corresponding routine in FIG. The INALDX routine 350 and OUTDXAL routine 360 actually exchange calls to the paste logic with standard I / O instructions.

【0072】INALDXルーチン350はステップ3
52から開始し、ここで変更されたレジスタを全てセー
ブする。ステップ354に移って、貼り付けルーチンV
IPD1_REG_READに仮想装置ドライバ・コー
ルを行う。このルーチンについては、以下で図12に関
連付けて更に論ずるが、DXレジスタの物理アドレスを
はぎ取り、オフセットを残し、次に仮想UARTルーチ
ンをコールする。このルーチンについては、図13〜図
20に関連付けて以下で論じる。
The INALDX routine 350 is a step 3
Starting from 52, all the changed registers are saved. Proceeding to step 354, the paste routine V
Make a virtual device driver call to IPD1_REG_READ. This routine is discussed further below in connection with FIG. 12, but stripping the physical address of the DX register, leaving the offset, and then calling the virtual UART routine. This routine is discussed below in connection with FIGS.

【0073】ステップ356に移行し、レジスタを復元
し、ステップ354におけるコールの結果をALレジス
タに格納する。次に、ステップ358において、インラ
イン・マクロを実行し、他のコードが実行し続けるよう
にする。
The flow shifts to step 356 to restore the register, and stores the result of the call in step 354 in the AL register. Next, at step 358, the inline macro is executed so that other code continues to execute.

【0074】OUTDXALルーチン360も同様に動
作し、ステップ362から開始して、ここでレジスタを
格納する。次に、制御はステップ364に移行し、貼り
付けロジック・ルーチン(図12参照)、即ち、VIP
D1_REG_WRITEをコールする。次に、制御は
ステップ366に移行し、レジスタを復元し、ルーチン
はステップ368において完了する。
The OUTDXAL routine 360 operates in a similar manner, starting at step 362, where the registers are stored. Next, control transfers to step 364 where the paste logic routine (see FIG. 12), ie, VIP
Call D1_REG_WRITE. Next, control passes to step 366 to restore the registers and the routine is completed at step 368.

【0075】INALDXルーチン350およびOUT
DXALルーチン360を、単に適切なI/O処理と置
き換えれば、種々の装置ドライバは、事実上変更なく、
ハードウエアのUARTと共に通常に動作することが理
解されるであろう。
INALDX Routine 350 and OUT
By simply replacing the DXAL routine 360 with the appropriate I / O operations, the various device drivers are virtually unchanged.
It will be appreciated that it works normally with hardware UARTs.

【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の適切なポートにオフセットを残す。
Turning to FIG. 12, VIPD1_REG_R
EAD routine 370 and VIPD1_REG_WR
The ITE routine 380 is shown. These routines are called in steps 354 and 364 of FIG.
Paste logic to bridge between T and the rest of the operating system. VIPD1_
The REF_READ routine 370 begins at step 372, where it performs a binary AND operation on the address in the DX register with 07h, strips off the physical address, and leaves an offset at the appropriate port of a standard 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)のマク
ロ・インライン・コードにリターンする。
The flow shifts to step 374, where VIPD1_R
The EG_READ routine 370 is a routine SIM45
Call 0_READ400. Virtual UART IM
450_READ routine 400 is 16450 UAR
Simulate the lead from the port of T. This routine 400 performs a "read" from the appropriate "port" of the virtual UART. Proceed to step 376 to
The PD1_REG_READ routine 370 returns to the macro inline code of the INALDX routine 350 (FIG. 11) that called it.

【0078】VIPD1_REG_WRITEルーチン
380も同様に動作する。ステップ382から開始し、
07hとの二進AND演算によって、DXレジスタから
アドレスをはぎ取る。次に、ステップ384に移行し、
SIM450_WRITEルーチン500をコールし、
仮想UARTの「ポート」への「ライト」を実行する。
次いでステップ386に移行し、VIPD1_REG_
WRITEルーチン380は、それをコールしたOUT
DXALルーチン360のインライン・コード(図1
1)にリターンする。
The VIPD1_REG_WRITE routine 380 operates similarly. Starting at step 382,
The address is stripped from the DX register by a binary AND operation with 07h. Next, the process proceeds to step 384,
Call the SIM450_WRITE routine 500,
The “write” to the “port” of the virtual UART is executed.
Next, the flow shifts to step 386, where VIPD1_REG_
WRITE routine 380 returns the OUT that called it.
DXAL routine 360 inline code (FIG. 1)
Return to 1).

【0079】VIPD1_REG_READルーチン3
70およびVIPD1_REG_WRITEルーチン3
80は、添付資料Cのソース・コードに示されている。
INALDXルーチン350およびOUTDXALルー
チン360は、例えば、添付資料Aのソース・コードの
中のマクロとして示されている。これらのフローチャー
トは全て例示的なものであり、更なる詳細は添付資料の
ソース・コードの中で見ることができる。
VIPD1_REG_READ Routine 3
70 and VIPD1_REG_WRITE routine 3
80 is shown in the source code of Appendix C.
The INALDX routine 350 and the OUTDXAL routine 360 are shown, for example, as macros in the source code of Appendix A. All of these flowcharts are exemplary, and further details can be found in the source code of the appendix.

【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変数となる。
Read and write rules for virtual UART
Turning to Chin FIGS. 14 and 15, SIM450_READ
The routine 400 is shown. This is VIPD1_
Called in step 374 of REG_READ routine 370 (step 12). SIM_450READ
Before moving on to the details of the routine 400, some notational conventions will be described. Data used only in the SIM450_READ routine 400 is typically stored in one structure. This is the same as the source code list attached as Appendix C, SIM450. H and SIM450. Located in the H module,
It can be found in the source code of the routine. The main data structure is the SIM450_DATA structure, in which the traditional C program notation is used
Store variables in a structure. For example, the contents of the "virtual" scratchpad register is SIM450_DA
It is in the TA / SCRATECH variable. Since the short notation is used instead of the list "SIM450_DATA" as a preface to each reference to this data structure, SIM450_DATA. SCRATC
The H variable is simply a .SCRATCH variable.

【0081】更に、明確化のために、SIM450_R
EADルーチン400のフローチャートからは、ある種
の詳細を省いてある。具体的には、SIM450_RE
ADルーチン400は、モデム・モジュール114自体
の内部に実施されている一連のコールを通じて、モデム
・モジュール114と通信を行う。モデム・モジュール
114は、多数の「フック」を含み、これが、異なるタ
イプのソフトウエア・インターフェースとの様々な方法
での通信を可能にする。このように、再び図2を参照す
ると、モデム・モジュール114は、マイクロコントロ
ーラ40内に実施されUART46と通信を行うことが
でき、あるいは、代わりにその貼り付けルーチンを通じ
て様々な他のタイプの装置と通信を行うことができる。
モデム・モジュール114に対する「フック」は、種々
の制御パラメータの設定、およびデータの送受信の双方
をコールする多数のソフトウエア・コールを含む。通
常、データは、SIM450.Cモジュール自体によっ
て維持されているデータ・アレイとの間で送受信が行わ
れる。これらのルーチン各々について詳細に論ずる代わ
りに、これらのルーチンのいくつかを概略的に論じて、
いかにしてこれらがSIM450.Cモジュールとイン
ターフェースするのかについて説明する。
Further, for clarity, SIM450_R
Certain details have been omitted from the flowchart of the EAD routine 400. Specifically, SIM450_RE
The AD routine 400 communicates with the modem module 114 through a series of calls implemented within the modem module 114 itself. Modem module 114 includes a number of "hooks", which allow it to communicate with different types of software interfaces in various ways. Thus, referring again to FIG. 2, the modem module 114 can be implemented within the microcontroller 40 to communicate with the UART 46 or, alternatively, communicate with various other types of devices through its paste routine. Communication can be performed.
"Hooks" to the modem module 114 include a number of software calls that call for both setting various control parameters and sending and receiving data. Typically, data is sent to and received from a data array maintained by the SIM450.C module itself. Instead of discussing each of these routines in detail, some of these routines will be discussed schematically,
We will describe how they interface with the SIM450.C module.

【0082】モデム技術に精通する者には認められよう
が、モデム・モジュール114は、典型的に、電話線を
通じてSIM450コードとの間で送受信されるデータ
を通信するためのコードを含むが、更に、標準的なHa
yes”AT”コマンド・セットを実施する制御ソフト
ウエアも含む。即ち、モデム・モジュール114が送受
信モードにあるとき、実際のデータは電話線を通じて送
受信される。このモードは、典型的に、ユーザが3つの
連続する「+++」記号、即ち、標準的な”AT”エス
ケープ・シーケンスを入力することによって終了する。
これによって、モデム・モジュール114は制御モード
に入る。そのモードでは、モデム・モジュール114
は、コンピュータ自体からの”AT”コマンドに応答す
るが、遠隔通信リンクを介してのデータ通信は行わな
い。
As will be appreciated by those familiar with modem technology, modem module 114 typically includes code for communicating data to and from the SIM450 code over telephone lines, but , Standard Ha
Also includes control software that implements the "AT" command set. That is, when the modem module 114 is in the transmit / receive mode, the actual data is transmitted and received over the telephone line. This mode is typically terminated by the user entering three consecutive "++" symbols, a standard "AT" escape sequence.
This causes the modem module 114 to enter the control mode. In that mode, the modem module 114
Responds to "AT" commands from the computer itself, but does not communicate data over the telecommunications link.

【0083】モデム・モジュール114によって実施さ
れた1つのタイプの通信モードにフロー制御モードがあ
り、このモードでは、いずれかのソフトウエア・コード
を用いて、モデム・モジュール114へのデータ伝送を
開始および終了するか、あるいはハードウエア・フロー
制御モデルを用いる。後者の場合、送出消去ビット(cl
ear to send bit)CTSおよび送出レディ・ビット(r
eady to send bit)RTSを用いて、データを送出可能
かまたは受信可能かを示す。このコードは、SIM45
0.Cのフローチャートには示されていないが、添付資
料Cの中に添付されているSIM450.Cの中にあ
る。このコードをどのようにして組み込むかについて
は、容易に理解されるであろう。
One type of communication mode implemented by the modem module 114 is a flow control mode, in which data transmission to the modem module 114 is initiated and initiated using any software code. Terminate or use hardware flow control model. In the latter case, the transmission erase bit (cl
ear to send bit) CTS and send ready bit (r
eady to send bit) Indicates whether data can be sent or received using RTS. This code is SIM45
0. C is not shown in the flowchart, but is in SIM450.C attached in Appendix C. It will be easy to understand how to incorporate this code.

【0084】SIM450_READルーチン400
は、一連のケース・ステートメントとして実行する。第
1のケースはステップ402から開始し、コールされた
値がスクラッチパッド・レジスタSCRのオフセットに
対応するときに、ここに制御が移る。標準的なUART
では、これは07hのポート・オフセットに対応する。
そうであれば、.SCRATCH 変数の内容を一時的
変数Bにロードする。次に、制御はステップ404に移
行し、ここでルーチンはB変数の内容をパラメータとし
て、リターンする。
SIM450_READ Routine 400
Is executed as a series of case statements. The first case starts at step 402 where control transfers when the value called corresponds to an offset in the scratchpad register SCR. Standard UART
Now, this corresponds to a port offset of 07h.
in that case,. Load the contents of the SCRATCH variable into temporary variable B. Next, control proceeds to step 404, where the routine returns with the contents of the B variable as a parameter.

【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か
ら「リード」が行われたことになる。
To better understand the operation of the simulated UART, consider briefly FIGS. 9-14 in connection with reading a scratchpad register. While the DX register contains the reference address of the desired port plus an offset of 07h corresponding to the scratch pad register SCR, INALD
Assume that X routine 350 is to be executed. Then, IN
The ALDX routine 350 determines in step 354 that V
Calls the IPD1_REG_READ routine 370, which strips off all but the 07h offset, and in step 374 the SIM 450
Call the _READ routine 400. Next, in step 402, the .SCLATCH variable is loaded into the variable, and the process returns in step 404. Next, in step 356 of the INALDX routine 350, this data is stored in the AL register. In this way, a "read" has been performed from the "virtual" scratchpad register 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の機能をシミュレートしたものであるこ
とは理解されるであろう。
The rest of the standard registers can be read in a similar manner. The SIM450_READ routine 400 moves to step 406 if the offset corresponds to the modem status register MSR.
In this case, in step 406, the contents of the modem status register .MSR are loaded into the B variable. This variable contains the contents of the virtual UART's MSR register. Proceeding to step 408, the delta bit of the .MSR variable is cleared. These bits are. MSR
The lower 4 bits of the variable, since the last reading of the .MSR variable, the data carrier detect bit (DCD), ring indicator bit (RI), data set ready bit (DSR), or clear transmission (CT
S) Bits (all of which are in the upper four bits of the .MSR variable) correspond to the bits used in a standard UART to detect if they have changed. It should be understood that this simulates the functionality of a standard 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においてこの
値を返送する。
In step 410, the LOOP bit of the modem control register variable .MSR is checked. If this bit is true, the virtual UART is 16450 UAR
Loop back, the standard mode of operation for T
In mode. If not, control transfers to step 404 and the SIMU450_READ routine 400 returns with the contents of the .MSR variable. In step 410. If the LOOP bit of the MCR variable is true, control instead passes to step 412, where the lower 4 bits of the .MSR variable included in the B variable and the lower 4 bits of the left shifted .MCR variable.
Store the bit in B. If the LOOP bit of the .MCR variable is set, this is returned in step 404 since this is the appropriate value to return for reading the modem status register MSR in the standard UART.

【0088】ライン・ステータス・レジスタLSRから
の読み出しが行われると、制御はステップ400からス
テップ414に移行し、ステップ414においてライン
・ステータス・レジスタ変数.LSRの内容をB変数に
ロードし、次いで制御はステップ416に移行し、01
EhとのANDを取った.LSR変数の内容を.LSR変
数にロードし、適切なビットをマスクして、パリティ・
エラー・ビット、オーバーラン・エラー・ビット、およ
びフレーム・エラー・ビットをクリアする。次に、制御
はステップ418に移行し、EVALUATE_INT
ERRUPTルーチン600をコールし(図18および
図19)、次いでルーチン400はステップ400にお
いてリターンする。
When reading from the line status register LSR is performed, the control shifts from step 400 to step 414. At step 414, the contents of the line status register variable .LSR are loaded into the B variable, and then the control is performed. Moves to step 416, where 01
Loaded the contents of the .LSR variable into the .LSR variable, masked the appropriate bits,
Clear error, overrun, and frame error bits. Next, control proceeds to step 418, where EVALUATE_INT
The ERROR routine 600 is called (FIGS. 18 and 19), and the routine 400 then returns at step 400.

【0089】EVALUATE_INTERRUPTル
ーチン418は、仮想「割り込み」を実行すべきか否か
について評価を行う。仮想割り込みは、図5および図6
の様々な装置ドライバ内に配置されている割り込みサー
ビス・ルーチンの1つへのコールによって起動される。
勿論、UARTからの真のハードウエア割り込みが使用
するための標準的な割り込みサービス・ルーチンもあ
り、このサービス・ルーチンは、したがって、「仮想」
割り込が必要な場合に、コールされる。EVALUAT
E_INTERRUPTルーチン600は、かかる仮想
割り込みを起動することが必要な適切な時にコールされ
る。例えば、標準的なUARTのライン・ステータス・
レジスタLSRを読むとき、追加データが得られ割り込
みがイネーブルされると、割り込みが実行されて、追加
データが実際に得られることを示す。これは、割り込み
を少なくとも評価し、割り込みを実行すべきかを判定す
る場合であり、EVALUATE_INTERRUPT
ルーチン600がこの評価を行う。
The EVALUATE_INTERRUPT routine 418 evaluates whether a virtual “interrupt” should be performed. The virtual interrupt is shown in FIG. 5 and FIG.
Invoked by a call to one of the interrupt service routines located in the various device drivers.
Of course, there is also a standard interrupt service routine for use by a true hardware interrupt from the UART, which service is therefore "virtual"
Called when an interrupt is required. EVALUAT
The E_INTERRUPT routine 600 is called at the appropriate time when it is necessary to trigger such a virtual interrupt. For example, a standard UART line status
When reading the register LSR, if additional data is available and the interrupt is enabled, an interrupt is executed to indicate that the additional data is actually available. This is the case where at least the interrupt is evaluated and it is determined whether the interrupt should be executed. EVALUATE_INTERRUPT
Routine 600 makes this evaluation.

【0090】モデム制御レジスタMCRを読む場合、制
御はステップ400からステップ420に移る。ステッ
プ420において、モデム制御変数MCRの内容をB変
数にロードし、制御はステップ404でリターンする。
同様に、ライン制御レジスタLCRを読む場合、制御は
ステップ400からステップ422に移る。ステップ4
22において、ライン制御変数/LCRの内容をB変数
にロードする。次いで、制御はステップ404において
Bの内容を返送する。
To read the modem control register MCR, control transfers from step 400 to step 420. At step 420, the contents of the modem control variable MCR are loaded into the B variable, and control returns at step 404.
Similarly, when reading the line control register LCR, control transfers from step 400 to step 422. Step 4
At 22, the contents of the line control variable / LCR are loaded into the B variable. Control then returns the contents of B in step 404.

【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においてリターンする。
When reading the interrupt identification register IIR,
Step 420 is entered from step 420. Step 4
At 24, the contents of the interrupt identification variable .IIR are loaded into the B variable. Next, control proceeds to step 426, where B
The variable (which now contains the contents of the .IIR variable) is compared to the constant ITHR. This constant indicates the pending interrupt (pe
nding interrupt). If they are equal, reading from the interrupt identification register IIR clears this type of interrupt and must be cleared. To do this, load the interrupt transmission empty interrupt variable .IIR_TX with 0. This gives E
This interrupt is cleared in the VALUE_INTERRUPT routine 600. This routine 600
Is called in step 428. Control then returns at step 404.

【0092】割り込みイネーブル・レジスタIENを読
む場合、ステップ400からステップ430に入る。ス
テップ430において、最初に、ライン制御レジスタL
CRのDLABビットの内容を表わす、除算ラッチ・ア
クセス・ビット変数.CLABを検査することにより、
除算ラッチ・アクセス・ビットDLABがセットされて
いるか否か判定する。セットされていない場合、制御は
ステップ432に移行し、割り込みイネーブル変数.I
ENの内容をB変数にロードする。これを行うのは、除
算ラッチ・アクセス・ビットDLABがセットされてい
ないと、IENレジスタからのリードは、そのレジスタ
の通常の割り込みイネーブル値を戻すからである。次
に、制御はステップ404に移行し、ここでその値を返
送する。
When reading the interrupt enable register IEN, step 400 is entered from step 400. In step 430, first, the line control register L
By examining the divide latch access bit variable .CLAB, which represents the contents of the DLAB bit in CR,
It is determined whether the division latch access bit DLAB is set. If not, control transfers to step 432 where the interrupt enable variable .I
Load the contents of EN into B variable. This is done because if the divide latch access bit DLAB is not set, a read from the IEN register will return the register's normal interrupt enable value. Next, control transfers to step 404, where the value is returned.

【0093】ステップ430において、DLABがセッ
トされていると、制御はステップ434に移行し、ここ
で、除算ラッチ高変数.DLHの内容をB変数にロード
する。この変数はボー・レートの判定に用いられ、ここ
に開示する実施例では、厳密に維持することによって、
仮想UARTが、オペレーティング・システムには、標
準的なハードウエアUARTであるように見えるように
する。この場合も、これは、仮想UARTの「ボー・レ
ート」は、実際、プロセッサがいかに速く動作できても
よいからである。即ち、仮想UARTは人工的に通常の
UARTのボー・レートに下げることはない(可能であ
るとしても)。次に、制御はステップ404に移行し、
ここで除算ラッチの高位バイトが返される。
In step 430, if DLAB is set, control transfers to step 434, where the contents of the divide latch high variable .DLH are loaded into the B variable. This variable is used to determine the baud rate, and in the disclosed embodiment, by maintaining it strictly,
The virtual UART makes the operating system appear to be a standard hardware UART. Again, this is because the "baud rate" of the virtual UART may actually be how fast the processor can operate. That is, the virtual UART does not artificially reduce the baud rate of a normal UART (if at all possible). Next, control transfers to step 404,
Here, the high byte of the division latch is returned.

【0094】図14に移ると、ステップ400から入る
最後の選択肢がDATポートから読み込まれる。これ
は、DLABの設定に応じて、仮想UARTの受信バッ
ファまたは除数ラッチからデータを読み込むことを示
す。この処理はステップ436において行われ、DLA
Bがセットされているか否かを判定する。セットされて
いれば、制御はステップ438に移行し、除数ラッチ低
変数.DLLをB変数にロードする。除数ラッチ・アク
セス・ビットが真なので、これは適切な動作である。次
に、制御はステップ440に移行し、ここでSIM45
0_READルーチン400は、B変数にロードされた
値と共にリターンする。
Referring to FIG. 14, the last option entered from step 400 is read from the DAT port. This indicates that data is read from the reception buffer or the divisor latch of the virtual UART according to the setting of DLAB. This processing is performed in step 436 and the DLA
It is determined whether B is set. If so, control transfers to step 438 where the divisor latch low variable .DLL is loaded into the B variable. This is an appropriate operation because the divisor latch access bit is true. Next, control transfers to step 440 where the SIM 45
The 0_READ routine 400 returns with the value loaded into the B variable.

【0095】ステップ436からは、DLABがセット
されていない場合、制御は代わりにステップ442に移
る。このステップは、受信データが入手可能な場合、S
IM450.Cコードで実施されている仮想UARTか
らその受信データを読み出すシーケンスの開始である。
ステップ442において、ライン・ステータス・レジス
タ変数.LSR内の受信データ・レディ・ビットRDR
Iをクリアする。これを行うのは、以下のステップで受
信バッファからデータを読み出すからである。入手可能
な受信データがそれ以上ない場合、続いてRDRIレジ
スタをセットするが、このリードは最初にそのRDRI
ビットをクリアする。ステップ444に移行し、EVA
LUATE_INTERRUPTルーチン600をコー
ルして、オペレーティング・システムに対して割り込み
を発生させるか否かを判定する。例えば、まだデータが
入手可能な場合、割り込みが発生する。
From step 436, if DLAB is not set, control transfers to step 442 instead. This step is performed if the received data is available.
This is the start of a sequence for reading the received data from the virtual UART implemented by the IM450.C code.
In step 442, the received data ready bit RDR in the line status register variable .LSR
Clear I. This is because data is read from the reception buffer in the following steps. If no more received data is available, then set the RDRI register, but this read will first
Clear the bit. Proceed to step 444, where EVA
The LUATE_INTERRUPT routine 600 is called to determine whether to cause an interrupt to the operating system. For example, if data is still available, an interrupt occurs.

【0096】ステップ446に移行し、モデム・モジュ
ール114からの送信バッファ内のデータ量が0より大
きいか否かを判定する。0より大きい場合、モデム・モ
ジュール114から読む出すべきデータがあることを示
し、そうでなければ、モデム・モジュール114から得
られるデータがないことを示す。モデム送信バッファ・
カウント変数.TX_CNTが0より大きい場合、制御
はステップ448に移行し、モデムの送信アレイからの
データがB変数にロードされる。送信アレイは、モデム
・モジュール114から送信されたデータを収容する。
更に、.TX_CNT変数を減分し、モデム・モジュー
ル114からのデータが、送信機から読み出されたこと
を示す。
The flow shifts to step 446, where it is determined whether the amount of data in the transmission buffer from the modem module 114 is larger than zero. If it is greater than zero, it indicates that there is data to read from the modem module 114; otherwise, there is no data available from the modem module 114. Modem transmit buffer
If the count variable .TX_CNT is greater than zero, control transfers to step 448 where data from the modem's transmit array is loaded into the B variable. The transmit array contains the data transmitted from the modem module 114.
In addition, the .TX_CNT variable is decremented to indicate that data from modem module 114 has been read from the transmitter.

【0097】ステップ446から、送信カウント変数.
TX_CNTが0より大きい場合、モデム・モジュール
114から得られるデータがないことを示すので、制御
はステップ450に移行し、ここでNULL文字、即
ち、0がB変数にロードされる。次に制御は、ステップ
448および450の双方からステップ452に移る。
From step 446, the transmission count variable.
If TX_CNT is greater than 0, indicating that no data is available from the modem module 114, control passes to step 450 where the NULL character, ie, 0, is loaded into the B variable. Control then transfers to step 452 from both steps 448 and 450.

【0098】ステップ452において、.TX_CNT
変数が0と等しくない場合、モデム・モジュール114
から更にデータが得られることを示し、制御はステップ
454に移行し、ここで、ライン・ステータス・レジス
タ変数.LSR内の受信データ・レディ・インディケー
タ・ビットRDRIをセットし、EVALUATE_I
NERRUPTルーチン600へのコールによって、割
り込みを評価する。.TX_CNT変数が0に等しい場
合、ステップ452から、そしていずれの場合でもステ
ップ454から、制御はステップ440に移る。
In step 452, .TX_CNT
If the variable is not equal to 0, the modem module 114
, Indicating that more data is available, control transfers to step 454 where the line status register variable. Set the receive data ready indicator bit RDRI in the LSR, EVALUATE_I
The call to the NERRUPT routine 600 evaluates the interrupt. If the .TX_CNT variable is equal to 0, control transfers from step 452, and in any case from step 454, to step 440.

【0099】図15〜図17には、SIM450_WR
ITEルーチン500のフローチャートが示されてい
る。このルーチンのソース・コードも、添付資料Cの中
のSIM450.Cソース・コード・リストに存在す
る。この場合も、明確化のために、フロー制御に関する
詳細の内あるものは省略されている。しかしながら、通
常、仮想装置ドライバが、対応するハードウエアUAR
T上のハードウエア・ポートへの出力を実行するときは
いつでも、SIM450_WRITEルーチン500を
代わりにコールする。
FIGS. 15 to 17 show SIM450_WR
A flowchart of the ITE routine 500 is shown. The source code for this routine is also in the SIM450.C source code listing in Appendix C. Again, for clarity, some of the details regarding flow control have been omitted. However, usually, the virtual device driver has a corresponding hardware UAR
Whenever performing an output to a hardware port on T, call the SIM450_WRITE routine 500 instead.

【0100】このルーチン500も、ケース・ステート
メントの形態で示されている。選択したポート・オフセ
ットがスクラッチパッド・レジスタSCRに対応する場
合、制御はステップ502に移行し、.SCRATCH
変数をVALUE変数に等しくセットし、図11のOU
TDXALマクロ360に示すように、パラメータをA
Lレジスタに転送する。制御はステップ502からステ
ップ506に移行し、SIM450_WRITEルーチ
ン500はそのコール元のルーチンにリターンする。コ
ール元のルーチンは、ここでは、VIPD1_REG_
WRITEルーチン380として示されている。
This routine 500 is also shown in the form of a case statement. If the selected port offset corresponds to the scratchpad register SCR, control passes to step 502, where. SCRATCH
Set the variable equal to the VALUE variable and select OU in FIG.
As shown in TDXAL macro 360, parameter
Transfer to L register. Control transfers from step 502 to step 506, where the SIM450_WRITE routine 500 returns to its calling routine. The calling routine here is VIPD1_REG_
Shown as WRITE routine 380.

【0101】モデム制御レジスタMCRを対象とする書
き込みを行う場合、制御はステップ500からステップ
506に移行し、ここで、モデム制御レジスタ変数.M
CRをVALUEパラメータに等しくセットする。次
に、制御はステップ508に移行し、フロー制御を更新
する。これが必要となるのは、モデム制御レジスタ変数
MCRは、OUT2*、IYT1*、RST*、DTR
*のような多数のビット、およびフロー制御に影響を与
え得るその他のモデム制御を含むからである。
When writing to the modem control register MCR is performed, control proceeds from step 500 to step 506, where the modem control register variable .M
Set CR equal to the VALUE parameter. Next, control transfers to step 508 to update the flow control. This is necessary because the modem control register variables MCR are OUT2 *, IYT1 *, RST *, DTR
Because it includes a number of bits, such as *, and other modem controls that can affect flow control.

【0102】ステップ510に移行して、SIM450
_WRITEルーチン500は、EVALUATE_I
NTERRUPTルーチン600をコールする。これが
行われるのは、.MCR変数の値の変化のために、オペ
レーティング・システムのドライバ・コードへの割り込
み開始が必要な場合があるからである。次に、制御はス
テップ506においてリターンする。
The process proceeds to step 510 where the SIM 450
_WRITE routine 500 is an EVALUATE_I
Call NTERRUPT routine 600. This is done because a change in the value of the .MCR variable may require the initiation of an interrupt to the operating system driver code. Next, control returns in step 506.

【0103】I/Oライトがライン制御レジスタLCR
に対して意図したものである場合、制御はステップ50
0からステップ512に移る。ステップ512におい
て、.LCR変数にVALUEパラメータをロードし、
次に制御はステップ514に移行し、あらゆるパリティ
処理テーブルを更新する。これは、.LCR変数内部の
3つのビットが、パリティ無し、基数パリティ、偶数パ
リティ、マーク・パリティ、またはスペース・パリティ
のパリティ設定を対象としているからである。
The I / O write is performed by the line control register LCR
If so, control proceeds to step 50
Move from 0 to step 512. In step 512,. Load the VALUE parameter into the LCR variable,
Next, control transfers to step 514 to update any parity processing tables. This is because the three bits inside the .LCR variable are intended for parity settings of no parity, radix parity, even parity, mark parity, or space parity.

【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の中断出力
ビットと対応するようにセットする。
From step 514, control is passed to step 51.
Then, the process goes to 6 to determine whether the DLAB bit in the VALUE variable is set. If true, step 518 sets the .DLAB variable equal to one. If false, control transfers to step 520,
here,. Set the DLAB variable to 0. Therefore, the .DLAB variable is. Reflects the current value of the DLAB bit in the LCR variable. From step 520, control transfers to step 522 where the .MCR variable LOOP
Determine if the bit is set. If so, control is passed to step 524 because the loop back mode is set, and if the SBRK bit in VALUE is true, the BRKI bit in the .LSR register is set to true. If not set, the BRKI bit in the .LSR register remains unchanged. That is, when the virtual UART is in the loop back mode, the interrupt input bit of the virtual UART is set to correspond to the interrupt output bit of the virtual UART.

【0105】ステップ518、522、524から、制
御は次にステップ526に移行し、EVALUATE_
INTERRUPTルーチン600をコールして、オペ
レーティング・システムがUART割り込みを実行すべ
きか否かを判定する。
From steps 518, 522, 524, control then transfers to step 526, where EVALUATE_
The INTERRUPT routine 600 is called to determine whether the operating system should perform a UART interrupt.

【0106】図16に、他の状態を示す。書き込みがU
ART割り込みイネーブル・レジスタIENへの書き込
みに対応する場合、制御はステップ500からステップ
528に移行し、ここで、最初に.DLAB変数が真に
セットされているか否かを判定する。真にセットされて
いる場合、制御は530に移行し、ここで、除数ラッチ
高位バイト変数.DLHをVALUEパラメータに等し
くセットする。これを行うのは、DLABビットをセッ
トするとき、IENレジスタおよびDATレジスタに対
する読み出しおよび書き込みによって、除数ラッチがア
クセスされるからである。次に、制御はステップ530
からステップ532に移行し、ここで制御はコール元の
ルーチンにリターンする。
FIG. 16 shows another state. Writing is U
If it corresponds to a write to the ART interrupt enable register IEN, control transfers from step 500 to step 528, where. Determine if the DLAB variable is set to true. If so, control transfers to 530 where the divisor latch high byte variable .DLH is set equal to the VALUE parameter. This is done because when setting the DLAB bit, the divisor latch is accessed by reading and writing to the IEN and DAT registers. Next, control proceeds to step 530.
From step 532, where control returns to the calling routine.

【0107】.DLB変数が真でない場合、制御はステ
ップ528からステップ534に移行し、割り込みイネ
ーブル・レジスタ.IENの空送信保持ビットETHR
を検査する。このビットが真の場合、送信保持レジスタ
(即ち、DAT)が空のときに割り込みが発生すること
を示している。このビットがセットされていない場合、
制御はステップ536に移行し、ここでVALUEパラ
メータのETHRビットを検査し、真であれば、制御は
ステップ538に移る。ステップ538において、ライ
ン・ステータス・レジスタ変数.LSR内の送信保持レ
ジスタ空ビットを検査する。セットされている場合、送
信保持レジスタが空であることに基づく割り込みがオン
になったところであり、送信保持レジスタは実際に空で
あるので、送信割り込みが発生することを示す。そし
て、制御はステップ538からステップ540に移行
し、ここで、割り込み中断割り込み識別レジスタ送信変
数.IRR_TXを1、即ち、真にセットする。
If the .DLB variable is not true, control transfers from step 528 to step 534 where the empty transmit hold bit ETHR of the interrupt enable register .IEN is
To inspect. If this bit is true, it indicates that an interrupt will occur when the transmit holding register (ie, DAT) is empty. If this bit is not set,
Control transfers to step 536 where the ETHR bit of the VALUE parameter is checked, and if true, control transfers to step 538. In step 538, the transmission holding register empty bit in the line status register variable .LSR is checked. When set, it indicates that an interrupt based on the empty transmission holding register has just been turned on, and that the transmission holding register is actually empty, so that a transmission interrupt occurs. Then, the control proceeds from step 538 to step 540, where the interrupt interruption interrupt identification register transmission variable .IRR_TX is set to 1, that is, true.

【0108】ステップ534ないし538およびステッ
プ540から、他の全ての状態の場合、制御はステップ
542に移行し、ここで、割り込み識別レジスタ変数.
IENをVALUEパラメータに等しくセットする。次
に、制御はステップ544に移行し、EVALUATE
_INTERRUPTルーチン600をコールする。ス
テップ540に達し、送信保持レジスタが空であり、空
の送信保持レジスタに基づく割り込みがオンになったこ
とに基づいて、割り込みが発生することを示した場合、
EVALUTATE_INTERRUPTルーチン60
0において、オペレーティング・システム・ソフトウエ
アに割り込みを発生させる。ステップ530、544か
ら、制御はステップ532に移行し、ここでリターンが
実行される。
From steps 534 through 538 and step 540, for all other states, control transfers to step 542, where the interrupt identification register variable.
Set IEN equal to the VALUE parameter. Next, control proceeds to step 544, where EVALUATE
Call the _INTERRUPT routine 600. If step 540 is reached, indicating that the transmit holding register is empty and that an interrupt based on an empty transmit holding register has been turned on, an interrupt will occur;
EVALUTATE_INTERRUPT routine 60
At 0, an interrupt is generated to the operating system software. From steps 530, 544, control transfers to step 532, where a return is performed.

【0109】書き込むべきUARTレジスタが送出デー
タ・レジスタDATである場合、制御はステップ500
からステップ546に移行し、ここで、除数ラッチ・ア
クセス・ビット変数.DLABを検査する。真であれ
ば、ステップ548において除数ラッチ低位ビット変
数.DLLに、VALUEパラメータをロードし、次い
でステップ532において制御はリターンする。
If the UART register to be written is the outgoing data register DAT, control proceeds to step 500
To 546, where the divisor latch access bit variable .DLAB is examined. If true, the divisor latch low bit variable .DLL is loaded with the VALUE parameter in step 548, and then control returns in step 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に移行
し、コール元のルーチンにリターンする。
At step 546, if the .DLAB variable has not been set, control passes to step 530, where the LOOP bit of the modem control register variable .MCR is examined. If this is set, the loop
In the back mode, control is passed to step 55.
2 where the input of bytes to the modem module transmit buffer routine PUT_TX_BYTE7
Execute 00. This will be further described below with reference to FIG. It will be appreciated that the PUT_TX_BYTE routine 700 corresponds to entering a byte in the transmit buffer and moving from the modem module 114 to the virtual UART. Thus, entering a byte into the transmit buffer would actually be received by the virtual UART. This is appropriate in step 552 since the data to be written is actually read by the UART in loop back mode. Control transfers from step 552 to step 532 and returns to the calling routine.

【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に格納する。
If not in loop back mode, control transfers from step 550 to step 544 to reset the transmit hold register empty bit THRE and the transmit shift register empty bit TSRE in the line status register variable .LSR. . This is because the bytes of data to be written to these registers are being prepared. Next, control transfers to step 556,
Call the EVALUATE_INTERRUT routine 600. From step 556, control proceeds to step 55.
8 (FIG. 17), and the modem module receive buffer counter. It is determined whether RX_CNT is smaller than the maximum value. If so, the receive buffer of the modem module 114 indicates that there is still room to receive another byte from the virtual UART. This byte is OUTD
As output by the XAL macro, the routine has reached step 558 as a result. Accordingly, control proceeds to step 560 where the VALUE parameter is stored in the receive array RX_ARRAY of the modem module 114 after performing the appropriate parity conversion based on the current parity setting of the virtual UART.

【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に移行し、ここでリターンが実行される。
Next, the control shifts to step 562, and.
Increment the RX_CNT variable to reflect the addition of data to the receive array. From step 518, if the .RX_CNT variable exceeds the maximum buffer size, or in any case from step 562, control transfers to step 564 to determine whether the .RX_CNT variable is less than the flow off condition. Is determined. If false, it means that the operating system virtual device must stop sending more data until the modem module 114 processes the data.
Referring to step 554 above, here the transmit hold register empty bit THRE and the transmit shift register empty bit TSRE were reset in step 554 in the line status register variable .LSR. Therefore, virtual device drivers in the operating system must not write to the UART until these bits are set. Because these are the LSRs through the SIM450_READ routine 40
When reading the variable, these bits indicate that the transmit buffer is full. Thus, if the receive array of modem module 114 is full, these bits are left unchanged and control transfers from step 564 to step 568, where a return is performed.

【0113】そうでない場合、制御はステップ564か
らステップ566に移行し、適切な処置を行って、仮想
UARTを通じ、追加データをモデム・モジュール11
4に書き込めるようにする。最初に、割り込み識別レジ
スタ送信変数.IIR_TXを真にセットし、割り込み
が発生することを示し、必要であれば、送信バッファに
はデータのための空きが余分にあることを示す。ライン
・ステータス・レジスタ変数.LSRの送信保持レジス
タ空ビットTHREおよび送信ステータス・レジスタ空
ビットTSREを真にセットし、これらのレジスタが空
であり、オペレーティング・システムからのデータを受
け入れ可能であることを示す。次に、EVALUATE
_INTERRUPTルーチン600をコールし、適切
な割り込みをオペレーティング・システムにかけること
ができるようにする。ステップ566から、制御はステ
ップ568に移行し、ここでコール元のルーチンに戻
る。
If not, control transfers from step 564 to step 566, taking the appropriate action to transfer additional data through the virtual UART to the modem module 11.
4 can be written. First, the interrupt identification register transmit variable .IIR_TX is set to true to indicate that an interrupt will occur and, if necessary, to indicate that the transmit buffer has extra space for data. Line status register variable. Set the transmit hold register empty bit THRE and the transmit status register empty bit TSRE of the LSR to true to indicate that these registers are empty and ready to accept data from the operating system. Show. Next, EVALUATE
Calls the _INTERRUPT routine 600 so that an appropriate interrupt can be raised to the operating system. From step 566, control transfers to step 568, where control returns to the calling routine.

【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によ
ってコールされるルーチンとして、このエントリ・ポイ
ントをセットする。
Virtual Interrupt Turning to FIGS. 18 and 19, SIM450_EVAL
UART_INTERRUPT routine 600, ie,
A simplified representation of the EVALUATE_INTERRUPT routine 600 is shown. Calling this routine 600 is when the virtual UART must determine whether to generate a soft interrupt to the operating system virtual device. As described above, the operating system is a UART
Has an interrupt entry point, which is called when a hardware interrupt occurs. This interrupt entry point is typically the entry point for an interrupt from an IRQ3 or IRQ4 interrupt request line. These early housekeeping (hous
As part of ekeeping, the virtual device driver must set an entry point for such interrupts. The SIM450.C module contains an entry point called at the address to be moved on interruption from the UART. This is because when the virtual UART is appropriate to execute an interrupt, the SIM450_EV
This entry point is set as a routine called by the ALUATE_INTERRUPT routine 600.

【0115】SIM450_EVALUATE_INT
ERRUPTルーチン600の具体的なコードに移る前
に、全体的な概要として、ルーチン600は、仮想UA
RT内部のデータ変数の様々な設定が、オペレーティン
グ・システムの仮想装置ドライバ内の割り込みサービス
・ルーチンへのコールを発生するに際して、適切である
ことを示しているか否かを判定する検査を行う。かかる
条件は、例えば、送信保持レジスタが空になり、対応す
る割り込みが割り込みイネーブル・レジスタ変数.IE
Nにおいてイネーブルされた場合である。勿論、他にも
割り込みを発生する条件はある。
SIM450_EVALATE_INT
Before moving on to the specific code of the ERRUPT routine 600, as a general overview, the routine 600 includes a virtual UA
A check is made to determine if the various settings of the data variables inside the RT indicate that they are appropriate in generating a call to the interrupt service routine in the virtual device driver of the operating system. Such a condition is that, for example, the transmission holding register becomes empty, and the corresponding interrupt is set to the interrupt enable register variable .IE.
N enabled. Of course, there are other conditions for generating an interrupt.

【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の値をロードする。
Starting from step 602, the transmission holding register bit THRE of the current line register variable .LSR
With the previous store line status register variable .OLD_LSR transmit hold register empty bit TH
Check the RE. If THRE is set in the .LSR variable but cleared in the .OLD_LSR variable, then SIM450_EVALUATE_I
This means that the transmit holding register has been emptied since the last call to the NTERRUPT routine 600. In this case, control is performed from step 602 to step 60.
4 and sets the transmission empty interrupt variable .IIR_TX to 1 to indicate that an interrupt condition exists. Otherwise in step 604, and step 602
, Control passes to step 606 where the old line status register variable .OLD_
LSR contains the current line status register variable.LS
Load the value of R.

【0117】ステップ608に移行し、割り込みイネー
ブル・レジスタ変数.IENの様々な状態を検査する。
ステップ608において、割り込みイネーブル変数.I
ENの中のステータス・レジスタERLSビットのエラ
ーを、ライン・ステータス・レジスタ変数.LSRの中
断ビットBRKI、フレーム・エラー・ビットFRM
R、パリティ・エラー・ビットPARE、およびオーバ
ーラン・エラー・ビットOVREと共に検査する。ER
LSビットは、真の場合、ライン・ステータス・レジス
タ変数.LSRにおけるこれらエラー条件のいずれかに
より、割り込みを開始すべきことを示す。したがって、
この状態が真の場合、制御はステップ608からステッ
プ610に移行し、割り込み識別レジスタ変数.IIR
に、ライン・ステータス・レジスタ上の割り込み基準
(interrupt base)に対応する値(この値は06h)を
セットする。
Proceeding to step 608, the various states of the interrupt enable register variable .IEN are examined.
In step 608, the interrupt enable variable .I
The error of the status register ERLS bit in EN is set to the line status register variable. LSR break bit BRKI, frame error bit FRM
Check with R, parity error bit PARE, and overrun error bit OVRE. ER
The LS bit, if true, indicates that an interrupt should be initiated by any of these error conditions in the line status register variable .LSR. Therefore,
If this condition is true, control transfers from step 608 to step 610, where the interrupt identification register variable .IIR
Is set to the value corresponding to the interrupt base on the line status register (this value is 06h).

【0118】偽の状態の場合、制御はステップ608か
らステップ612に移行し、割り込みイネーブル・レジ
スタ変数.IENのイネーブル送信保持レジスタ割り込
みビットETHRと共に、送信空割り込み変数.IR_
TXを検査する。双方が真である場合、送信保持レジス
タが空であることによる割り込みがイネーブルされ、先
のステップ604において示したように、送信保持レジ
スタが実際に空となったか、あるいは、図13Bのステ
ップ540において示すように、この割り込みが丁度イ
ネーブルされたことを示す。いずれの場合でも、割り込
みを実行し、オペレーティング・システムに、送信保持
レジスタが空であることを通知する。したがって、ステ
ップ614では、割り込み識別レジスタ変数.IIR
は、かかる割り込み(02hの値)に対応する値にセッ
トされる。
In the case of a false state, control transfers from step 608 to step 612, where the transmission empty interrupt variable .IR_ together with the interrupt transmission holding register interrupt bit ETHR of the interrupt enable register variable.
Check TX. If both are true, the interrupt due to the transmit holding register being empty is enabled and the transmit holding register is actually empty, as shown in step 604 above, or at step 540 in FIG. 13B. As shown, this interrupt has just been enabled. In either case, an interrupt is executed to notify the operating system that the transmit holding register is empty. Therefore, in step 614, the interrupt identification register variable .IIR
Is set to a value corresponding to the interrupt (the value of 02h).

【0119】その他の場合、ステップ612から制御は
ステップ616に移行し、ライン・ステータス・レジス
タ変数.LSRの受信データ・レディ割り込みビットR
DRIを、割り込みイネーブル・レジスタ変数.IEN
のイネーブル受信データ入手可能割り込みビットERD
Aと共に検査する。双方が真である場合、モデム・モジ
ュール114からデータが得られることを示し、かかる
データが得られるときに割り込みが発生するようにセッ
トされているので、制御はステップ618に移行し、割
り込み識別レジスタ変数.IIRを再び適切な値(ここ
では04h)にセットする。
Otherwise, control transfers from step 612 to step 616, where the received data ready interrupt bit R of the line status register variable .LSR is
DRI to interrupt enable register variable .IEN
Enable data available interrupt bit ERD
Inspect with A. If both are true, indicating that data is available from the modem module 114, and because such data is set to be interrupted when such data is obtained, control passes to step 618 where the interrupt identification register is set. The variable .IIR is set again to an appropriate value (here, 04h).

【0120】その他の場合、制御はステップ616から
ステップ620に移行し、割り込みイネーブル・レジス
タ変数.IENのイネーブル・モデム・ステータス・レ
ジスタ割り込みビットEMSRを、モデム・ステータス
・レジスタ変数.MSR内のデルタ・ビットと共に検査
する。デルタ・ビットは、真のとき、モデム・ステータ
ス・レジスタ変数.MSRの対応する上位ビットが、最
後の.MSR変数を読み出したときから変化しているこ
とを示す。これらのビットの1つが変化しており、対応
する割り込みがイネーブルされると、制御はステップ6
22に移行し、割り込み識別レジスタ変数.IIRが、
モデム・ステータス・レジスタに基づく割り込みに対応
する値(0hの値)にセットされる。
Otherwise, control transfers from step 616 to step 620, in which the enable modem status register interrupt bit EMSR of the interrupt enable register variable .IEN is set to the delta value in the modem status register variable .MSR. Check with bits. The delta bit, when true, indicates that the corresponding upper bit of the modem status register variable .MSR has changed since the last time the .MSR variable was read. If one of these bits has changed and the corresponding interrupt is enabled, control proceeds to step 6.
22 and the interrupt identification register variable .IIR is
Set to the value (0h) corresponding to the interrupt based on the modem status register.

【0121】その他の場合、制御はステップ620から
ステップ624に移行し、割り込み識別レジスタ変数.
IIRを、01hの値である、無割り込み値にセットす
る。更に、割り込みアクティブ変数.INT_ACTI
VEを偽にセットし、現在割り込みが発生していないこ
とを示す。
Otherwise, control transfers from step 620 to step 624, where the interrupt identification register variable.
Set IIR to a no-interrupt value, which is a value of 01h. Further, an interrupt active variable. INT_ACTI
VE is set to false, indicating that no interrupt is currently occurring.

【0122】ステップ610、614、618、622
において、割り込み識別レジスタ変数.IIRのゼロ・
ビットを、そのアクティブ状態である低にセットし、標
準的なUARTにしたがって、割り込みが保留中である
ことを示す。したがって、これらのステップから、割り
込みを保留にセットし、割り込み識別レジスタ変数.I
IRは、このタイプの割り込みの識別を含む。ステップ
610、614、618、624から、制御はステップ
626(図19)に移行する。
Steps 610, 614, 618, 622
In the interrupt identification register variable.
A bit is set to its active low state to indicate that an interrupt is pending, according to a standard UART. Therefore, from these steps, the interrupt is set pending and the interrupt identification register variable .I
The IR contains an identification of this type of interrupt. From steps 610, 614, 618, and 624, control proceeds to step 626 (FIG. 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に移行し、
コール元のコードへのリターンが実行される。
In step 626, the .IIR variable is compared with the no-interrupt value INOI, the interrupt active variable .INT_ACTIVE is checked, and the OUT2 bit of the modem control register variable .MCR is checked. INT_ACT if .IIR variable is not equal to no interrupt condition
The IVE variable becomes false, indicating that no interrupt is currently being processed. In addition, control is transferred to step 628 by enabling output OUT2, thereby indicating that an interrupt should be generated, and the interrupt active variable .I
NT_ACTIVE is set to 1 to indicate that an interrupt is currently occurring, and then at step 630,
Determine if the entry was set due to an interrupt (which would have been generated by proper initialization of the SIM_450 code). From step 630, if an entry has been set for the interrupt, step 632
Call the interrupt entry at. Otherwise, from steps 626 and 630, and always from step 632, control transfers to step 634,
A return to the calling code is performed.

【0124】割り込みアクティブ変数.INT_ACT
IVEに関して、その動作は、図18および図19を参
照することによって理解されよう。割り込みがアクティ
ブの場合、.INT_ACTIVE変数は、ステップ6
08、612、616、629の検査において保留の割
り込みがなくなるまで、偽にリセットしない。これによ
って、多数の疑似割り込みを防止する。
Interrupt active variable .INT_ACT
With respect to IVE, its operation may be understood by referring to FIGS. If the interrupt is active, the .INT_ACTIVE variable is
Do not reset to false until there are no pending interrupts in checks 08, 612, 616, 629. This prevents many spurious interrupts.

【0125】モデム・モジュール これまでのルーチンは、システム・ソフトウエア内にあ
る様々な仮想装置ドライバに対する形態としての、仮想
UARTのインターフェースを例示するものである。仮
想UARTはモデム・モジュール114へのインターフ
ェースも有している。先に注記したように、モデム・モ
ジュール114に対する適切なコードは通常、R.Scott
& Associatesのような多数のモデム用ソフトウエア開発
者によって提供される。これらの供給元は、通常、コン
トローラを特定せず、高水準言語で書かれたコントロー
ラ・コードを書くので、様々なプラットフォーム上でコ
ンパイルし実行することができる。例えば、例示したコ
ントローラ・コードは、68302マイクロコントロー
ラ上で実行するためにコンパイルされた高水準コードで
あっても、ここでは代わりに、本発明により用いられ
る、X86シリーズのプロセッサ上で実行するためにコ
ンパイルされる。
Modem Module The previous routines illustrate the interface of the virtual UART as a form for various virtual device drivers in the system software. The virtual UART also has an interface to the modem module 114. As noted above, the appropriate code for modem module 114 is typically R. Scott
Provided by numerous modem software developers such as & Associates. These sources typically do not specify a controller, but instead write controller code written in a high-level language, so that they can be compiled and run on a variety of platforms. For example, the illustrated controller code may be high-level code compiled for execution on a 68302 microcontroller, but here instead be used by the present invention to execute on an X86 series processor. Compiled.

【0126】このコントローラ・コードは様々な「フッ
ク」を有し、これを通じてコンピュータからの外部デー
タの送受信を行う。主な例、即ち、SIM450_PU
T_TX_BYTEルーチン700およびSIM_45
0_GET_RX_BYTEルーチン750が、図20
に示されている。
This controller code has various "hooks" through which external data is transmitted and received from the computer. The main example, SIM450_PU
T_TX_BYTE Routine 700 and SIM_45
The 0_GET_RX_BYTE routine 750 is shown in FIG.
Is shown in

【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エラーが発生する。
Starting from 702, SIM450_PUT
The _TX_BYTE routine 700 includes a transmit array TX_
Input 1 byte to ARRAY. Again, the transmit array is from the modem module 114 to the virtual UART. Proceeding to step 704, a timer is started and if the modem module 114 is not called for a certain time (about 10 milliseconds), an interrupt to the modem module 114 is generated after this time. This delay allows the modem module 114 to transfer another byte to the virtual UART. Start timer and UAR
If there is no application that drains to T, "expire out" the character. In the actual UART, characters are overwritten and OVERRURU
N errors occur.

【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にリターンす
る。
In the SIM450_GET_RX_BYTE routine 750, the modem module 114 reads a byte from its receive buffer. Receive buffer is S
Fulfilled by IM450 routine. Beginning at step 752, a temporary variable B is stored in the receive buffer RX.
Load the next byte in ARRAY. Step 7
Moving to 54, the receive buffer count RX_CNT is decremented to indicate that one byte is less available in this array. Proceeding to step 756, it is determined whether the receive buffer count RX_CNT is less than the flow-on threshold RX_FLOW_ON. If it is small, there is enough space in the buffer and the virtual U
Since extra characters can be accepted from the ART, control transfers to step 758 where the transmit hold register empty bit THR in the line status register variable .LSR is
Check E. If this is true, control proceeds to step 7
Moving to step 60, the transmission empty interrupt variable .IIR_TX is set to 1, that is, true, and an interrupt is given to indicate to the virtual device driver that the virtual UART transmission holding register is empty. Also, the transmission status register empty bit TSRE and the transmission holding register bit THR of the line status register variable .LSR
Set E to true to indicate that these registers are empty and available to accept data from the operating system virtual device driver. Finally, the EVALUATE_INTERRUT routine 60
Call 0 to determine whether to interrupt the virtual device driver of the operating system. From steps 756, 758, and 760, control proceeds to step 7
62, and the EVALUATE_INTERRUPT
Call the routine 600 again. Finally, step 7
A transition is made to 64 and the routine returns to the modem module 114 with the value in the temporary B variable as a parameter.

【0129】結論 上述の説明から、いかにして仮想UARTをモデム・モ
ジュール114への追加として装備し、モデム・モジュ
ール114がこの仮想UARTとデータの交信を行うこ
とができ、しかも仮想UARTはオペレーティング・シ
ステム・ソフトウエアには、事実上物理UARTとして
見えるようにするかが理解できるであろう。通常、物理
UARTにアクセスする仮想装置ドライバに加えること
が必要な唯一の大きな変更は、装置ドライバの入出力命
令を、仮想UARTコードへのコールとして、これらの
入出力命令を再送する適切なマクロで置き換えることだ
けである。
Conclusion From the above description, how a virtual UART is provided as an addition to the modem module 114, the modem module 114 can communicate data with this virtual UART, and the virtual UART is It will be appreciated that the system software will effectively make it appear as a physical UART. Usually, the only major change that needs to be made to a virtual device driver that accesses the physical UART is to convert the device driver's I / O instructions into appropriate macros that resend these I / O instructions as calls to the virtual UART code. It just replaces it.

【0130】このソフトウエア分割は、新しいオペレー
ティング・システムおよび異なるモデム・モジュールに
対する非常に明確な経路を設けるものである。モデム・
モジュール114の前段に設けられる仮想UARTイン
ターフェースのために、このモデム・コントローラを新
たなオペレーティング・システムに移動するには、オペ
レーティング・システムの仮想装置ドライバを変更し
て、入出力命令の代わりにコールを実行するようにすれ
ばよい。仮想UARTは事実上物理UARTとして見え
るので、他のデータ構造やパラメータの変更は不要であ
る。
This software partition provides a very clear path to the new operating system and different modem modules. modem·
To move this modem controller to a new operating system due to the virtual UART interface that precedes module 114, change the operating system's virtual device driver to call instead of I / O instructions. What should be done is to execute. Since the virtual UART is effectively viewed as a physical UART, no other data structure or parameter changes are required.

【0131】同様に、モデム・モジュール自体を変更す
る場合も、仮想UARTとのインターフェースのみを変
更すればよい。仮想UARTインターフェースは標準化
された状態を保持しているので、既存の仮想装置ドライ
バの変更は不要である。
Similarly, when changing the modem module itself, only the interface with the virtual UART needs to be changed. Since the virtual UART interface maintains a standardized state, there is no need to change existing virtual device drivers.

【0132】コンピュータ・システムCおよびDSP5
8間の物理リンクは、多数の入出力ポートのように、様
々な方法で実施可能である。また、モデム・モジュール
114は、DSPとの適切な通信のためにフックを含
み、これらは、DSPがそれ自体をモデム・モジュール
114に接続するいかなるタイプのハードウエア・イン
ターフェースに対しても、容易に変更が可能である。好
ましくは、これは、多数のメールボックス・レジスタを
通じた標準的なインターフェースを有するPCMCIA
カードの形態とする。このインターフェースのインプリ
メンテーションのためのモデム・モジュール・コードを
ソース・コード添付資料Aに示すが、この場合も、これ
はさほど重要ではなく、多種多様のインターフェースが
可能である。
Computer System C and DSP 5
The physical link between the eight can be implemented in various ways, such as multiple input / output ports. The modem module 114 also includes hooks for proper communication with the DSP, which make it easy for the DSP to connect itself to the modem module 114 to any type of hardware interface. Changes are possible. Preferably, this is a PCMCIA with a standard interface through multiple mailbox registers.
Card form. The modem module code for the implementation of this interface is shown in source code Appendix A, but again this is not critical and a wide variety of interfaces are possible.

【0133】上述の本発明の開示および記載は、例示的
かつその説明のためのものであり、サイズ、形状、材
料、構成物、回路素子、ワイヤ接続、および接点、なら
びに図示した回路および構造ならびに動作方法の詳細に
おいて、本発明の範囲および技術思想から逸脱すること
なく、様々な変更が可能である。
The foregoing disclosure and description of the invention has been presented for purposes of illustration and description, and is not limited to size, shape, material, construction, circuit elements, wire connections, and contacts, as well as the illustrated circuits and structures, and Various changes may be made in the details of the method of operation without departing from the scope and spirit of the invention.

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明による任意のモデム・カードを有するコ
ンピュータ・システムの簡略ブロック図である。
FIG. 1 is a simplified block diagram of a computer system having an optional modem card according to the present invention.

【図2】PCMCIAカードにおける従来のモデム・ハ
ードウエアを示すブロック図である。
FIG. 2 is a block diagram showing conventional modem hardware in a PCMCIA card.

【図3】除去したハードウエア部分を示す、本発明の開
示した実施例におるモデム・ハードウエアのブロック図
である。
FIG. 3 is a block diagram of the modem hardware in a disclosed embodiment of the invention, showing the hardware portion removed.

【図4】本発明によるモデム・カードの詳細ブロック図
である。
FIG. 4 is a detailed block diagram of a modem card according to the present invention.

【図5】本発明にしたがって実施したモデムと共に用い
る、Windows(登録商標)95の環境における、種々の
ソフトウエア構成要素を示すブロック図である。
FIG. 5 is a block diagram illustrating various software components in a Windows® 95 environment for use with a modem implemented in accordance with the present invention.

【図6】本発明にしたがって実施したモデムと共に用い
る、Windows(登録商標)3.1の環境における、種々の
ソフトウエア構成想要素を示すブロック図である。
FIG. 6 is a block diagram illustrating various software components in a Windows 3.1 environment for use with a modem implemented in accordance with the present invention.

【図7】CPQFMW95.VXDおよびモデム・モジ
ュール・インターフェースをより詳細に示すブロック図
である。
FIG. 7 shows CPQFMW95. FIG. 3 is a block diagram illustrating the VXD and modem module interface in more detail.

【図8】本発明によるモデムがコンピュータ・システム
にインストールされているか否かを判定するために、C
PQFMVCD.386が使用するルーチンのフローチ
ャートである。
FIG. 8 shows a C to determine if a modem according to the present invention is installed in a computer system.
PQFMVCD. 386 is a flowchart of a routine used.

【図9】本発明による仮想UARTに対する「仮想」入
出力動作を処理する、PPORTOPENルーチンのフ
ローチャートの一部を示す図である。
FIG. 9 illustrates a portion of a flowchart of a PPORTTOPEN routine that handles "virtual" input / output operations for a virtual UART according to the present invention.

【図10】PPORTOTENルーチンのフローチャー
トの残りの部分を示す図である。
FIG. 10 is a diagram showing the remaining part of the flowchart of the PPORTTOTEN routine.

【図11】「仮想」入出力動作に対して発生するマクロ
・インライン・コードのフローチャートである。
FIG. 11 is a flowchart of macro inline code generated for a "virtual" input / output operation.

【図12】図11のマクロによってコールされるフロー
チャートである。
FIG. 12 is a flowchart called by the macro of FIG. 11;

【図13】仮想UARTへのコール時に実行されるSI
M450_READルーチンのフローチャートの第1部
分を示す図である。
FIG. 13 shows an SI executed when a call is made to the virtual UART.
FIG. 21 is a diagram showing a first part of a flowchart of an M450_READ routine.

【図14】SIM450_READルーチンのフローチ
ャートの第2部分を示す図である。
FIG. 14 is a diagram showing a second part of the flowchart of the SIM450_READ routine.

【図15】仮想UARTへのコール時に実行されるSI
M450_WRITEルーチンのフローチャートの第1
部分を示す図である。
FIG. 15 shows an SI executed when a call is made to the virtual UART.
First of flowchart of M450_WRITE routine
It is a figure showing a part.

【図16】SIM450_WRITEルーチンのフロー
チャートの第2部分を示す図である。
FIG. 16 is a diagram showing a second part of the flowchart of the SIM450_WRITE routine.

【図17】SIM450_WRITEルーチンのフロー
チャートの第3部分を示す図である。
FIG. 17 is a diagram showing a third part of the flowchart of the SIM450_WRITE routine.

【図18】いつ仮想UARTによって割り込みをかける
べきかを判定するSIM_450_EVALUATE_
INTERRUPTルーチンのフローチャートの一部を
示す図である。
FIG. 18: SIM_450_EVALUATE_ determining when to interrupt by virtual UART
FIG. 9 is a diagram showing a part of a flowchart of an INTERRUPT routine.

【図19】SIM_450_EVALUATE_INT
ERRUPTルーチンのフローチャートの残りの部分を
示す図である。
FIG. 19: SIM_450_EVALUATE_INT
FIG. 11 is a diagram showing the remaining part of the flowchart of the ERROR routine.

【図20】本発明にしたがって仮想UARTとのデータ
送受信を行うために、モデム・コントローラ・コードが
使用する2つのルーチンのフローチャートである。
FIG. 20 is a flowchart of two routines used by the modem controller code to send and receive data to and from the virtual UART according to the present invention.

フロントページの続き (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,トムボ ール,ウォルドウィック 15419Continuation of the front page (71) Applicant 591030868 20555 State Highway 249, Houston, Texas 77070, United States of America (72) Inventor Peter Jay Brown 77069, Texas, USA Ashmore Drive 6919 (72) ) Inventor Don A. Dykes, USA 77770, Texas, Jones Road, Houston 152 (72) Inventor Andrew El Love 77388, Texas, United States, Springing, Woodsboro Drive 2411 (72) Inventor Kevin Double・ Iris 77375, Texas, United States, Tomball, Waldwick 15419

Claims (15)

【特許請求の範囲】[Claims] 【請求項1】 モデム・コントローラ・コードを実行す
るマイクロコントローラを具備していないモデムと共に
用いられ、前記モデム・コントローラ・コードを実行す
る汎用コンピュータ・システムにおいて、 命令を実行するためのプロセッサと、 前記プロセッサに結合された入出力バスであって、デジ
タル信号プロセッサを有しかつコントローラのないハー
ドウエア・モデムと通信するように構成された入出力バ
スとを備えており、 前記プロセッサは、汎用コンピュータ・システム・コー
ドと前記モデム・コントローラ・コードとの双方を実行
し、前記実行したモデム・コントローラ・コードと前記
デジタル信号プロセッサとの間でデータおよびコマンド
を通信することを特徴とする汎用コンピュータ・システ
ム。
1. A general-purpose computer system for executing a modem controller code for use with a modem that does not include a microcontroller for executing the modem controller code, the processor for executing instructions, An I / O bus coupled to the processor, the I / O bus having a digital signal processor and configured to communicate with a hardware modem without a controller, the processor comprising: a general-purpose computer; A general-purpose computer system executing both system code and said modem controller code and communicating data and commands between said executed modem controller code and said digital signal processor.
【請求項2】 請求項1記載のコンピュータ・システム
において、該システムは更に、 前記プロセッサによって実行されるオペレーティング・
システムと、 ハードウエアUART装置のための装置ドライバであっ
て、前記オペレーティング・システムによってコールさ
れ、前記ハードウエアUART装置との直列的動作を実
行する装置ドライバと、 前記プロセッサによって実行される仮想UARTであっ
て、前記モデム・コントローラ・コードとの間でデータ
通信を行い、前記ハードウエアUARTからの読み出し
および前記ハードウエアUARTへの書き込みに対応す
るエントリ・ポイントを提供する仮想UARTとを備え
ており、 前記仮想装置ドライバは、前記ハードウェアUARTの
代わりに、前記エントリ・ポイントをコールして、前記
仮想UARTとの間の読み出しおよび書き込みを実行す
るように変更されることを特徴とするコンピュータ・シ
ステム。
2. The computer system of claim 1, wherein the system further comprises an operating system executed by the processor.
A system driver for a hardware UART device, the device driver being called by the operating system to perform serial operations with the hardware UART device; and a virtual UART executed by the processor. A virtual UART that provides data entry and exit to the modem controller code and provides an entry point corresponding to reading from and writing to the hardware UART; The computer system of claim 11, wherein the virtual device driver is modified to call the entry point to perform reads and writes to and from the virtual UART, instead of the hardware UART.
【請求項3】 請求項2記載のコンピュータ・システム
において、前記仮想UARTは、16450UARTを
エミュレートすることを特徴とするコンピュータ・シス
テム。
3. The computer system according to claim 2, wherein said virtual UART emulates a 16450 UART.
【請求項4】 請求項2記載のコンピュータ・システム
において、前記装置ドライバは、Windows(登録商標)
3.1の仮想装置ドライバであることを特徴とするコン
ピュータ・システム。
4. The computer system according to claim 2, wherein the device driver is Windows (registered trademark).
A computer system, which is the virtual device driver of 3.1.
【請求項5】 請求項2記載のコンピュータ・システム
において、前記装置ドライバは、Windows(登録商標)
95の仮想装置ドライバであることを特徴とするコンピ
ュータ・システム。
5. The computer system according to claim 2, wherein the device driver is Windows (registered trademark).
95. A computer system, wherein the computer system is a virtual device driver.
【請求項6】 請求項2記載のコンピュータ・システム
において、前記プロセッサは、x86シリーズのプロセ
ッサであり、"IN AL, DX"および"OUT DX, AL"命令を、
前記エントリ・ポイントへのコールで置き換えることに
よって、前記仮想装置ドライバが変更されることを特徴
とするコンピュータ・システム。
6. The computer system according to claim 2, wherein said processor is an x86 series processor, and said instructions include an "IN AL, DX" and an "OUT DX, AL" instruction.
A computer system wherein the virtual device driver is modified by replacing it with a call to the entry point.
【請求項7】 請求項2記載のコンピュータ・システム
において、前記仮想UARTは、前記装置ドライバに対
して個別化したインターフェースを与え、前記仮想UA
RTに大幅な修正を加えることなく、前記オペレーティ
ング・システムを、第2の装置ドライバを有する第2の
オペレーティング・システムに変更可能としたことを特
徴とするコンピュータ・システム。
7. The computer system according to claim 2, wherein the virtual UART provides a personalized interface to the device driver, and the virtual UA
A computer system, wherein the operating system can be changed to a second operating system having a second device driver without significant modification to RT.
【請求項8】 請求項2記載のコンピュータ・システム
において、前記仮想化UARTは、前記装置ドライバに
対して個別化したインターフェースを与え、前記装置ド
ライバに大幅な修正を加えることなく、前記コントロー
ラのないハードウエア・モデムを、第2のコントローラ
のないハードウエア・モデムに変更可能としたことを特
徴とするコンピュータ・システム。
8. The computer system according to claim 2, wherein the virtualized UART provides a personalized interface to the device driver and eliminates the controller without significant modifications to the device driver. A computer system, wherein the hardware modem can be changed to a hardware modem without a second controller.
【請求項9】 デジタル信号プロセッサを有するが、モ
デム・コントローラ・コードを実行するマイクロコント
ローラを有していないモデムと共に用いるコンピュータ
・システムにおいて、 命令を実行するプロセッサであって、前記モデム・コン
トローラ・コードを実行するプロセッサと、 物理ハードウエア・インターフェースの仮想化バージョ
ンであって、実行中の前記モデム・コントローラ・コー
ドに仮想化されたインターフェースを提供する仮想化バ
ージョンと、 物理ハードウエア・インターフェースと通信するために
書かれた装置ドライバであって、前記物理ハードウエア
・インターフェースを対象にした命令を、前記仮想化イ
ンターフェースへのコールで置き換えることによって変
更された装置ドライバとを備えていることを特徴とする
コンピュータ・システム。
9. A computer system for use with a modem having a digital signal processor, but not having a microcontroller executing modem controller code, the processor executing instructions comprising the modem controller code. A virtualized version of a physical hardware interface, the virtualized version providing a virtualized interface to the running modem controller code; and a physical hardware interface. A device driver written for replacing the instructions intended for the physical hardware interface with calls to the virtualization interface. Computer system.
【請求項10】 請求項9記載のコンピュータ・システ
ムにおいて、前記仮想化インターフェースは、仮想化さ
れた16450と互換性のあるインターフェースである
ことを特徴とするコンピュータ・システム。
10. The computer system according to claim 9, wherein said virtualized interface is an interface compatible with virtualized 16450.
【請求項11】 請求項9記載のコンピュータ・システ
ムにおいて、前記装置ドライバは、Windows(登録商
標)3.1の仮想装置ドライバであることを特徴とする
コンピュータ・システム。
11. The computer system according to claim 9, wherein the device driver is a Windows 3.1 virtual device driver.
【請求項12】 請求項9記載のコンピュータ・システ
ムにおいて、前記装置ドライバは、Windows(登録商
標)95の仮想装置ドライバであることを特徴とするコ
ンピュータ・システム
12. The computer system according to claim 9, wherein the device driver is a Windows (registered trademark) 95 virtual device driver.
【請求項13】 汎用コンピュータ・システムにおいて
実行される方法であって、ハードウエア・モデム・コン
トローラを用いずにモデム通信を行う方法において、 通信リンクを通じて通信するためのデジタル信号プロセ
ッサを提供するステップと、 前記汎用コンピュータ・システムで、前記デジタル信号
プロセッサとの通信のためのモデム・コントローラ・コ
ードを実行するステップと、 前記モデム・コントローラ・コードから前記デジタル信
号プロセッサへの通信のためのハードウエア・インター
フェースを提供するステップと、 前記汎用コンピュータ・システムのオペレーティング・
システムの装置ドライバ・ソフトウエアと前記汎用コン
ピュータ・システムで実行するモデム・コントローラ・
コードとの間に、ハードウエア・インターフェースの仮
想化されたバージョンを提供するステップであって、そ
れにより、前記オペレーティング・システムの装置ドラ
イバ・ソフトウエアと前記モデム・コントローラ・コー
ドの間でモデム・コマンドおよびデータを送信されるよ
うにしたステップとを含んでいることを特徴とする方
法。
13. A method performed in a general purpose computer system, the method comprising performing a modem communication without using a hardware modem controller, providing a digital signal processor for communicating over a communication link. Executing modem controller code for communication with the digital signal processor on the general purpose computer system; and a hardware interface for communication from the modem controller code to the digital signal processor. Providing an operating system for the general purpose computer system.
System device driver software and a modem controller running on the general purpose computer system
Providing a virtualized version of the hardware interface between the operating system device driver software and the modem controller code. And the step of causing the data to be transmitted.
【請求項14】 モデム・コントローラ・コードを実行
するマイクロコントローラのないモデムと共に用いら
れ、該モデム・コントローラ・コードを実行する汎用コ
ンピュータ・システムにおいて、 命令を実行するプロセッサと、 前記プロセッサに結合され、前記モデム・コントローラ
・コードを格納するディスク・ドライブと、 前記モデム・コントローラ・コードを格納する主メモリ
と、 前記プロセッサに結合された入出力バスであって、デジ
タル信号プロセッサを有しかつコントローラのないハー
ドウエア・モデムと通信するように構成された入出力バ
スとを備え、 前記プロセッサは、汎用コンピュータ・システム・コー
ドと前記モデム・コントローラ・コードの双方を実行
し、実行した前記モデム・コントローラ・コードと前記
デジタル信号プロセッサとの間でデータおよびコマンド
を通信することを特徴とする汎用コンピュータ・システ
ム。
14. A general-purpose computer system for use with a microcontroller-less modem that executes modem controller code and executes the modem controller code, comprising: a processor for executing instructions; and a processor coupled to the processor; A disk drive for storing the modem controller code; a main memory for storing the modem controller code; and an input / output bus coupled to the processor, wherein the input / output bus has a digital signal processor and no controller. An I / O bus configured to communicate with a hardware modem, wherein the processor executes both general-purpose computer system code and the modem controller code, and executes the modem controller code. And said desi General purpose computer system, characterized by communicating data and commands between the Le signal processor.
【請求項15】 請求項14記載のコンピュータ・シス
テムにおいて、該システムは更に、 前記プロセッサによって実行されるオペレーティング・
システムであって、前記ディスク・ドライブおよび前記
メモリ・メモリ内に格納されたオペレーティング・シス
テムと、 ハードウエアUART装置用の装置ドライバであって、
前記オペレーティング・システムによってコールされて
前記ハードウエアUART装置の直列的動作を実行し、
前記ディスク・ドライブおよび前記主メモリ上に格納さ
れた装置ドライバと、 前記プロセッサによって実行される仮想UARTであっ
て、前記モデム・コントローラ・コードとの間でデータ
の通信を行い、前記ハードウエアUARTからの読み出
しおよび前記ハードウエアUARTへの書き込みに対応
するエントリ・ポイントを提供し、前記ディスク・ドラ
イブおよび前記主メモリに格納された前記仮想UART
とを含み、 前記仮想装置ドライバは、前記ハードウエアUARTの
代わりに、前記エントリ・ポイントをコールして、前記
仮想UARTからの読み出しおよび前記仮想UARTへ
の書き込みを実行するよう変更されることを特徴とする
コンピュータ・システム。
15. The computer system according to claim 14, wherein the system further comprises an operating system executed by the processor.
A system, comprising: an operating system stored in the disk drive and the memory; and a device driver for a hardware UART device.
Being called by the operating system to perform serial operation of the hardware UART device;
A device driver stored on the disk drive and the main memory; and a virtual UART executed by the processor for communicating data with the modem controller code. And the virtual UART stored in the disk drive and main memory to provide entry points corresponding to reading from and writing to the hardware UART.
Wherein the virtual device driver is modified to call the entry point to read from and write to the virtual UART instead of the hardware UART. Computer system.
JP9019178A 1996-01-31 1997-01-31 Computer system Pending JPH1083365A (en)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
JPH1083365A true JPH1083365A (en) 1998-03-31

Family

ID=21747979

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9019178A Pending JPH1083365A (en) 1996-01-31 1997-01-31 Computer system

Country Status (1)

Country Link
JP (1) JPH1083365A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002314630A (en) * 2001-04-17 2002-10-25 Oki Micro Design Co Ltd Device for transferring data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002314630A (en) * 2001-04-17 2002-10-25 Oki Micro Design Co Ltd Device for transferring data

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
US5170470A (en) Integrated modem which employs a host processor as its controller
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
JP4054390B2 (en) Modem interface
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
US6230118B1 (en) DOS based application supports for a controllerless modem
US6272452B1 (en) Universal asynchronous receiver transmitter (UART) emulation stage for modem communication
US20070005867A1 (en) Virtual peripheral device interface and protocol for use in peripheral device redirection communication
US6353857B2 (en) Controllerless modem
EP1552403B1 (en) Software compatible parallel interface with bidirectional handshaking for serial peripherals
JPH1083365A (en) Computer system
KR20000062377A (en) Real time services in backwardly compatible operating systems
EP1059585A2 (en) Virtual 16550 uart
US6216192B1 (en) Dynamic resource allocation across bus bridges

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