[OSASK 5203] API初期化特別モード

 こんにちは、I.Tak.です。

 API初期化コマンドの特別モード (要するにl2d3とtek0の展開コマンド
ですが) にバグをみつけました。

 初期化後は特別終了をつけずに他のコマンドをつなげるということ
でしたが、たとえば
    初期化コマンド特別モード(tek0)
    ウィンドウオープン
    うんぬんかんぬん
    終わり
というようなコマンド列が正しく実行できません。

 これは、コマンド列の先頭に初期化コマンドがあるときはワークエリア
のポインタを取得しないようになっているからです。初期化か特別終了
以外のコマンドをつなげるとスタックセグメントのメモリを破壊します
(されたのに気づかなくてかなり悩んだ)。

 回避するには、他のコマンドでコマンド列を始めることです。現在は
ノーオペレーション(0x1c)を先頭に付けることで問題を回避しています。

 で、解決の方法ですが、ライブラリを初期化する前に実行するためとは
言え、初期化コマンドの特別モードという形を初期化後も使うのはやはり
まずかろうと思います。それで、tek0やl2d3のコマンドを初期化コマンド
とは独立に設けてはどうでしょう。点描コマンドと線描コマンドが実は
同じルーチンだった、みたいな感じで。

では。


I.Tak. <g240845 !Atmark! mail.ecc.u-tokyo.ac.jp>
http://user.ecc.u-tokyo.ac.jp/~g240845/


ML番号でジャンプ
ML単語検索