• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:N88-dosBasicでのGP-IBについて)

N88-dosBasicでのGP-IBについて

このQ&Aのポイント
  • N88-DOSBasicでGP-IBを使用しているプログラムが、データの取りこぼしをするために調査することになりました。
  • このプログラムで、DOSのワークを操作しているのですが、その目的がわかりません。どなたかご存知の方がおられましたら教えてください。
  • HWが古いことも考えられるのですが、とりあえず調査しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

PC-9801のSRQフラグをOFFにする命令のようです。 「N88BASIC &H9F3」で検索してこの文書を見つけました。 http://www.tmimarket.com/Shop_Image/files/9090001.pdf ===引用 ここから=== ・N88BASICを使用している場合は、SRQ処理サブルーチンに以下の4行(PC-9801のSRQフラグをOFFにする命令)を加えてください。 DEF SEG=SEGPTR(7) A%=PEEK(&H9F3) A%=A% AND &HBF PORT &H9F3,A% ===引用 ここまで=== N88BASIC(MS-DOS版)では、SEGPTR(7)は&H60になるようです。

WhiterBy
質問者

お礼

検索していただきありがとうございました。 N88basicでGP-IBを使用する場合の、お約束ということですね。 データ取りこぼしとは、関係が無い様です。 ありがとうございました

その他の回答 (4)

  • 486HA
  • ベストアンサー率45% (1013/2247)
回答No.4

NEC PC-98シリーズ用のN88 BASICには、ROM BASIC/DISK BASIC/DISK BASIC(MS-DOS版)がありましたが、 N88-dosBasicとは何のことでしょう?  いずれにせよ、ここで記載されたBASCIプログラム自体は至極簡単なものですが、 :>SQR OFF = Service Request の送信を停止する。 :>DEF SEG=&H60 :>A%=PEEK(&H9F3) :>A%=A% AND &HBF :>POKE &H9F3,A% =この時点の&H9F3番地のデータと&HBFの論理orを&H9F3に書き込んでプロテクトを解除などの機能設定。 &H9F3に書き込まれるデータによって機能が指定されるが、対応するハードが不明なので機能は不明。 :>SRQ OFF :>WBYTE &H3F,&H5E,&H20+DMM.W,&H4; :>FOR T=1 TO 100 : NEXT T 改めてService Requestをオフにして「WBYTE」でバイナリデータの送出をおこない、 FOR/NEXTのループで待ち時間の調整を行う。  それ以上のことは、PCとGP-IB機器の構成が分からないので何とも言えません。

WhiterBy
質問者

お礼

>N88-dosBasicとは何のことでしょう?  DISK BASIC(MS-DOS版)です。 Hayashi_Trekさんの回答で、60:9F3番地の操作は、”お約束である”ということが わかりました。 ご回答ありがとうございました

回答No.3

このプログラムを動かしているPCの型番や GPIBインターフェースの型番が不明なので詳細は不明です。 (NEC純正だけでなく他社が販売していたのもあった) プログラム中に、FOR文で時間待ちをしている部分があるが、 同じPC9801でも初期と後期では100倍以上の速度差が有るので FOR回数が少なくて十分な時間待ちになっていないかも知れません。 ※ INPUT@ とPRINT@ の間に時間待ちは必要ないのか?

WhiterBy
質問者

お礼

GP-IBボードは、CONTEC製GP-IB(98)Nです。 PCのCLOCKによる、ソフトウェアループ待ち時間の違いについて検討してみます。 ありがとうございました。

  • YUI_AI
  • ベストアンサー率45% (303/661)
回答No.2

I/Fボードの型式とかが不明なのであてずっぽうですが、 I/Fのコントロールを行うには、パソコンのIOポートにマップされているコントローラのレジスタを 操作する等して、コントローラの初期化等を行う必要があります。 通常(過去の話ですが)、I/FボードにはROMが搭載されており、BASIC等の言語でROM内の各エントリーアドレスをコールする事で、大部分の処理が自動的に行われる様になっています。 ※ROMにサブルーチンが作りこまれている。 今回の例では、IOポートのマッピングされている「GP-IBコントローラ」のレジスタの特定のビットを直接クリア(設定?)している様に思えます。 後は、そのボードのポートがどのアドレスにマッピングされているかを調べて、そのベースアドレスにオフセットアドレスを加算すれば、そのレジスタが判明するとおもうのですが。 ※そのレジスタの6ビット目を0に設定している。

WhiterBy
質問者

お礼

GP-IBボードは、CONTEC製GP-IB(98)Nです。 このボードは、I/Oポートのみで、アドレスは、C1,C3,C5,C7,C9,CB,CD,CF,99,9Bです。 Hayashi_Trekさんの回答で、60:9F3番地の操作は、”お約束である”ということが わかりました。 ご回答ありがとうございました

  • mimazoku_2
  • ベストアンサー率20% (1905/9111)
回答No.1

>N88-DOSBasicでGP-IBを使用しているプログラムが、データの取りこぼしをするために調査することになりました。 ごめんなさい。 私、プログラムは分かりません。 GP-IBと言うことですが、使用中のもので、「最近起こりだしたの?」、それとも使い始めてすぐなの? それによって、変わってくると思いますよ。 GP-IBって、RS-232Cと同じぐらいか、2倍の通信速度だったと思います。(具体的は、9600bpsか19200bps) なので、取りこぼしのビットに共通性があれば、ハードウェアの性能低下が可能性高いですよ。 確か、RS-232C(25ピン)だと、コントロールに4ビット程度で、データに8ビット、位だったはずなので、意外とテスターなんかで、ある程度の判別が可能です。 古くからあるI/Fなので、問題発生時期を勘案すると、見えてくるかも?! 案外、プルアップ抵抗が死にかけていると、ランダムに問題を発生します。 例えば、全ピン一斉の信号送出時に発生するとかね。

関連するQ&A