[50025]  SETRTC
投稿者:K.Takata さん   2005-07-28 17:44:29
久々に PC-98 用の新作ソフトを作ってみました。
http://homepage3.nifty.com/k-takata/mysoft/setrtc.html
カレンダ時計が狂っているせいで Win2k が起動しないトラブルを未然に防ぐことができます。
  1. まりも さん   2005-07-29 20:13:15
    拙作CHACHAを組み込んである場合も、カレンダ時計暴走状態の場合は警告し、仮の(リリース日に近い)日時を設定するようにしてあります。しかしカレンダ時計を正しく合わせる機能は、ユーザインターフェイスを作るのが面倒なため入れてませんでした(ふつうDOSのdate,timeコマンドで十分かと思うので)。

    SETRTCは日時入力もできるので便利です。何も考えずにこれは入れておくべきソフトといえそうです。
  2. zaf さん   2005-07-29 21:57:19
    さっそくいただきました〜

    これで安心(^^;) とはいってもなかなかそういう時に狂わないのですよね。
    ところで、カレンダーの暴走状態をわざと作り出すお手軽な方法って
    どういうのがあるんでしたっけ?
  3. まりも さん   2005-07-29 22:00:20
    バッテリを引っこ抜いて放置です。
  4. K.Takata さん   2005-07-30 01:34:00
    > 拙作CHACHAを組み込んである場合も、カレンダ時計暴走状態の場合は警告し、仮の(リリース日に近い)日時を設定するようにしてあります。しかしカレンダ時計を正しく合わせる機能は、ユーザインターフェイスを作るのが面倒なため入れてませんでした(ふつうDOSのdate,timeコマンドで十分かと思うので)。

    となると、SETRTC → CHACHA の順に組み込むようにしておかないといけませんね。
    UI はアセンブラだと面倒なので C で書きましたが、無駄に大きくなってしまいました。sprintf を使うのを止めれば一気にサイズを減らせそうですが。
    私の場合は、date コマンド等だと設定するのを忘れてしまうことも多いので、Win98 起動ディスクの autoexec.bat にも SETRTC を登録してしまいました。

    > ところで、カレンダーの暴走状態をわざと作り出すお手軽な方法って

    擬似的にやるには、SETRTC を作るときに作ったテストプログラムでできます。(再配布禁止)
    http://homepage3.nifty.com/k-takata/mysoft/rtctest.lzh

    rtctest 0000-00-00
    と入力してください。
  5. nawakuni さん   2005-07-30 19:47:44
    痒いところに手が届くようなソフトありがとうございます。
    MS-DOSをメインに使っているのですが、放置してあったものを起動した時などにカレンダーの暴走に気付かず、メチャクチャなタイムスタンプのファイルができて困っていました。
    使っているすべてのPC-98の AUTOEXEC.BAT に入れておきます。

    (寝言ですが、SETRTC.COM の DOS汎用版も有ればうれしい限りです。 by MZ)
  6. まりも さん   2005-07-30 22:38:39
    このソフトは DOSが使えない(わざわざDOSを起動するのが面倒な)人向けにあるようなものだし、実際にDOSをメインでお使いなのだから、DOS汎用版が欲しいというのは、甘えた要望=寝言としかいいようがないです。DOSでは date,timeを実行すればよいわけで。DOS汎用というのがPC/AT互換機でも使えるヤツという意味の場合でも、互換機の場合はBIOS画面で日時を設定できるので、必要性が感じられません。
  7. zaf さん   2005-07-30 22:43:23
    IPLに入れる使い方なら、DOS汎用といわずOSは問わず動く気がしますが、AT互換機でも動くようにってんでしたら、IPLに入れるのはきついのとちゃうかな..

    とりあえず、autoexec.batで処理するだでいいなら、環境変数に日付入れる程度の汎用プログラムはいろいろあるので、ここ数年の年号になってるか程度をバッチで分岐処理させれば同じようなことは、できるような気がします。
    #私はこれまでPC-98は、そうしてました..
  8. まりも さん   2005-07-30 23:38:44
    PC/AT互換機のRTCでは、PC-98のような「暴走状態」にはならないようです。単に大きく日時がずれた状態になる(マザーボードのリリース年ころの元旦になったりする)だけです。時計は自分で合わせるかNTPを使うべきであって、それ以外で、外部ハードウェアもなしに自動的に正しい時刻に合わせるソフトなどというのは作れないです。

    >ここ数年の年号になってるか程度を
    カレンダ時計というのは、ここ数年とか数ヶ月以内程度に合っていればよいというものじゃないと思いますが。一日違っていても一年違っていても、合っていない程度は同じじゃないかと。勘違いしてはいけないのは、SETRTCの存在意義というのは、日時が狂っていることを検出するソフトであるという点ではなくて、RTCが暴走状態にあることを検出し手入力で日時合わせもできるソフトであるという点です。
  9. K.Takata さん   2005-07-31 00:41:54
    Ver.1.01 を公開しました。sprintf を使うのを止めることで 1.4KB ほど容量が小さくなりました。機能的には 1.00 と全く同じです。

    > DOS汎用版
    すでにまりもさんも言われてますが、必要性が感じられませんね。

    日時が狂っていないことを起動時に確認したいというのなら、autoexec.bat の最後に
    echo .|date
    などと書いておいて、自分の目で確認するのが一番だと思います。
  10. まりも さん   2005-07-31 00:54:35
    >日時が狂っていないことを起動時に確認したい
    まあ、そういうプログラムがIPLwareとして存在する意味はあるでしょう。例えばグラフィック画面に大きく(美しく?)日付時刻を表示するとか。
  11. nawakuni さん   2005-07-31 01:54:47
    余計な事を書いてしまったようで、申し訳ございません。

    この便利なソフトがPC-98以外の機種でもと思ったので、甘えてしまいました。
    機種はPC/AT互換機ではありません。
    SHARP MZ-6556 と言うマイナー機種でMS-DOS3.1、HDD容量20MBでほぼ満杯、修理や代替品の入手はかなり困難、BIOSは非公開、電源ONで直接業務用ソフトが起動、これを仕事で専門に使用するのがパソコン超初心者です。
    書きこんだファイルのタイムスタンプがおかしいので調べたら、最近使用頻度が減ってきたので珠にカレンダーが暴走しています。私が気がついたときは DATE TIME コマンドで直しますが、仕事中なのでそれもままならず、ファイルサイズが少なく、超初心者にも使いやすい SETRTC.COM のようなソフトがあればと思った次第で。

    皆さんの提示された方法を検討してみます。

    PC-98以外の機種のことなので、この辺でご勘弁を。
  12. まりも さん   2005-07-31 08:04:50
    MZ機でRTCの暴走状態というのがどんなものかわかりませんが、PC-98と同様の現象であるのなら、以下のようなDOS汎用(MZ固有の機能を使わない)プログラムでよいのではないでしょうか?。
    ・DOSファンクションで日付を取得する
    ・すぐあと(1〜2秒?)にもう一度日付を取得する
    ・そこで一致しない場合に異常と判断する

    それよりも単に現在日時をデカデカと表示するだけでも注意喚起にはなるのではないかと。
  13. zaf さん   2005-07-31 13:05:32
    PC98でも使える汎用的な方法ってことで..せっかくだから一応書いておきますね。
    私が NT系のOSを使うまで使っていた方法は

    http://www.vector.co.jp/soft/dos/util/se001756.html

    これを AUTOEXEC.BATに入れておいて、日付が環境変数にセットされるので
    あとは適当にバッチファイルで分岐..分岐の条件は適当に..

    まぁ狂った時計の年下2桁が、偶然今の年と一致してると見分けられません
    けど無いよりかなりマシでした。

    たとえばこんな感じ
    NOW
    IF "%YY%" == "05" GOTO END
    IF "%YY%" == "06" GOTO END
    ECHO パソコンの日付がずれているかもしれません。
    DATE
    TIME
    :END

    Win2kがメインになって、iplwareのおかげで出番は無くなりましたけど(^^;)
  14. nawakuni さん   2005-08-01 00:35:32
    丁寧なご教授をいただき、感謝致します。

    まりも様、
    >MZ機でRTCの暴走状態というのがどんなものかわかりませんが、
    あせって DATE TIME コマンドで直してしまったので、今では断言できませんが、FMと言うファイラーの日付が変に動作していたような記憶が。

    >・DOSファンクションで日付を取得する
    >・すぐあと(1〜2秒?)にもう一度日付を取得する
    >・そこで一致しない場合に異常と判断する
    なるほど、これなら Pasi氏の BU で、すぐにできそうですね。

    >それよりも単に現在日時をデカデカと表示するだけでも注意喚起にはなるのではないかと。
    これが一番わかり易いようですが、PC-98用では文字を拡大するソフトを使ったことは有りますが、DOS汎用でそのようなことができるのでしょうか?この機械エスケープシーケンスなどもかなり貧弱ですし、本当に勉強不足で申し訳ありません。

    zaf様、
    NOW.COM 早速ダウンロードしてきました。
    バッチファイルの内容までご指示いただき助かります。

    いろいろとできそうな事を試してみます。
    仕事中にやる訳にはいかないので、家のPC-98で試してからと言うことになりますが。

    >ところで、カレンダーの暴走状態をわざと作り出すお手軽な方法って
    これが問題です、int 1Ch ってPC-98用のファンクションだったような覚えが...、rtctest.exeは使わない方が良さそうですね。DOSファンクションでも暴走状態作れるのかな??
    PC-9821のようにネジ一本で開くような物でなく、偉く堅固な出来で、以前自分での分解修理を途中で諦めた覚えがあります。17年も経た機械ですので下手にばらしてやぶ蛇になるのが怖いので、今の所次のカレンダー時計の暴走まで気長に待つつもりです、それまで結果は不明ですが。
  15. K.Takata さん   2005-08-01 03:04:55
    > ・DOSファンクションで日付を取得する
    > ・すぐあと(1〜2秒?)にもう一度日付を取得する
    > ・そこで一致しない場合に異常と判断する

    PC-98 のカレンダ時計が暴走したときにはこういう現象も起こりうるのでしたっけ。

    > これが問題です、int 1Ch ってPC-98用のファンクションだったような覚えが...、rtctest.exeは使わない方が良さそうですね。DOSファンクションでも暴走状態作れるのかな??

    rtstest.exe は PC-98 専用です。DOS ファンクションでは無理でしょう。
  16. nawakuni さん   2005-08-02 03:46:48
    http://www.vector.co.jp/soft/dos/util/se023753.html
    を使用させていただき、

    echo off
    BU -nMDATE1 DSPDATE
    BU TIMEWAIT 2
    BU -nMDATE2 DSPDATE
    IF %MDATE1% == %MDATE2% goto OK
    echo 内蔵時計がリセットされています。
    echo 日付、時間をセットして下さい。
    echo.
    DATE
    TIME
    :OK

    で暴走状態のチェックは出来ました。
    もちろん rtctest.exe の使用できるPC-98でのことですが。
    なぜか AUTOEXEC.BAT の最初に入れたら無視されました。
  17. K.Takata さん   2005-08-02 13:12:30
    Ver.1.02 をアップしました。今回はエラーチェックの強化とサイズ削減です。
    rtctest.exe を使ったところ、13月32日などといった日付も設定できることが分かったので、それの対策をしました。
  18. tsh さん   2005-08-03 12:48:36
    自分のV200/Mのカレンダー部分が破損した(リセットしても日付が飛ぶようになった)ので、
    早速導入させていただく予定です。

    #根本的な問題はまだ分かっていないので、助かります。
  19. tsh さん   2005-08-07 20:01:25
    #根本的な原因が一応推測できました。

    カレンダー異常が起こる前に、破損したFDDを読み込んで固まったので強制シャットダウンを行ったためにか、
    カレンダー部分に日時を書き込めなくなっていました。(MS-DOS上からSETRTCを使用して判明)

    分解してバックアップ電池を引っこ抜いたところ、カレンダーがリセットされたため?に
    カレンダーに正常に書き込めるようになったのでカレンダー異常は解決しました。

    #IPLware上で動作しているSETRTCでは、一度だけ書き込み動作を行った後にすぐに終了してしまうので
    #今回の現象が発生した場合には見落とす可能性がありますので、少々注意が必要かもしれません。
  20. K.Takata さん   2005-08-08 12:05:16
    > カレンダー部分に日時を書き込めなくなっていました。(MS-DOS上からSETRTCを使用して判明)

    カレンダ時計に日時が書き込みできないというのは SETRTC では全くの想定外ですね。よく起こりうる現象なのでしょうかねぇ。
    どういう日時になっていましたか?

    > #IPLware上で動作しているSETRTCでは、一度だけ書き込み動作を行った後にすぐに終了してしまうので
    > #今回の現象が発生した場合には見落とす可能性がありますので、少々注意が必要かもしれません。

    とりあえず手抜きの対処法としては、setrtc.com を適当にリネームして iplware で2つ組み込んでしまうとか。