コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
あまさとしおん ◆mzDKTVUAtwqE
2023/7/20 15:49
EXECを繰り返した後に別スロットのCOMMON DEFを呼ぼうとすると不正なillegal function callっぽいのが起きる現象を発見した
プチコン3号のバグ?

コメント

アバター
あまさとしおん 2023/7/20 15:54 ◆mzDKTVUAtwqE
文章で説明するのが死ぬほど難しいんだけど

Aプログラムで
SLOT 3にPRGINSを用いてコモンDEFを挿入する
当該DEFを呼ぶ処理←正しく動く
EXEC "Bプログラム"

Bプログラムで
EXEC "Aプログラム"

Aプログラムで
SLOT 3にPRGINSを用いてコモンDEFを挿入する(※一度消してるので重複ではない)
当該DEFを呼ぶ処理←なぜか全く同じことをしてるのにillegal function callを吐く
アバター
あまさとしおん 2023/7/20 15:55 ◆mzDKTVUAtwqE
別スロットではなく同じスロットをEXECで上書きしてるのは意図通り
(2度目のAプログラム実行時に最初の起動からやり直したいのでわざとそうしてる)
アバター
あまさとしおん 2023/7/20 15:58 ◆mzDKTVUAtwqE
この呼び出しが2度目で謎のエラーを吐く
BFSTR$(問題のコモンDEF)はCOMMONLIB.PRGに含まれているので未定義ではない(そもそもDEFがない場合はsyntax errorになるので違う)

何がしたいのかというと、SB4ポリフィルから動作デモ部分を削除するという処理です
アバター
あまさとしおん 2023/7/20 15:58 ◆mzDKTVUAtwqE
Q.PRGINSを用いてコモンDEFを挿入するのはなぜ?
A.スロットが4つしかないので本体プログラム+4つ以上のライブラリを呼ぶにはそうするしかないから
アバター
あまさとしおん 2023/7/20 16:04 ◆mzDKTVUAtwqE
たぶんだけどスマイルブームの人もこんなにライブラリをたくさん呼ぶ作品を想定してない気はする
アバター
あまさとしおん 2023/7/20 16:07 ◆mzDKTVUAtwqE
辞書と漢字ライブラリとSATLIBとSB4ポリフィルを同時に保持しないといけないとか
我ながらかなりヘビーな設計ではある
アバター
あまさとしおん 2023/7/20 17:09 ◆mzDKTVUAtwqE
解決不能っぽいので
苦肉の策で戻れないのが仕様ということにしました
アバター
Na 2023/7/21 0:42 ◆QoELVrBXBQCI
TXT:A ファイル↓

EXEC "PRG3:C"
?CHKCALL("A")
PRGEDIT 3
PRGINS "COMMON DEF A:?"+CHR$(34)+"A"+CHR$(34)+":END"
EXEC 3
?"EXEC 3"
?CHKCALL("A")
A
EXEC "B"

TXT:B ファイル↓

EXEC "A"

TXT:C ファイル = 空ファイル

でAを実行したところエラーにならず正常動作しました
バグ発生にはこれの他に条件がありそう?

ちなみに出力は
0
EXEC 3
1
A
0
EXEC 3
1
A
... と無限ループ
アバター
あまさとしおん 2023/7/22 15:13 ◆mzDKTVUAtwqE
怪奇現象、単純化した実験プログラムだとだいたい起きないんですよね
でも2引数の関数に2個渡してillegal function callって起こり得ないはずなので、バグとしか思えない

一番悲しいのは突き止めて報告してもまずアップデートしてもらえる可能性がないってことだけど
アバター
あまさとしおん 2023/7/22 15:30 ◆mzDKTVUAtwqE
最小に近い構成で発現できたので参考に
key KWXAX33

もしかしてだけど同スロットにEXECを複数実行するとおかしくなる?

→EXEC 3をUSE 3にしても発症する
アバター
あまさとしおん 2023/7/22 15:37 ◆mzDKTVUAtwqE

何となく原因が見えた
USE/EXECで有効化したDEFを実行する前にDEFのあるスロットにPRGEDITをかけると異常を起こす、というのが可能性

でも初回がうまくいって2回目でエラーを吐くのが不可解
もし「PRGEDITを実行すると当該スロットのCOMMON DEFが無効になる」という仕様ならば、1回目でエラーになるはず

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -