現在の映像周波数モードを返値にするプログラム

Copyright(C) 2023 まりも(DOSsoft)

ここをクリックしてダウンロードする

【1.目的】

 実機の98にはさまざまな機種があり、映像の水平信号の周波数もいくつかあります。MS-DOS起動にの AUTOEXEC.BATなどに、映像信号を変化させるソフトウェアを記述している場合、もとの映像信号の状態によっては、そのソフトの実行を中止/選択したいこともあるでしょう。

 ということから、現在の水平周波数を返値に返すプログラムを作成しました。基本的に、バッチファイルで使います。本プログラムが返す errorlevel を使って実行を制御するという使い方になります。現在の水平周波数モードを表示するだけの機能としても使えますが、表示は行の右端に遠慮がちになされるだけとなります。

 そういうわけで本プログラムが役立つ場合というのはかなり限られたソフトウェア環境の人だけであろうと思いますが、公開しておきます。後述のように9821に備わる標準的な機能を用いた表示モード変更ソフトウェアを常用しているのであれば、本プログラムはおそらく必要ありません。

【2.仕様および技術的情報】

プログラムの返値には次のものがあります。現在の映像モード水平周波数のkHzそのままの数値(の近似整数値)を返します。

なお640ドット×480ラインモードのときも、元の400ライン時の水平周波数によって、違いがあります。それぞれ400ライン表示であったときの値を表示しますので、現時点の480ラインでの本当の水平周波数を示しているわけではないことにご注意ください。つまり「映像信号モード」を表示しているだけであって、信号を実測しているわけではありません。  

 映像周波数モードの読み出しは I/O アドレス9A8hのポートを使っています。これが無い機種は9821以前と考えられるので、24kHzモードしかないと判定します。また古い機種では I/O アドレス6Ehのポートから 15kHzかどうかを読み出しています。ハイレゾモードにはインターレースとノンインターレースのモードがありますが、これの判別をソフトウェア側からおこなってもさほど意味がない(これに依存したハイレゾ専用ソフトウェアがまず存在しない)と考え、区別しないことにしています。

 ソースプログラムが付属しています。ファイル名は DISPFREQ.S です。

【3. 実際的使い方】

 DISPFREQ.COMを、AUTOEXEC.BATなどのバッチファイルで次のように使います。この例では、31kHzのときだけ 「30行BIOS」のプログラムを実行してテキスト30行表示にしますが、24kHzのときにはなにもせず25行表示のままとします。後述のように、無条件に30行表示にすると、画面が真っ暗となって制御不能となることがあるからです。

(例1)
DISPFREQ.COM
if ERRORLEVEL == 31 goto DISPLAY31kHz
goto END
:DISPLAY31kHz
30bios -T
atok30
:END

次の例では、ハイレゾモードのときだけ動作させたい/させたくないものを記述しています。ハイレゾモードを全く考慮しないノーマルモード専用のプログラムを、ハイレゾモード時に実行回避したいことはよくあると思います。

(例2)
DISPFREQ.COM
if ERRORLEVEL == 50 goto DISPLAY50kHz
ノーマルモード専用のプログラム
goto END

:DISPLAY50kHz
ハイレゾモード専用のプログラム
:END

【4.付録 PC-98のディスプレイ事情とテキスト30行表示】

 このようなプログラムを作る必要性が出てきたのは、近年の液晶ディスプレイでPC-98シリーズへの対応および許容範囲がマチマチであることが理由です。I-O DATA機器やIIYAMA、三菱などの液晶ディスプレイは案外98の映像信号を受け付けますが、広範囲の周波数モードにきっちり対応しているわけではありませんし、無理矢理なテキスト30行の表示可否については、あまり情報もありません。

 多くの場合、以下のモードのうち基本である上の2つのモードは表示できるようですが、「30行BIOS」などで変更した場合(*)は表示できないか、不適切な表示となるのが普通です。
行数水平垂直対応度コメント
25行24kHz56Hz98の基本
30行31kHz60Hz9821の30L,480dotの場合,VGAなので普通に対応 
30行*約30kHz約61HzVGAに近いので映るが要調整の場合もある 
25行31kHz70Hzいわゆる31kHzモードだが720*400と解釈されやすい 
30行*約24kHz約48Hz×これが表示できるディスプレイは希少 

 なおテキスト30行表示時に9821の機能を用いて31kHzモードの640×480ドット(水平31kHz, 垂直60Hz)に強制的に変更しているソフトウェア(概ね1995年以降に開発されたもの)はとくに問題はありません。それ以前の、水平24kHz アナログCRT表示装置を前提とした古いソフトウェアでこの問題があります。

【5.お約束】

 DISPFREQ はフリーソフトウェアとしますので、ダウンロードして実行することは自由ですが、著作権は作者である私にありますので、作者の意向に反する使い方は禁止とします。

  このソフトウェア全体を、不特定多数のダウンロードできる場所へ「転載」することも、禁止とします。しかしリンク先の紹介についてはなんら制限はありません。

  プログラムは、ある程度のテストを経て公開していますが、一部見込みで作成しているところもあり、動作が完璧に行なわれるということを、作者は保証するものではありません。ユーザがプログラムを適用しことによる起動不能などのトラブルの補償には一切応じません。

【バージョン】

年月日   版数 記事
2023.01.10 1.00 初版公開

元に戻る