【発明の詳細な説明】
プロセスコントロール
技術分野
本発明は、実験室、若しくは製造工場においてコンピュータあるいはマイクロコ
ンピュータを用いて行う処理を対象とする自動リアルタイム処理制御装置に関す
る。
背景技術
実験室若しくは製造工場における処理は可能な限り柔軟な形で自動化を図る必要
がある。同時に、このような処理を制御するプログラムの開発には時間がかから
ないことが必要であり、かつ、そのプログラムの改変を容易に行えるようにして
おくことが重要となる。しかしながら、研究員やプロセス開発担当者は制御プロ
グラムを作成することができないのが一般的であるため、必要な制御プログラム
を開発するまでには相当な時間を要することになる。何故なら、プロセス開発担
当者は、プログラマ−に対して必要な条件を説明し、その上でプログラマ−は要
求された制御手順を所定のプログラミング言語で書くという手順を踏むからであ
る。
しかし、研究員や技術者は、いわゆるタイミング図等については一般によく理解
している。タイミング図は、複数のグラフを用いて制御プロセスが示したもので
あり、それぞれのグラフの横軸には処理の開始からの経過時間をとり、所定の制
御信号等を上下に描いである。リアルタイム処理の制御は、しばしばこの種の図
に基づき、コンピュータプログラマ−により開発される。コンピュータプログラ
マ−は、システムの開発担当者が準備したタイミング図をプログラム化するので
あるが、プログラム化するには時間を要する。更に、プログラムの開発は、完成
に至るまでに何度も改変を重ねていくのが一般的であるが、このような改変を行
うためのプログラマ−の入力作業は増大する。 ・
本発明は、かかる問題点を解消するためになされたものであり、リアルタイム処
理制御手順を示したタイミング図を利用して、自動的に処理制御を構成するイン
ストラクションを生成しようとするものである。
発 明 の 開 示
本発明は、
イメージ表示手段と、
リアルタイム処理を制御するために必要な入出力信号を表したタイミング図を前
記イメージ表示手段上に生成して編集するための、若しくは生成と編集のいずれ
か一方を行うための手段と、
選択的にタイミング図を入力信号をモニターし、出力信号を管理する一組のイン
ストラクションに変換するための手段と、入力信号をモニターし、リアルタイム
処理の出力信号を管理してリアルタイム処理を制御するように前記−組のインス
トラクションを処理するための手段、とを儂えたリアルタイム処理制御装置を提
供する。
また、本発明は、
イメージ表示手段と、
リアルタイム処理を制御するために必要な入出力信号を表したタイミング図を前
記イメージ表示手段上に生成して編集するための、若しくは生成と編集のいずれ
か一方を行うための手段と、
選択的にタイミング図を入力信号をモニターし、出力信号を管理する一組のイン
ストラクションに変換するための手段と、入力信号をモニターし、リアルタイム
処理の出力信号を管理してリアルタイム処理を制御するように前記−組のインス
トラクションを処理するための手段、とを備えた入力信号をモニターし、リアル
タイム処理の出力信号を管理するための一組のインストラクションを生成するた
めの装置を提供する。
更に、本発明は、
リアルタイム処理を制御するために必要な入出力信号を表したタイミング図をイ
メージ表示手段上に生成して編集し、若しくは生成と編集のいずれか一方を行い
、パタイミング図を入力信号をモニターし、出力信号を管理するための一組のイ
ンストラクションに変換し、入力信号をモニターし、リアルタイム処理の出力信
号を管理してリアルタイム処理を制御するように前記−組のインストラクション
を処理する工程から成るリアルタイム処理制御方法を提供する。
本発明に係る装置は、好ましくは、コンピュータと、コンピュータの視覚的表示
ユニットからなる従来の画像表示手段から構成され、タイミング図の生成/編集
手段は所定のプログラムにより動作するコンピュータプロセッサと、キーボード
及びコンピュータ用マウスあるいはキーボードとマウスのいずれか一方で構成さ
れる。タイミング図のスクリーン表示は、コンピュータのメモリに格納されてい
るデータ構造を視覚的に表示する形で行われる。
当該装置により生成される一組のインストラクションは、コンピュータプログラ
ムの形態で、磁気ディスクのような公知の記憶媒体に記憶できることが好ましい
。また、生成するプログラムは“BAS IC”のような高級言語で、プログラ
ムの改変が必要なときには容易にかつ直接的に行えるのが好ましい。プログラム
は、機械または機器が解読できるアセンブラソースコード、機械コード又は他の
特殊なコードで書くようにするのがよい。これよって、本発明の装置が存在する
ある場所でプログラムを生成させて、別の場所で別のコンピュータを起動させる
ことが可能となり、また制御プロセス用プログラムに対する所望の変更を、本発
明に係る装置を必要としない状況で別のコンピュータ上で行うことが可能となる
。換言すれば、一つのコンピュータ上でタイミング図の生成、編集及びその後の
制御プログラムの生成が可能なあるプログラムを起動させて制御プログラムを生
成し、当該制御プログラムをタイミング図を生成するためのプログラム手段を持
たない別のコンピュータ上で起動させることができる。
以下、本発明に基づく装置の一例を添付図面を参照しながら説明する。
図面の簡単な説明
図1は、本発明で用いるコンピュータ機器を示したものである。
図2は、コンピュータ機器のディスプレイ上に表示した第一のリアルタイム処理
用タイミング図を示したものである。
図3は、コンピュータ機器のディスプレイ上に表示した第二のリアルタイム処理
用タイミング図を示したものである。
図4は、図3の部分拡大図とこれに関連するデータ構造の詳細を示したものであ
る。
発明を実施するための最良の形態
コンピュータ機器としては、エイコン・アルキメデス(登録商標)のパーソナル
コンピュータ1を使用する。同パーソナルコンピュータ1は、キーボード2、デ
ィスプレイ3、中央処理装置(CR)4及びオブシ屋ンとしてのマウス5を備え
ている。
CPU少なくとも一つの入出力ポート(図示せず)を有し、当該入力ポートは複
数のデジタル入出カラインから構成されており、スイッチ、センナ、モータ等の
処理制御装置を接続するために用いられる。入出力の送受信は、入出力ポートに
おける送受信と共に又は入出力ポートにおける送受信の代わりにR3232若し
くはIEEE488ポートのような標準のシリアルポートを介して行ってもよい
。この場合の入出力信号は、特定のイベントに関連したテキストウィンド内に格
納できるデータ別若しくはアナログ信号となる。
本装置の具体例として、押しボタン信号式の横断歩道若しくは同様の横断歩道用
装置を制御するために必要な入出力信号用のインストラクシ履ンを生成する装置
を示す。
画面上にはコンピュータのメモリに保持されているデータ構造が表示されるが、
そのデータ構造自体で処理制御用のインストラクシ履ンを生成することが可能で
ある0画面への情報の入力は、メモリ中の元のデータ構造に対して行われ、これ
により画面が更新される。データ構造は時間的な因果関係を表すよう構築されて
おり、必要な場合には、データ構造中に設定されており、画面上に表示されてい
るデータ構造の関係により処理を実行するためのプログラムコードを生成するの
に用いられる。
ディスプレイ3には存在する種々の入出力のタイミング図が表示される。入力に
対しては先頭に′〉′の記号を付Iす、出力に対しては′<′の記号を付ける。
横断歩道用装置への入力を表す記号としては、ボタン101が、そして出力を表
す信号としては横断待機信号102、歩行者用赤色表示103、同緑色表示10
4、警報音105、車輌用の赤108、黄107及び緑108用のものがある。
それぞれの信号ラインはオン又はオフであり、タイミング図上ではそれぞれハイ
とローで表される。
待機状態は網かけをして表しである(ボタン信号101参照)。
タイマーのスタートは上向き黒塗りの矢印(三角)で表してあり、タイマーの計
時時間は矢印に連結した水平線で、そして計時時間の終了又はタイマーの再スタ
ートは(黄色信号107の107′にあるように)縦線で表しである。タイマー
の計時中止は、上向きの白ぬき矢印で表してあり、タイマーの計時時間の範囲か
ら外れて描かれている場合には、点線で示されるタイマー用の線に結合されてい
る(警報信号105における105′の時点を参照)。縦方向の点線(例えば、
歩行者用緑色信号105にお昏する105′の時点)は、スイッチ信号を変化さ
せるためのインストラクションを表しており、スイッチ信号により変化した状態
はタイミング図に表されているが、時として起こりうろことであるが、既にその
ような状態でない場合を示す。
太線で描かれた横線109,110,111はリサイクル処理を表す。即ち、線
の右端に至ると、処理は線の左端に直ちに移行し、処理が再スタートする。
信号の切換えタイミングが一致しているのは、切換えが同時に行われることを意
味し、 (ボタン101の信号と待機信号102、黄色信号107及び緑色信号
のように)入力信号の切換えと出力信号の切換えが一致しているのは、出力が入
力に依存しており、出力の切換えが入力の切換えの結果生ずることを意味してい
る。これは選択されうる多数の因果関係のうちの一つである。「原因」としては
三つの場合が考えられる。即ち、処理自体の開始(時刻O)と、綱かけされた部
分の切換え(例えば、ボタン101の101’)とタイマーの終了(例えば、黄
色信号107の107’)である、「結果」としては、出力の切換え(例えば、
待機信号102の102’)、タイマーの開始(例えば、歩行者用緑色信号10
4の104’)、タイマーの中止(例えば、警報信号106の105’)、網か
けした帯状部分の開始部によって示される切換えへの注意、網かけした帯状部分
の終端部によって示される切換えの無視、リサイクル信号の開始と終了(例えば
、109′と111′における警報信号と黄色信号。これらの信号のリサイクル
はそれぞれ109と111によって示されている)のような項目がある。二つの
「原因」が一致すると、いずれか一方が「結果」をもたらす。
ディスプレイ上には、タイミング図の一部だけが表示され、画面はキーボード上
の指定のキー若しくはマウスを操作することにより左右上下にスクロールするこ
とができる。また、キーボード上のいわゆるファンクシ璽ンキーを操作し、ある
いはマウスを使用してタイミング図の編集を行うことがeきる。即ち、信号の切
換え、タイマー、あるいは信号切換えのタイミング、関連性等の付加又は切換え
といった編集が可能である。更に、画面を水平方向に引き伸ばして内容を付加す
ることも可能フある。F1〜F12までのファンクションキーに対する機能の割
付はテーブル1〜4に示す通りであるが、シフトキーを同時に操作する場合と操
作しない場合、コントロールキーを同時に操作した場合及びシフトキーとコント
ロールキーを同時に操作した場合とで機能の割付を区別している。
本発明の装置で用いられるグラフ表示は、論理分析器で用いられる波形図や電子
機器用のデータシートに類似している。具体例では使用する処理制御用のコマン
ドの種類を示す0例えば、黄色の光107ばそれが消される時とは無関係に点灯
される。
もっとも、ある時刻には消灯されるのであるが、点灯処理の段階では未知の何ら
かの出来事あるいは他の原因により消灯されることがあり得るのである。
ユーザが望むようなタイミング図がディスプレイ上に完成すると、コントロール
キーとファンクションキーF7を同時に操作する。すると画面上に表示されてい
るデータ構造から横断歩道用信号機制御用の一組のインストラクションがプログ
ラム形式で生成される。このプログラムを添付したりスト1に示す。
リストはBBCBASIC5によるものであり、詳細に示されていない手続き(
PROC,xxx−yyy)に関する参照内容を含んでいる。しかし、エイコン
・アルキメデスコンピュータのI10ポートを制御するための制御プログラムを
生成することについては、その使用方法は公知である。これらの手続かの詳細に
ついては添付のりスト2及び付録1に説明されている。
生成したプログラム(リスト1)を使って、コンピュータにより横断歩道の制御
、即ち横断歩道の信号、スイッチを制御することができる。プログラムを記憶し
、必要な場合にそのプログラムを機械コードに変換すれば、リアルタイム制御及
び別のコンピュータあるいはマイクロプロセッサからのリアルライフ処理が可能
なようにプログラムを起動することができる。
図3に示した例
【よ、ティシュ散乱実験(tissue perfusione
xperiment)用の装置及び方法を制御するために必要な入出力信号のイ
ンストラクションを生成するのに用いられるものである。画面31は図2に示し
たのと同様なタイミング図を示したものであり、従って同じ符号についての説明
は省略する。
処理に関連する信号には、スイッチ201、一対のポンプaとbを制御するため
の出力202,203、組織の電気的刺激をするための装置を制御する出力“ス
テイム(stie) ” 204、フラクシミンコントローラを制御するための
出力205、及びストップボタン20Bが含まれる。
図3に示した処理は、201′の時点におけるスイッチ201の操作によって開
始し、サンプル間の時間はスタート信号上の繰り返しタイマー201″により制
御される。これによってポンプaが202′におけるティシュサンプルを介して
第1の流体のポンピングを開始することになり、サンプルは205′の時点のパ
ルスにより所定間隔でフラクションコレクターにより取り上げられる。当該パル
スはまた流体を新しい収容管に移動させることになる。203′の時点では、ポ
ンプbが第2の流体のポンピングを同時に開始し、202′の時点でポンプaが
ポンピングを停止する。ポンプaとポンプbの両方を用いて流体のサンプルを収
集する初めの段階では、電気的ステイミュレータ204′を作動させてティシュ
を若干刺激するリサイクルパー207(画面の下に表示)は、次のスタートを待
つようにスイッチ201に制御を戻し、ストップボタン信号20θを用いていつ
でも処理を中止し、全てのタイマーをキャンセルすることができる。201’の
時点においては、スタートスイッチを更に操作しても当面無視される。201′
の右部分のうすい網かけは択一的「原因」を表している。この場合、206′の
時点でストップスイッチを操作しても他の結果との組合せでスタートスイッチが
無視される。一つの「原因」が時間的に別の「原因」よりも遅く現れたとしても
一方が他方に先行しているということではなく、それら2つの「原因」は択一的
に決定される。
リストは図3に示したタイミング図を基に本発明の装置で生成されるプログラム
を示したものである。
ディスプレイ上の表示はデータ構造を示すもので、当該データ構造はコンピュー
タのメモリに保持されているものである。
そして、そのデータ構造を用いて処理制御用の一組のインストラクションを生成
することができるのである。
基礎となるデータ構造を示している図3に示されている画面上の内容とりスト3
に示されているプログラムの関係は図4のように表すことができる。図4は図3
のスタート信号ラインの一部を示したもので、当該信号線の下に示されているの
は画面上の一部分の基礎となるデータ構造であり、更にその下に示されているの
はそのデータ構造に関連する機能の表示である。図3に示されている画面に対す
る相対時間はデータ構造の上方に示されている。
図4に示されているデータ構造の各エレメントを構成する16道表記(HEX)
の1バイトは2つのニブル(nybb le)から成り、各ニブルは所定の機能
のオン・オフを表す二進数(ビット)から生ずるものである。下記テーブル(テ
ーブル5)はこれらの機能と2つの16進数ニブルのビットの関係を表したもの
である。
下記テーブル(テーブルθ)はテーブル5に示したビットコードから16道数バ
イトを得る方法を示したものである。
基礎となるデータ構造からりスト3に示したようなプログラムコード生成される
(コントロールキーとファンクションキーF7を同時に操作した場合)。図4に
示されている内容とテーブル5と6とはライン260から380の部分で関連し
ている(これらのラインには同じ時間帯にある図3のタイミング図の他のライン
から生成されたコードも含んでいる)。
例示した内容は、単一のプロセスを制御するためのプログラムの生成に関するも
のであるが、多数の同じプロセス若しくは装置を同時に制御しうる形でプログラ
ムを生成するようにしてもよい。
図2若しくは図3には示されていないが、簡略化するためには、各項目及びそれ
に関連する項目に対してテキストウィンドを設け、それに説明用に情報を含ませ
るようにしてもよい。ウィンドのアクセスは、特定の項目にカーソルがあるとき
に、仕事に対して割り当てられているファンクションキーの組合せを操作するこ
とにより行うことができる。この例で使用されるキーの組合せは、シフトキー、
コントロールキー及びファンクションキーF5である。このようなテキストウィ
ンドは、 「原因」を発生させるために生ずる特定のタイプの複数項目を予め定
義するのに使用することができる0例えば、アナログポートに発生する電圧とか
、アナログの「原因」を発生するための必要なしきい値とか、プロセスがリサイ
クルする回数とか、あるいは、項目が発生したときあるいは入力データのパター
ンがシリアルポート又はIEEEポートに現れる場合にシリアルポート又はI
EEEポートを介して出力されるデータに対して使用が可能である。
いずれの順序で二つの「原因」が発生しても、これら二つの「原因」に依存する
項目の発生を網羅することが可能である。
テーブル1
テーブル2
テーブル3
テーブル5
テーブルθ
付 録 1
定 義 項 目
’:sw−+1LIff+>のようにく〉内に記した各項目の説明は以下の通り
である。以下に定義される内容は正しいシンタックスを決定す゛る際の参照に供
するものである。
<chan−nul+> 整数値がアナログ入力チャンネルの物理数を表す式。
<dac> 整数値がデジタル−アナログ変換器の物理数を表す式。
<error> エラー数:対応するメツセージがFNreport(<err
or>)により与えられる。
<eXpr> −数値を与える式。
<fn−name> サービス機能の名前を与える列表現論理“オフ”<5ta
te> :即ち、もしく入力が)なく、出力が否定されれば電流を流さない。
N、B、I10チップのデータビットはインターフェースに依存して0又は1と
なる。
くOn〉 論理“オン”<5tate> :即ち、 〔入力が〕なく、出力があ
れば電流を流す、工10チップのデータビットはインターフェースに依存してO
又は1となる。
く匹rI11> <eXpr>の整数値を記憶し、イベントに応答して呼び出さ
れた場合にサービス機能にバスする。
<port−nul) <eXpr)の整数値が(port−nul>傘8から
<port−nt+w+>*8÷7までの8つの連続するスイッチ群の物理数を
表す。
<rat> 手続き若しくは機能によって「結果」を可変状態に戻す。
<5W−nuII+> 整数値がデジタルI10ラインの物理数を表す式。
<5tate> (on>又は<off)<time> <expr>の整数値
がセンチ秒で時刻を表す。
(t−num> <expr>の整数値がタイマーの数を表す。
定 数
On −1の値を有する( TRUE)Off Oの値を有する(FALSE
)Over lの値を有するC TR[IEでもFALSEでもない)擬似変数
FNamax システムにおいて最大数が付与されているアナログ入力チャンネ
ル
FNdilax システムにおいて最大数が付与されているデジタルI10ライ
ン
FNp i pes 現在連結されているイベントの数サービス機能に対するリ
ンクイベント
PROCpipe−tilQer (<t−nun>、<time>、<exp
y>、”FN(fn−nag+e>(l <pare)、 <ret>)
<t−nun> <expr> :整数値がタイマーの番号(0から31)<t
ile> (eXpr> :整数値がセンチ秒で表される時間<expr> ダ
ミー:Oに設定
1N<fn−name>(” サービス機能の名称。オブシミンとして追加パラ
メータにより導かれる。
<pars> <eXpr> :整数値で評価<ret> エラーコードが戻る
変数
PROCpipe−tiger()タイマーとサービス機能間の連結を確立。
タイマー数を<t−nuw+>から<time>センチ秒に設定し、直ちにカウ
ントダウンを開始、、0から31までの番号をつけられた32(itのタイマー
がある。
<par■>はタイマーがゼロになったときに評価して記憶する。
この状態が生じたとき、プログラムがPROCwait() (下記参照)に入
ったことを条件に、FN(fn−name)が呼び出され、<I)arm>の供
するダミーであり、存在していなければならず、かつその値はゼロにセットされ
る。
もしタイマーが既に結合されていれば、新しいコールが古いコールに置換される
。タイマーは唯一の“ライフ (life)″を有している。即ち、一度サービ
ス機能が遂行されると、連結はキャンセルされタイマーはリスタートしない。も
し必要であれば、サービス機能における別のPROCpipe−timer (
)のステートメント中で行わなければならない。タイマーは早い時期に停止する
ことができ、連結はPROCkill−tiger ()若しくはPROCki
ll−all (下記参照〉によりキャンセルされる。
PROCが成功すれば、<ret>はゼロに設定され、失敗すれば(+1!rr
om>に設定される。考えられるエラーとしては、タイマーが存在しないこと、
機能のシンタックスが不良であること、機能が存在しないこと、 DEFFHの
ステートメントが不良であること、又はフローブしたときにサービス機能がノン
ゼロ (non−zero)に戻ったことが挙げられる。
FN timer (<t−nu++>、<ret>)FNtimer ()は
タイマ一番号<t−num>の現在値に戻る。もしタイマーが結合されていなげ
れば、ゼロに戻る。結合されていればセンチ秒の時間に戻り、タイマーは起動し
続ける。もし、PI20Cwait ()(下記参照)がタイマーのレイトサー
ビス(lateservicing)をしていれば、負の値で遅れの大きさを表
す。この値は通常は極めて小さい値となる。
FNが成功すれば<ret>はゼロに設定され、失敗すれば<error>に設
定される。最も生じやすいエラーとしては、存在しないタイマーを読み取ろうと
する場合である。
PROCkill−timer (<t−nu+++>、 <ret>)PRO
Ckill−timer ()はタイマ一番号<t−nul>を停止し、サービ
ス機能へのパイプ結合をキャンセルする。サービス機能は呼び出されない。もし
タイマーが結合されてぃなIすれば、何も生じない。
Pi!QCが成功すれば<ret>はゼロに設定され、失敗すれば<error
>に設定される。最も生じやすいエラーとしては、存在しないタイマーの動作を
停止する。
PORCpipe−switch ((sw−nun>、<dir>、<eXp
r>、”FN<fn−name>。
(−、<pars>、<rat>)
(8w−nul> cexpr> :整数値はデジタル入力ラインの番号<di
r> <eXpr> :整数値は方向の変更<eXpr> ダミー:ゼロにセッ
ト
”FN<fn−name> (’″ サービス機能の名前。オプションとして追
加パラメータにより導かれる。
<parll> (eXpr>二整数値で評価<ret> エラーコードが戻る
変数
PORCprpe−swrtch () 7リースイツチ(デジタル入力ライン
)とサービス機能の連結を確立。スイッチ番号<8w−Qu、ffi>の<5t
ate〉の変更がサービス機能<fn−name>を呼び出すように設定される
a C15sue Xo、02、<sw−num>は31を越えない。即ち、ス
イッチ0から31だけが連結される。)
方向の変更は<dir)によって行われ、もしくdir)が真(TRUE)であ
れば、<off>から<□n>への変更が有効となる。しかし、〈an>から<
off)への変更番よ有効でない。もし、 <dir>が偽(FLASE)であ
れば、(Qll>から<off>への変更は有効となる。しかし、<off>か
ら<Qn>への変更は有効でない。もし、 (djr>が他の値をとると、方向
の如何にかかわらず<5tate>の変更が有効となる。
<parm>は指定された方向の変更があったときに評価されて記憶される。こ
の状態が生じたとき、プログラムがPROCwait ()(下記参照)に入っ
たことを条件に、FN<fn−name>が呼び出され、<parm>の記憶値
が正規のパラメータに渡されるa <expr>は今後の使用に供するダミーで
あり、存在していなければならず、かつ、その値はゼロにセットされる。
もし、<5W−nuffl>が既に連結されていれば、新しいコールが古いコー
ルと置換される。このPi!QCによりセットアツプされたパイプは無限に有効
である。指定された方向の<5tate>の変更に伴い、サービス機能が呼び出
される。PROCkill−switch ()若しくはPROCkill−a
ll (下記参照)へのコールにより連結をキャンセルすることができる。もし
、スイッチが管理されていれば(その出力において)、PROCは成功となり、
スイッチが状態を変更すれば、サービス機能は呼び出されない。
もし、PROCが成功すれば、<ret>はゼロにセットされ、失敗すれば<e
rror>となる。起こりつるエラーとしては、スイッチが存在していない場合
、スイッチ番号が31を越えている場合、関数シンタックスが不良である場合、
機能が存在していない場合、DEFFNステートメントが不良であるか、プロー
ブの際サービス機能がノンゼロに戻ってしまった場合が挙げられる。
FN Hmer (<t−num)、<ret>)FN timer ()はタ
イマーナンバー<t−nuIl)の現在値をリターンさせるためのものである。
もしタイマーが接続(パイプ)されていない場合は、タイマーナンバー現在値は
ゼロに戻る。一方、もし接続(パイプ)されている場合には、タイマーナンバー
現在値は、タイマーがその動作を開始した時まで1/100秒の精度で戻る。も
し、PROCwait () (下記参照〕のタイマーをサービスする時間が逼
れた(何か別のものをサービスするように維持されていた)場合には、逆符号の
値にリターンして、この遅れの大きさを示す。なお、この値は実際には非常に小
さいものである。
もし、FNがうまく実行された場合にはOn exit <rat>はゼロに設
定されるが、実行されなかった場合には、〈error>に設定される。最も起
こりうるエラーは、存在しないタイマーを読みとろうとするエラーです。
PROCkjll−tiger (<t−num)、 <ret>)PROCk
ill−ti@er ()は、タイマーナンバー<t−nuga>を停止し、タ
イマーをサービス機能にリンクしている連結をキャンセルするためのものである
。このサービス機能は呼び出されない。もしも、タイマーが連結されていなかっ
た場合には、何も起こらない。
もし、このPROCがうまく実行された場合には、On exit <ret〉
はゼロに設定され、もし実行されなかった場合には、<errorΣに設定され
る。命も起こりうるエラーは、存在しないタイマーを止めようとするエラーであ
る。
PROCpipe−switch((sw−nug+>、<dirt、(exp
r>、”PN<fn−name>(″、<parl、<ret>)
<8W−nun> (eXpr> :整数値は、デジタル入力ラインの数である
。
<dir> <expr> :整数値は、変更の方向である。
(eXpr> ダミー:ゼロに設定されている。
“pN<fn−name> (” サービス機能の名前である。その後ろには特
別のパラメータが付けである。
<parl> <eXpr> :整数値がめられている。
<ret> エラーコードがリターンされるべき変数である。
PORCpipe−switch ()フリースイッチ(デジタル入力ライン)
とサービス機能との間の連結を設立するためのものである。PO[ICpipe
−switch ()は、スイッチナンバー<8w−nul>の状態の変化がサ
ービス機能<fn−nag+e>を呼び出すものであることを明細に示す、(l
5sueX O,02においては、(8N−nLII+>は31より大きくはな
りえない。即ち、スイッチ0から31のみが連結されうる。)変更の方向は<d
ir>で与えられる。もしくdir>がTRUEであれば、<off>から<Q
Q>への変更は実施されうるが、<On〉から(off〉への変更は実行されえ
ない、もし、 <dir>がFし^SEであれば、<On>から<off>への
変更は実行されうるが、<off>から<:On>への変更は実行され得ない。
もし、 <dtr>が他の値であれば、方向に係わりなく (state>の変
更が実行されることになる。
〈I)arm>の数値は、明示された方向の変更が行われる際の利用に供される
よう請求められ格納される。方向の変更が行われる際、もしもプログラムがPR
OCwait () (下記参照)にすでに入っている場合には、FN(fn−
name>が呼び出されて、格納されている<parIll>値が、FN<fn
−naw+e>の変数部分へ移行される。<expr〉は、将来の利用に供され
るダミーである。<expr>の存在は必要であり、ゼロに設定されているべき
である。
もし、<sw−nue>が既に連結されている場合には、新しい呼び出しが古い
それにとって代わられる。このPI!QCにより設定されたパイプは、無期限的
に効力を有する。明示された方向の<5tate>の各変更により、サービス機
能の呼び出しが行われる。PROCkjll−switch ()又はPROC
kill−all (下記参照)への呼び出しにより、この連結はキャンセルさ
れる。尚、スイッチが(その出力を)制御されている場合には、このPROCは
実行されることになるが、スイッチがその状態を変えてもサービス機能は呼び出
されない。
On exit<ret>は、このPROCがうまく実行される場合にはゼロに
設定されるがPROCが実行されないが、PROCが実行されない場合には<e
rror>に設定される。起こりえるエラーとして偽よ、存在しないスイッチや
、31より大きいスイッチナンバー、間違った機能のシンタックス、存在しない
機能、間違ったDEFFNストートメント、又は、検索された場合にゼロ以外の
結果をリターンしてしまうようなサービス機能が挙げられる。
PROCkill−switch (<sw−num>、(rat>)PORC
kill−switch ()は、スイッチ<3l−rlul>と、PORCk
fll−switch (>への最も最近に実施された呼び出しにより明示され
たサービス機能との間に設定された連結をキャンセルする。このスイッチがパイ
プでつなげられていない場合には、又は、このスイッチが管理されたスイッチ(
すなわち、デジタル入力ライン)である場合には、何も起こらない。
PORCがうまく実行された場合には、On exit (ret>はゼロに設
定されるが、PROCが実行されない場合にはOn exit (ret>には
、<error>が設定される。最も起こりつるエラーは、存在しないスイッチ
である。
PROCk i I l−a l 1
PROCk i I 1−a l lは、タイマーやスイッチについて設定され
ている全連結をキャンセルするためのものである。PROCkill−allは
、通常、プログラムの最初の部分で使用され、古いプログラムからの残されたも
のが何もないことを確保するためのものである。
プログラムを終了させる際には、PROCwait () (下記参照)をその
まま残しておくことが行われる。
PROCkill−wait (<ret>)PROCki l l−wait
は、プログラムに対する初期連結が全て設立された時に呼び出される。連結によ
るイベントが行われた(スイッチが明示された(state (状態)〉に変更
されたり、タイマーがゼロに達したりした)際、PROCwait ()から適
切なサービス機能が呼び出される。
入出力回路Cl10)の手操作に加えて、サービス機能が新しい連結を設立した
り、リターン前の他の連結をキャンセルしたりするニブログラムは全連結がキャ
ンセルされるまでPROCwait()中に存在する。サービス機能をPROC
wait ()から出す一般的な方法は、PROCkill−al lを呼び出
すことである。この場合は、PROCwait ()は、この後キャンセルされ
た全ての連結を見つけ、リターンする。サービス機能は、通常ゼロに戻って実行
が行われたことを表示する。一方、もしも、サービス機能がゼロ以外の結果にリ
ターンした場合には、PROCwait ()は、該サービス機能で得られた値
を<ret>に戻して、すぐに終了する。
PROCwait ()から戻ると、メインプログラムは、PROCwait(
)ステートメントのすぐ後ろに続くステートメントからその実行を続ける。通常
、このステートメントは、プログラムの終了を告げるものである。このステート
メントは、更に、終了する前に、何らかの片付は作業が、何らかの結果の印刷を
行っても良い。又、連結を更に設立し、PROCwait ()を再度呼び出す
こともできる。
デジタル人力/出力ラインの方向
PROCfree−switch (<sw−nua+>、 <rat>)PR
OCfree−switch ()は、外界からのコントロールに備え、スイッ
チナンバー<8w−nuffi>を自由な値に設立する。即ち、PI!QCfr
ee−switchは、スイッチナンバーをコンピュータへの入力部にするので
ある。このPI!QCが実行されると、On exit <ret>はゼロに設
定され、PROCが実行されない時に1よ、On exit (rat>は<e
rro>が設定される。最も起こり得るエラーは、存在しないスイッチを明示す
ることである。
PROCgovn−switch (<sw−nuIl>、 <ret>)PR
OCgovn−switch ()(字義通りのGoVerN−8WITCH)
はコンピュータによる制御のためのスイッチナンバー<5W−nLI冒〉を引継
ぐ。
即ち、これが出力とされる。pgocが成功したときには、オンイグジット (
On exit)(rat>がゼロにセットされ、PROCが失敗したときには
エラーとなる。最も起こりやすいエラーは存在しないスイッチを指定している場
合である。
PROCfree−port (<port−nuII+>、(ret>)PR
OCfree−portは外界による制御のためポートナンバーの中の8つのス
イッチを自由にする。即ち、これら全てが入力とされる。PROCが成功したと
きにオンイグジット (On exit)(ret>がゼロにセットされ、PR
OCが失敗するとエラー となる、最も起こりやすいエラーは存在しないボート
を指定している場合である。
PROCgovn−port (<port−nuI>、<ret>)PROC
govn−port ()(字義通りのGoVerN−PORT)はコンピュー
タによる制御のためインポートナンバーを有する8つのスイッチを引継ぐ。即ち
、これらが全ての出力となる。PROCIJtm功すると、オンイグジット<r
et>がゼロにセットされ、PROCが失敗するとエラー<error> とな
る。最も起こりやすいエラーは存在しないポート(non−exixtent
port)を指定している場合である。
FNstatus (<sw−nuIll>、<ret>)pNstatusは
スイッチナンバ<sw−nuffl>の方向を戻す。フリースイッチ(入力)で
あれば誤り、制御されたスイッチ(出力)であれば正である。FNが成功すると
オンイグジット (On exit)<ret>がゼロにセットされ、失敗する
とエラー<error> となる。
最も起こりやすいエラーは存在しないスイッチ(non−exixtentsw
itch)を指定している場合である。
デジタルI10ラインの操作
RROCswitch−on ((sw−num>、<rat>)RROCsw
itch−on ()はそれが制御されたスイッチ〔出力)であるときは、スイ
ッチナンバー<8l−nuffi>を<On>状態とする。スイッチナンバーが
フリースイッチ(出力)であったり又はすでに<On〉状態となっている場合に
は何もおこらない。PROCが成功するとオンイグジット (On exit)
<ret>はゼロにセットされ、PROCが失敗するとエラー<error>に
セットされる。最も起こりやすいエラーは存在しないスーイッチ(non−ex
ixtent 5w1tch)を指定している場合である。
RROCswitch−off (<sw−num>、 <rat>)RROC
−offは制御されたスイッチ(出力)であるときは、スイッチナンバー<sw
−num>を(off>状態とする。フリースイッチであったり又はすでに<o
ff>状態となっていた場合には何もおこらない。PROCが成功するとオンイ
グジット (On exit)<ret>がゼロにセットされ、PROCが失敗
するとエラー<error>にセットされる。最も起こりやすいエラーは存在し
な一1スイッチ(non−exixtent 5w1tch)を指定している場
合である。
RROCswitch−over (<sw−num>、<ret>)RROC
switch−overfは制御されたスイッチ(出力)であるときは、スイッ
チナンバー<3w−null>を反転させる。即ち、<Qfi>のときは(Of
f> とし、<off>のときは<Qn>とする。フリースイッチ(入力)のと
きには何も起こらない。paocが成功するとオンイグジット (On exi
t)<ret>がゼロにセットされ、失敗するとエラー<error>にセット
される。最も起こりやすいエラーは存在しないスイッチ(non−exixte
nt 5w1tch)を指定している場合である。
RROCswitch (<sw−nuIl>、(expr>、<rat>)R
ROCswitch ()はスイッチナンバー<8w−nul>を<eXpr>
によって指定された状態にする。スイッチがフリー(入力)で何も起こらない場
合以外は<expr>がゼロであるときはスイッチが<off〉となり、<eX
pr>がゼロでないときは<expr>Lよ<On〉となる。Pl!OCが成功
するとオンイグジット (On exit)<rat>はゼロにセットされ、失
敗すると<error>となる。最も起こりやすいエラーは存在しないスイッチ
を指定してしまうことである。
FNswitch ()(<sw−num>、<ret>)FNswitch
()はスイッチナンバー<all−nLII>の状態を戻す、即ち、スイッチが
〈On〉であるときは結果番よ正であり、スイッチが<off>であるときは誤
である。スイッチが制御された場合(出力)、結果はその時のセット状態の11
であり、スイッチがフリーの場合(入力)、結果はスイッチが読まれた時の状態
となる。FNが成功するとオンイグジット (On exit)<ret>はぜ
口にセットされ、失敗するとエラー<error>にセットされる。
RROCport (<port−num>、(expr>、<rat>)RR
OCport ()は8つのスイッチをポートナンバー<port−num>の
中で、<eXpr>の最小の意味のある8ビツトによって指定された状態<5t
ate>に置き換える。n=oから7の場合、<eXpr>のnビットが1なら
スイッチナンバー<port−num>* 8 + nは<On〉状態とされる
。<expr>のnビットがOならばスイッチナンバ(−(port−nun>
* 8 + nは<off>状態とされる。いずれかのスイッチがフリー(入力
)であるか又はすでに指定されていた状態になっている場合は何もおこらない。
PROCが成功するとオンイグジット (On exit)<ret>がゼロに
セットされ、失敗するとエラー<error>になる。最も起こりやすいエラー
は存在しないポートを指定するものである。
FNport (<port−nuIl>、<ret>)FNportはポート
ナンバー<port−nun>の中で8つのスイッチ状態を最小の意味のある8
ビツトに1き換える。n=oから7の場合、nビットがスイッチナンバー<po
rt−nu++>* 8+ nの状態を付与する。スイッチがcon>ならばそ
のビットは1である。スイッチがOならそのビットは0である。制御されたスイ
ッチ(出力)に関してはその結果は現在の状態であり、フリなスイッチ(入力)
に関してはその結果スイッチが読み取られた時の状態となる。FNが成功すると
オンイグジット (On exit)<ret>はゼロにセットされ、失敗する
とエラー(error>にセットされる。最も起こりやすいエラーは存在しない
ポートを指定するものである。
PROCdac ((dac>、 (expr>、 <ret>)PROCda
cに)整数値がでてきたときは、デジタル/アナログ変換ナンバー(dac>を
<eXpr>の下位に12ビツトで与えられる数値にセットする。PROCが成
功するとオンイグジット<ret>力tゼロにセットされ、失敗するとエラー<
error>となる。最も起こりやすいエラーは存在しないDACを指定してし
まうものである。
FNadc (<chan−num>、<ret>)FNadcはアナログイン
プットチャンネルナンバー<chan−ロL1m>に関するアナログ/デジタル
変換を行う。FNが成功するとオンイグジット(On exit)<ret>は
ゼロにセットされ、失敗するとエラー<error>となる。最も起こりやすい
エラーは存在しないチャンネルを指定してしまうものである。
アラチニド (ARAC)INID)エラーメツセージ不適切機構構文 (Ba
d function 5yntax)PRPCpipe−ステートメントで与
えられたファンクションネームが以下の形式をとっていない。
FN<naIle>([:<pare>、] −最初の2字は−FN”でなけれ
ばならない0次にファンクションの名前は”の後に続かなければならない0mは
″フ終了するl又はその以上のパラメータに続いてもよい。
スイッチ使用不可(Can’t use S)IITcH)PROCpipe−
switch ()ステートメント内で使用されるスイッチ数が31を越える。
(連結可能なスイッチについての削減)アナログライン不適切
アナログ入力チャンネル又はDACナンバーが本システムの最大値を越えている
。
ポート不適切
指定されたポート数が本システムの最大値を越えている。
スイッチ不適切
指定されたスイッチ数が本システムの最大値を越えている。
タイマー不適切
指定されたタイマー数が31以上である。
サービスファンクションではない
PROCpipe−ステートメントでサービスファンクションとして指定された
ファンクションがゼロでない結果をともなうプローブコール(probe ca
ll)に対するものであり、プログラマ一番よごれをサービスファンクションと
して使用されるものではなl、%と指定したとされている。
アラチニド(ARACHN 10)エラーコード、メツセージ72 アナログラ
イン不適切
81 ポート不適切
94 スイッチ不適切
101 タイマー不適切
103 スイッチ使用不可
105 不適切機能構文
120 サービスファンクションでない210 ム$(7);”<green
:green=7:PROCgovn−switch(green、Eリスト1
10 REM > ]gjprog、PELIcAN −created: M
on、21 May 1990゜13:59:23
20 DIM countonX(31)、countoff%(31)30
DIM L$(31)、v%(31)40 PROCinft
50 P[20Carachnidprogram0 END
70:
80 DEFPROCarachnidprogram90 LOCAI、q%
100 LOCAL ERROR
llo ON ERRORLOCAL PROCerror:ENDPROC1
20PROCkiljall
130 L$0=STIllNG$(10,’ ”)140 L$(0)=”>
button ”:button=O:PROCfree−switch(bu
tton。
E%)
150 L$(1):”<WAIT ”:WAIT:1:PROCgovn−s
witch(IIIAIτ、E%)160 L$(2)=”<redman ”
:recl++an=2:PROCgovn−switch(redman。
EX)
170 L$(3)=”<greenman ”:greenman=3:PR
OCgovn−swjtch(greenman、 EX)
180 L$(4)=”(beeper ”:beeper=4:PROCgo
vn−swttch(beeper。
E%)
190 L$(5)=”cred ”:red=5+PROCgovn−swj
tch(red、H)200 L$(8)=”<amber ”:amber=
6二PROCgovn−switch(amber。
2%)
480 =0
750 ニ
ア60 DEFFNgreenman−timerl(PX、RX)770 1
F H=Q =0
780 PROCswitcJon(greervan、H)+counton
X軸reenman) +=1790 PROCswitch−off(bee
per、8%):cauntoffX(beeper)+=1800 PROC
killJia+er(beeper、8%)810 PROCswitcJo
ff(red、IJ):countoffX(red)÷=1820 PROC
pipejimer(red、500,0.“FNred−timer2 (”
、 0.8%>830 PROCswitch−on(amber、EXり:c
ountonl(amber)v=1840 PROCpipejimer(a
mber、 50.0. ”FNamber−timer2(”、 0. H)
850 =0
860 :
870 DEFFNamber−tia+er2(PX、RX)880 IF
R%=0;0
890 PROCswitch−off(greervan、8%):caun
toffX(greenman)++1970 PROCswitch−off
(amber、8%):cauntoffX(amber)++1970 PR
OCpipe−tiIler(amber、50.o、”FNamber−ti
mer3(”、O,8%)920 =0
930 :
940 DEFFNamber−timer3(PX、RX)950 IF F
t%=0 =0
960 PROCswitch−on(green−man、El):coun
tonX(greenman)++1970 PROCswitch−on(a
IIIber、8%):countonX(aa+ber)÷;1980 PR
OCpipejfmer(amber、50.0.”FNaeber−time
r4(”、 O,8%)990 =O
tooo :
1010 DEFFNamber−timer4(PK4%)1020 1F
+!%=0:0
1030 =FNbeeperjiIIler2(0,−1)1040 :
1050 DEFFNredjiTner2(PX、RX)1060 IF R
%=0 =0
1070 PROCswitch−off(greervan、8%):cou
ntoffX(greenman)+=11080 PROCswitch−o
ff(amber、8%):cauntoffX(amber)+=11090
PROCkiljtimer(amber、8%)1100 =FNstar
t
1110 :
1120 DEFPROCresults1130 LOCAL 4%、 jL
kX1140 PRINT”” 5IIITC)l ONs 0FFs 5W
ITCHONs 0FFs”’
1150 j%=0
1160 FORi%=OTo 31
1170 IF L$(iり<>−” THEN vX(j%>=i%:j!+
=11180 NEXT
1190 jχ+=1
1200 FORkX=o TOj%DIV2−11210 FOR1X=OT
o jlDIV25TEP j%DIV21220 IF i駕÷に%<j%−
I THEN1230 1F iX PRINT” ”:1240 PRINT
″ ’:L$(vX(i%+に%));1250 IF LEFT$(L$(v
X(i%÷B))、1)=”>″ PRINT”;1260 P[NTFNde
calign(countonX(vX(iX+に%))) :1270 IF
LEFT$(L$(vX(iX+に%))、1)=”(” THEN1280
PRINTFNdecalign(cauntoffX(vX(i%十B))
);1290 ELSE
1300 PRINT” ”
1310 ENDIF
1320 ENDIF
1330 NEXT
1340 PRINT
1350 NEXT
1360 ENDPROC
1370:
1380 DEFFNdecalign(d%)=RIGHT$(” ’÷ST
R$(d%) 、9)1390 :
1400 DEFPROCerror
1410 IF (ERRAND&FF)J7 THEN PROCresul
ts1420 REPORT:PRINT” at 1ine ”:ERL14
30 ENDPROC
10ARACHNID Iss xO,03Real−Time extens
ion for BBCBASIc V (C) 1989 Paul F r
ay Ltd20 REMcu
30 DEFPROCkill−al140 LOCAL ZX
50 FO[! 2X=OTo 45TEP 4:reqreg!Z%=0:f
lags!Z%=O:NEXT60 pipes%;0
70 ENDPROC
80:
90 DEFPROCpipe−timer(t%、timeX、n%、fn$
、parmX、RET[JRN EX)100 LOCAL 7%
110 8%:FNchktim: IF B% ENDPItOC1208%
:FNchktn: IF EX ENDPROC1301F time%=O
timeX=1140 T%=1くくt%
150 IF !reqreg AND 7% THEN160 !reqre
g=!reqreg AND NOT 7%170 1flags=、!fla
gs AND NOT T%180 pipesX=pipes%−1190E
NDIF
200 timers!(tl(<2)=−timeX210 !reqreg
;!reqreg OR7%220 pipes%=pipes%+1230
fn$(t%):fn$:parw+%(t%)=parm%240 ENDP
ORC
250:
260 DEFPROCpipe−switch(sX、dir%、nX、fn
$、parmX、 RETURN EX)270 LOCAI、3%
2801J=FNchkpjpe: IF EX ENDPROC290Ex=
FNchkfn: IF B% ENDPROC300S%=1<<sX
310 1F !sw−req AND 3% T)IEN320 !sw−r
eq=!sw−req AND NOT 8%330 !sw−flag=!s
w−flag AND NOT 5X340 pipesX=pipes%−1
350ENDIF
360 CASE dir% 0F
370 WHEN TRUE: !ignreg=!ignreg AND N
OT 3%: !dirreg=!dirreg AND NOT 5X
380 11HE14 FLASE: Iignreg=!ignreg AN
D NOT EX二 !dirreg=!dirreg OR5X
390 0T)IERllrSE: !ignreg=!ignreg OR5
X400 ENDCASE
410 !sw−req=isw−req OR5%420 pipesX=p
ipes%+1430 fn$(sX+32)=fn$+parm%(sX+3
2)=parmX440 ENDPROC
4701J:FNchktim: IF EX ENDPROC480t$二1
(くtX
490 IF ireqreg AND tX THEN500 !reqre
g=!reqreg AND NOT tX510 !flags=tflag
s AND NOT tX520 pipes%=pipes!−1530EN
DIF
540 ENDPROC
550:
560 DEFPROCkill−switch(sX、RETLIRN 14
)570 EX=FNchkpipe: IF EX ENDPROC5805
X=1<(sX
590 IF !sw−req AND sX THEN600 !sw−re
q=!sw−req AND NOT 5X610 !swjlag=!sw−
flag AND NOT sX620 pipesχ=pipes$−163
0ENDIF
640 ENDPROC
650:
660 DEFFNtia+er(tX、RETURN El)670 EX:
FNchktim: IF EX ENDPORC680IF ireqreg
AND l<(tX THEN =−Hmersl(tl<<2) ELSE
+0690 =
700 DEFFNchktim
710 IF tX(00f! tl>31 THEN +101 ELSE
+0720 ニ
ア30 DEFFNchkpipe
740 IF sX<0 0RsX>=(?ns+pipts<く3) THE
N JO3ELSE :0750 ニ
ア60 DEFFNchksw
770 IF sX<0 0RsX>!dw+ax THEN +94 ELS
E :0780 ニ
ア90 DEFFNchkport
800 IF pX(OOR(pX<<3)>jdmax THEN :91
ELSg +0810 :
820 DEFFNchkadc
830 IF c%<0 0Rc%>!amax THEN +72 ELSE
:0840 :
850 DEFFNchkdac
860 IF pg<0 0R(c%<<2)>!amax THEN +72
ELSE +0870 :
880 DEFFNchkfn
890 LOCAL ERROR
900ON ERRORLOCAL IF ERFt=29 0RERR=30
01! ERR=31 THEN:ERRELSE PRINT’REFOR
T$” at 1ine ;ERI、: END910 IF LEFT$(f
n$、2)(>”F” ORLBNfn$<4 0RlN5TR(fn$、”(
”)+0 0RRIGHTS(fn$)<ど(” AND RIGHTS(fn
$)<ど、′ 丁HEN =105920 IF EVAL(fn$+”o、F
ALsE)”) THEN =120930 +0
940 :
950 DEFPROCwait(RETURN EX)960 LOCAI、
2%
970 LOCAL ERRO[!
980 ON gRRORLOCAI、IF ERR=17 E%=ERI!:
ENDP[!QCEl、SRPI!INT ’REPORT$” at 1i
ne″:ERL: END990 WHILE pipesK>01000 Z
X:USRwait
lolo IF ZX(32THEN !reqreg=!reqreg AN
D NOT (1<<2%): pipesχ=pipesχ−1
1020EX4VAL(fn$(z%)+”parmX(z%)、TRUE)”
)1030 1F EX ENDPI!QC1040ENDW旧LE
1050 8%+0
1060 gNDPROc
1070 :
1080 DEFPROCclaiI111090 RX=EXT$0PENI
N”$、Library、registers”1100 W%=EXT$0P
ENIN”$、Library、wait”1110 C%=EXT$0PEN
IN”$、 Library、 code’1120 CLOSE$0
1130 )11MEM=HrMEM−(J−W%−R%−256AND &F
FFFFFFC1140PROCinit
1150 ?claimed=0
1160 7%=TIl’lE: REPEAT UNTIL TIME>TX
1170 1F ?clajmed=OTHEN1180 0SCLI”LOA
D $、Library、registers″÷STR$”HIMεH119
00SCLI”LOAD $、Library、wait”+STR$” (H
IMEM+R%)1200 0SCLI″LOAD $ル1brary、 co
de”+STR$” (HIMEM+RX+I1%)1210 8YS”Ilo
−Podule−Hardware” TO,1%1220 !1opod=I
X AND &FF0OFFFF1230 SYS”O05−C1ai”、&I
C1旧MEM+R%+W%、旧HEM1240 PROCi。
1250 ENDIF
1260 PRINT−ARACHNID l5sue Xo、03 (C)
Paul Fray Ltd 1989−1270 ?(PAGF、+1)+2
55: ?(TOP−1)二〇1280 END
1290 :
1300 DEFPROCvariables1310 0n=TRLIEコ
0ff=FALSE: 0ver=11320 osbyte=6: read
fred=146: writefred=147: readjim=148
: writejim=L49: read 5heila=150: wri
tesheila=1511330 P%=旧MEM: PROCregist
ers1340 ENDPI!QC
1350:
1360 DEFPROCinit
137Q LOCAL P%、Z%
1380 PROCvarfables1390 DIM reports$(
127)、fn$(63)、parII+%(63)1400 PIOCrep
orts
1410 err=o: pipesX=01420 ENDPROC
1430:
t440 DEFPROCreports1450 reports(6);T
ype mismatch”1460 reports(17)=”Escap
e″1470 reports(29)=”No 5uch function
”1480 reports(30)=−Bad call of funct
ion“1490 reports(31)−Argu+nents of f
unction 1ncorrect”1500 reports(72)=”
No 5uch analogue 1ine”1510 reports(9
1)=”No 5uch PORT”1520 reports(94)=”N
o 5uch 5)IITCH“1530 reports(101)=”No
5uch TIMER”1540 reports(103):”Can’t
use 5WITCH”1550 reports(105)−”Bad f
unction 5yntax”1560 reports(120)=−No
t a 5ervice function”1570 ENDPROC
1580:
1590 DEFPROCregtsters1600 [OPT 0
1610 ALIGN
1620 、tiilers
1630 ]
1640 P%=P$+32*4
165(l [OPT 0
1660 、flags
1670 EQUD 0
1680 、swjlag
1690 EQUD 0
1700 、reqreg
1710 EQUD 0
1720 、sw−req
1730 EQUD 0
1740 、dirreg
1750 EQUD 0
1760 、ignreg
1770 EQtJD 0
1780 、tick
1790 EQUD 0
1800 、oldtick
1810 EQUD 0
1820 .5oftiodef
1830 EQUD 0
1850 EQLID 0
1860 EQUD 0
2430 EQUD &FFFFFFFF2440 、wait
2460 ENDPI!QC
2470:
2480 DEF FNswitch(s%、RETURN EX)2490
1.0CAL P%、8%
2500 1J=FNchksw: IF EX THEN =02510 P
%=sX>>>3: 8X=1<<(sXAND7)2520 IF 5oft
iodef?P% AND BX THEN2530 sX:5oftport
?P!2540 ELSE PROCpagedig2550 SYS osb
yte、?1ocode、portab?P%TO,、s%2560 PROC
restpage
2570 ENDIF
2580 :((s% EOR1nvtab?P%> AND Boo ()
02590 :
2600 DEF FNstatus(sX、RETtJRN EX)2610
EX:FNchksw: IF EX THEN =02620 ; (so
ftiodef?(s%>>>3) AND 1<<(s% AND ?))
<> 02630 :
2640 DFJF PROCswitch(sX、st%、RETtlRN
EX)2650 IF st% PROCswitch−on(s%、EX)
El、SE PROCswitch−off(s%、 El)
2660 ENDPORC
2670:
2680 DEF PROCswitch−on(sX、RETtJRN EX
)2690 LOCAL P%、8%
2700 EX:FNchksw: IF EX ENDPRQC2710P%
=s%>>>3: 8X=1<<(sXAND7)2720 s%=softp
ort?P5G BOR1nvtab?P%OR8% EOR1nvtab?P
%2730 5oftport?PX = s%2740 PROCpaged
ig
2750 SYS osbyte、?1ocode+1. portab?P%
、s%2760 PROCrestpage
2770 ENI)PROC
2780:
2790 DEF PROCswitcJoff(s%、RETURN H)2
800 LOCAL PK、8%
2810 EX=FNchksw: IF EX ENDPROC282(l
P%=s%>>>3: 8X=1<((s%AND7)2830 s%=(so
ftport?P% EOR1nvtab?PX) AND NOT 8% E
OR1nvtab?P%
2840 5oftport?P% = 5X2850 PROCpagedi
g
2860 SYS osbyte、?1ocode+1. portab?P%
、s%2870 PROCrestpage
2880 ENDPROC
2890:
2900 DEF PROCswitcJover(s%、RETtlRN E
X”)2910 LOCAL PX、8%
2920 EX=FNchksw: IF EX ENDPROC2930PK
=+J>>>3: 8X=1<<(sXAND7)2940 s%=softp
ort?PX EORBX2950 5oftport?P% :8%2960
PROCpagedtg
2970 SYS osbyte、?1ocode+1. portab?P%
、8%2980 PROCrestpage
2990 ENDPROC
3000:
3010 DEF PROCAfree−switch(s%、RETURN
EX)3020 LOCAI、P%、8%
3030 EX=FNchksw: IF EX ENDPROC3040P%
−3%>>>3: 8X=1<<(s%AND7)3050 5l=softi
odef?P% AND NOT 8%3060 5oftiodef?P%=
s%3070 PROCpagedig
3080 SYS osbyte、?1ocode+1. portab?P%
+2. 5X3090 PROCrestpage
3100 ENDP[!QC
3110:
3120 DEF PROCgovn−switch(s%、RETURN H
)3130 LOCAL PK、8%
3140 E%=FNchksw 二 IF EX ENOPROC3150P
%=s%>>>3: 8X=1<<(s%AND?)3160 5X=(sof
tport?P$ EOR1nvtab?P%) AND NOT 8% EO
R1nvtab?P%
3170 5oftport?P% = s%3180 PROCpagedi
g
3190 SYS osbyte、?1ocode+1. portab?P%
、s%3200 s%=softioclef?F’% OR8%3210 5
oftiodef?PX=s%3220 SYS osbyte、?1ocod
e+1. portab?P%+2. s%3230 PROCrestgap
e
3240 ENDPORC
3250:
3260 DEF FNport(pX、RET[IRN IE%)3270
LOCAL 0%
3280 EX:FNchkport: IF EX THEN =03290
PROCpagedig
3300 SYS osbyte、?1ocode、portab?p% To
、、DX3310 PROCrestpage
3320 = DX AND NOT 5oftfodef?p$ OR5of
tport?pX AND 5oftiodef?pX EOR1nvtab?
p%3330 :
3340 DEF PROCport(pX、0%、RETURN EX)33
50 EX=FNchkport: IF EX ENDPORC33600%
=D% EOR1nvtab?p%3370 5oftport?pX=D%3
38Q PROCpagedig
3390 SYS osbyte、Tiocode÷1. portab?pL
0%3400 PROCrestpage
3410 ENDP[!QC
3420:
3430 DEFPROCgovn−port(pX、RETURN EX)3
440 PROCport(pX、0.El)34501FEχ Ii、N0P
RQC3460PROCpagedig
3470 5oftiodef?p%=1FF3480 SYS osbyte
、?1ocode+1. portab?p%+2. &FF3490 PRO
Crestpage
3500 ENDPROC
3510 :
3520 DEFPROCfree−port(p%、RETURN EX)3
530 EX=FNchkport: IF EX ENDPROC3540P
ROCpagedig
3550 5oftiodef?pc03560 SYS osbyte、?1
ocode+1. portab?pX+2. 03570 PROCrest
page
3580 ENDPROC
3590コ
3600 DEFPROCpagedig3610 onemegpage?1
=?oneIQegpage3620 ?onemegpage=dbase?
13630 SYS osbyte、writefred、&FF、dbase
?13640 ENDPROC
3650:
3660 DEFPROCpagean3670 onemegpage?1=
?onemegpage3680 ?onelIIegpage=abase?
13690 SYS osbyte、writerfred、&FF、abas
e?13700 ENDPROC
3710:
3720 DEFPROCpageser −3730onemegpage?
1=?oneIIlegpage3740 ?onemegpage=sbas
e?13750 SYS osbyte、writefred、&FF、5ba
se?13760 ENDPROC
3770: 。
3780 DEFPROCrestpage3790 ?onellIegpa
ge=onemegpage?13800 SYS osbyte、write
fred、&FF、?onemegpage3810 ENDPROC
3820:
3830 D[l:FPROCdac(cl、V%RETURN EN)384
0 E%=FNchkdac: IF F、% ENDPROC3850ccc
%<<3 0R80RcX<<I AND 23860 PROCpagean
3870 SYS osbyte、writejim、cX、V%3880 S
YS osbyte、writejit c%+1. V%>>>83890
PROCrestpage
3900 ENDPROC
3910:
3920 DEFFNadc(c%、RETURN F、%>3930 LOC
AL 8%
3940 El=FNchkadc: IF EN THEN :03950
B%=clく<1 AND &F03960 PROCpagean
3970 SYS osbyte、writejiIl、8%、c% AND
73980 SYS osbyte、readjii、8%+23990 SY
S osbyte、readjim、B%+I TO、、c%4000 SYS
osbyte、readjim、8%+2 To 、、13%4010 PR
OCrestpage
4020 : c%<<8 OR8%
4030コ
4040 DEFPROCi。
4050 !amax=FNsetaiax: IF !amax=−I TH
EN !abase=04060 !sa+ax=FNsetsmax: IF
!5IIax=−I THEN !5base=04070 !dmax=F
Nsetdmax4080 1F !diaxニーI THEN4090 IF
FNtestvia(readsheila、&60) THEN4100
!dbase=&FE60: !dmax=7: ?portab460: ?
1nvtab=0: ?5oftiodef=0
4110 SYS osbyte、writesheila、&62. 041
20 ?1ocode=readsheila: !jiw+5hei1a=&
3C2000J60*44130 ELSE !dbase:04140 EN
DIF
4150 ENDIF
4160 IF !dbase=o AND !abase=o AND !5
bas、e=o ERRORO,”No Ilo found”
4170 ?nff1pipts=!da+ax+1)>>34180 1F
?nmpipts>4 THEN ?nmpipts=4: REM exte
nd 1ater4190 ENDPROC
4200:
4210 DEFFNsetdmax
4220 LOCAL Z%
4230 z%:0
4240 PROCpagedig
4250 Wt(ILE FNtestvia(readjii、z%) AN
D Z%<2564260 5oftiodef?(Z%>>>3)=Q: 5
oftiodef?((H>>>3)+1)=04270 SYS osbyt
e、vrttejim、2%+2. 04280 SYS osbyte、wr
itejim、 H+3.04290 2%+=16
4300 ENDWI(ILF。
4310 PROCrestpage
4320 =H−1
4340DEFFNtestvia(1%、0%)4350 SYS osby
te、1%+1.0%+6.04360 SYS osbyte、1%+1.0
%+4. &554370 SYS osbyte、IL 0%+6 To 、
、O%43801FO%=&55 Tl(EN =TRUB El、SE =F
ALSE4390 :
4400 ’ DEFFNsetamax4410 LOCAL 2%
4420 Zχ=0
4430 WHILE FNtestan(Z%) AND Z%<12844
40 Z%+=16
4450 ENDW旧しE
4460 =(H>>>1)−1
4470:
4480 DEFFNtestan(Z%)4490 PROCpagean
4500 SYS osbyte、readjiIl、Z% To 、、Z%4
510 PROCrestpage
4520 [F Z%=I THFIN =TRUF、ELSB =FALSE
4530 :
4540 DEFFNsetsIIax4550 LOCAL H
45602%=0
4570 W旧り、E FNtestser(Z%) AND Z%<3245
80 2%+=32
4590 ENDIII旧L8
4600 =Zl−1
4610 :
4620 DEFFNtestser(2%)4630 PROCpagese
r
4640 2%=0
4650 PRQCrestpage
4660 IF 2% THEN =TRUE ELSE =FALSE467
0 :
4680 DEFFNd+ax=!dmax4690 DgFFNamax=!
amax4700 DEFFNsmax=!smax4710 DEFFNdb
ase=!dbase4720 DEFFNabase=!abase4730
DEFFNsbase=!5base4740 DEFFNpipes=pi
pesX4750 DEFFNreport(R%)=report$(RX
AND 127)4760 :
リスト3
10 REM > ]giprog、perfuseq −created:
Mon、14 May 1990゜17:19:23
20 DIM countonX(31>、countoffXC31)30
DIM L$(31)、v%(31)40 PROCinit
50 PROCarachnidprograi+0END
70:
80 DEFRPOCarachnidprogra+590 LOCAL q
%
100 LOCAL ERROR
110ON ERRORLOCAI、 PROCerror:8NDPROC1
20PROCkill−al1
13OL&0=STRING$(10,” ”)1401J(Q)=−>5ta
rt ”:5tart=O:PROCfree−switch(startJX
)
150 L&(4)=”<pump−a Tl:pump−a=4:PROCg
ovn−switch(pump−a。
IJ)
160 1J(5)=”<pump−b ”:puwp−b=5:PROCgo
vn−switch(pump−b。
E%)
170 L&(6)=”<stim ”:stim=6:PROCgovn−s
witch(stim、EX)180 L&(7)=″<fraction ”
:fraction=7:PROCgovn−switch(fraction
、 E%)
190 L&(1)=”<5top ”:5top=1:PROCfree−s
witch(stop、El)200 q%=FNstart
210 PROCwait(EX):IF EX ERROREX、FNrep
ort(E%)220 PROCresults
230 ENDPROC
240;
250 DEFFNstart
260 PROCpipe−syitch (start、 On、 O,”F
Nstart−sw 1tchl (″、 0. E270 PROCpjpe
−switch(stop、on、0.”FNstop−switchl(”、
O,E%)280 =0
290 :
300 DEFFNstarJswitchl(P%、R%)310 IF R
X=O=0
320 countonX(start)+=1330 PROCkill−s
witch(start、E%)340 PROCpipe−tiIler(s
tart、800.o、”FNstart−tiw+er2(”、0.E%)3
50 PROCswitcJon(pump−a、E%) :countonX
(pump−a)÷=1360 PROCswitch−on(fractio
n、E%):countonX(fraction)+a1370 PROCp
ipe−tinler(fraaction、20.0.”FNfractio
n−timerl(0,8%)
380 =0
390 :
400 DEFFNfraction−ttmerl(P%、R%)410 I
F l!%=0:0
420 PROCswitch−off(fraction、E%):coun
toffX(fraction)+−1490DEFFNstartjimer
2(P%、R%)460 IF Rχ=0=0
470 PROCpipe−timer(start、800.o、−FNst
art−timer3(−、O,E%)480 PROCswitch−on(
stim、E%):countonX(stim)+−1490PROCpip
e−timer(stiIll、200.0.”FNstia+−timerl
(”、0.E%)500 PROCswitch−on(fraction、E
jf):countonX(fraction)+:1510 PROCpip
e−tiIIIe(fraction、20.0.FNfraction−ti
mer2(”、0゜E%)
540 DEFFNfractionjia+er2(P%、R%)550 I
F 12$=0 =Q
560 PROCswitch−off(fraction、E%):coun
toffX(fraction)+−1490DEFFNstia+−time
rl(P%、11%)600 IF R%=0 =0
610 PROCswitcJoff(stig+、E%):countoff
X(stim)+−1640DEFFNstartjimer3(P%、R%)
650 IF R%=0 =0
660 PROCpipejiIler(start、800.0.”FNst
art−timer4(“、0.E%)670 PROCswitch−on(
fraction、E%):countonX(fractjon)+−164
0PROCpipe−timer(fraction、20.0.FNfrac
tion−tig+er3(”、0゜E%)
710 DEFFNfraction−tinler3(P%、R1>720
IF RX=0 =0
730 PROCswitch−off(fraction、El):coun
toffX(fraction)+−1640=0
750 ;
760 DBFFNstart−tiger4(PK、E%)770 IF R
X=O=0
780 PROCpipe−ttmer(start、800.0.”FNst
art−tiiler5(″、 O,E%)790 PROCswitch−o
ff(pump−aJ%):countoffX(pump−a)+=1800
PROCswitch−on(pump−b、E%):countonX(p
ump−b)+=1810 PROCswitch−on(fraction、
E%):countonX(fraction)+=1820 PROCpip
e−tiiler(fraction、20.0.FNfraction−ti
ger4(”、O。
E%)
830 =0
840 :
850 DEFFNfraction−tiger4(PK、E%)860 I
F E%;0:0
870 PROCswitch−off(fraction、E%):coun
toffX(fraction)+:1880 =0
890 :
900 DEFFNstart−tiiler5(PK、E%)910 IF
o=o =。
920 PROCpipe−timer(start、800.0.”FNst
art−tiger6(”、0.E%)930 PROCswitch−on(
stim、14):countonX(stig+)十=1940 PROCp
ipe−tiIller(stia+、200,0.”FNstart−tig
er2(’、0.E%)950 PROCswitch−on(fracti−
on、E%):countonX(fraction)+=1960 PROC
pipe−timer(fraction、20.0.PNfraction−
timer5(”、O。
IJ)
990 DEFFNfraction−tiIIler5(P%J%)1000
IF R%=O=0
1010 PROCswitch−off(fraction、E%);cou
ntoffX(fraction)+=11020 =0
1030 :
1040 DEFFNstiI−tiger2(PK、E%)1050 1F
11%=O=0
1060 PROCswitch−off(stim、E%):countof
fX(stiIl)+=11070 =0
1080 :
1090 DEFFNstart−tiger6(PK、E%)1100 IF
Rχ=0=0
1110 PROCpipe−tiger(start、800,0.−FNs
tart−tiger7(”、0.El)1120 PROCswitch−o
n(fraction、E%):countonX(fraction)+=1
1130 PROCpipe−tiIIler(fraction、20.O,
FNfraction−tiw+er6(”、0゜1160 DEFFNfra
ction−timer6(PX、E%)1170 IF R%=0 =0
1180 PROCswitch−off(fraction、Eχ):cou
ntoffX(fraction)+=11190 =0
1200 :
1210 DEFFNstart−tiIIler7(PK、E%>1220
IF R駕=0:0
1230 PROCswitch−off(puIIp−b、E%):coun
toffX(put+p−b)+=11240 :FNstart
1250 :
1260 DEFFNstop−switchl(PK、E%)1270 IF
R%=0:0
1280 PROCkill−switch(start、E%)1290 P
ROCkill−timer(start、E%)1300 PROCswit
ch−off(pump−a、E%):countoffX(pulIip−a
)+=11310 PROCswitch−off(pump−b、E%):c
ountoffX(puIIp−b) +:11320 PROCswitch
−off(stim、FJ):countoffX(stim)+=11330
PROCkill−timer(stim、E%)1340 PROCswi
tch−off(fraction、lJ):countoffX(fract
ion)+:11350 PROCkill−timer(fraction、
E%)1360 countonX(stop)+=11370 PROCki
ll−switch(stop、IJ)1380 =0
1390 :
L400 DEFPORCresutls1410 LOCAL iLj%、に
%1420 PRINT”’“ 5WITCHONs 0FFs 舖ITCHO
Ns 0FFs”
1430 j%=0
1440 FORi%=OTo 31
1450 1F L$(i%)<>” THEN vX(j%)=i%:j%+
=1
1460 NEXT
1470 j%+=1
1480 FORk%=o TOj%DIV2−11490 FOR1%=OT
o jXDIV25tEP j$DIV21500 IF i%+B<j%−I
THEN1510 TF iχPRIT” ”
1520 PRINT””;L$(vX(i%+に%)):1530 IF L
EFT$(L$(vX(i%+に%))、1):”)”PR[NT−”:154
0 PRINTFNdecalign(countonX(vX(iX+kX)
)) :1550 IF LEFT$(L$(vX(i%+に%))、1)=’
<“ THEN1560 PRINTFNdecalign(countoff
X(J(i%+に%))) :1570 ELSE
158Q PRINT” ”−
1590END[F
1600 ENDrF
1610 NEXT
1620 PRINT
1630 NEXT
1640 ENDPROC
1650:
1660 DEFFNdecalign(d%)=I!IGHT$(−”+ST
R$(d%)、9)167〇二
1680 DEFPROCerror
1690 1F (ERt!AND&FF)J7 THEN PROCresu
lts1700 REPOR↑:PRINT−at 1ine −;ERL17
10 BNDPROC
〉
【図1】
【図4】
補正書の翻訳文の提出書
(特許法第184条の8)
平成3年12月2日