DOC_errseq.jp 4.26 KB

        エラー処理シーケンスの変更点


1. 序

        このドキュメントは、現時点で 64DD プログラミングマニュアル第10
        章記載のエラー処理シーケンスに見つかった不具合を修正するもので
        す。

        なお、ここに記載したものは 98/07/09 の日付のマニュアルからの変更
        点です。お持ちのマニュアルの日付に関しては各ページのフッタをご覧
        下さい(章ごとに別々の日付がついているので注意してください)。

        98/07/08 の日付のマニュアルをお持ちの方は、以降のページ番号から
        すべて 3を引いて読みかえてください。98/07/09 の改訂は、単に 
        98/07/08 のものを、表紙を 1ページ目としてページ番号を付け替えた
        だけのものだからです。

        プログラミングマニュアルに関してはなるべく速やかに改訂します。も
        しお手持ちのマニュアルの日付が 98/07/09 以降のものであれば、この
        ドキュメントは無視し、マニュアルの方を参照してください。


2. エラー処理シーケンスの修正点

        PAGE 10-30
                RTC を使用するゲームの場合、RTC の動作を確認する、という
                ことでカッコ付きのシーケンスがこのページにありますが、こ
                のページでチェックするのをやめ、PAGE 10-45 に移ってから
                チェックするように変更します。この場所でチェックをしてし
                まうと、リセットがかかった後にこのシーケンスを実行した場
                合、LeoResetClear(PAGE 10-45 で実行)の前に時計の読み出し
                をしてしまうため、LeoReadRTC 関数からエラー43(POWERONRESET_
                DEVICERESET_OCCURED エラー)が返る可能性があるからです。

                PAGE 10-45 では、「特殊ディスク挿入待ち」でリセットが発
                生しないようになれば、次にディスクが挿入されているかどう
                かのチェックをするようになっていますが、このチェックの後
                に、RTC の動作確認をするようにしてください(RTC を使用し
                ない場合は、今まで通りチェックの必要はありません)。

                RTC の動作確認は、ディスクの挿入確認の結果に関わらず行な
                うようにしてください。動作確認の方法は、PAGE 10-30 に記
                載されていた方法(PAGE 10-33 「時計の読み出し」シーケンス
                を実行する。正常終了でなかった場合、時計なしで続行するか
                どうかはゲームに応じて対処する)を使用してください。

        PAGE 10-36
                右上の囲みの内容を下記のように変更します。patchNg980708
                で、LeoSpdlMotor 関数を SLEEP や BRAKE で呼んだ場合は 
                DIAGNOSTIC_FAILURE エラーを返さないように変更になったか
                らです。

                修正前:
                *これはモータの停止処理用のエラーシーケンスです。MEDIUM_
                NOT_PRESENT エラーが起きた場合、および DIAGNOSTIC_      
                FAILURE エラーの後にディスクが抜かれた場合は、その時点で
                モータが止まっているので、このシーケンスでは正常終了とし
                て取り扱っています。

                修正後:
                *これはモータの停止処理用のエラーシーケンスです。MEDIUM_
                NOT_PRESENT エラーが起きた場合は、その時点でモータが止まっ
                ているので、このシーケンスでは正常終了として取り扱ってい
                ます。

        PAGE 10-40
                MEDIUM_NOT_PRESENT エラーが起きた場合、「ディスクを差し
                込んでください」と表示をした後、ウェイトを入れた上でルー
                プしていますが、これを変更し、何も表示せずに呼び出し元に
                返ることにします。EJECTED_ILLEGALLY_RESUME が起きた場合
                も、エラー番号を領域1に、注意文を領域2に表示した後、呼
                び出し元に返ることになります。
                
                このシーケンスの呼び出し元は PAGE 10-45 ですが、元のシー
                ケンスでは PAGE 10-40 から返ってきた時点ではディスクは常
                に挿入されているため、その後の挿入されているかどうかのチェッ
                クが無意味になってしまうからです。


3. その他の修正点

        厳密にはシーケンスの修正ではありませんが、PAGE 10-14 では 
        DIAGNOSTIC_FAILURE エラーはエラー番号非表示となっているにも関わ
        らず、PAGE 10-32 などのシーケンス中ではエラー番号を表示するとなっ
        ている、という矛盾がありました。

        PAGE 10-14 の方を「表示する」に修正します。


4. 注意点再確認

        PAGE 10-25 にあるように、エラー番号の 30番台はプログラムで対処す
        べきエラーです。絶対に 30番台のエラーはエラー番号を画面に表示し
        ないようお願いします。