GAME-CCのやらかしバグについて まず、問題のファイルは ランタイムパッケージに相当する 「gamecc.asm」の中の W82 RMB 6+1 ; DIVIDE BINDEC/WORK ; FCB 0 この箇所、これ gamecc.asmの終わりの方の、ほとんどRMBの並んでる中、ただ1バイト分 0をメモリに書き込んでる。 そこだけピンポイントで0格納するようにHEXファイルが生成されれば無駄もないんだが、 アセンブラの種類によっては前後のRMBブロックもゼロフィルして無駄に大きなHEXファイルになる。 W82は6バイト確保だったのを7バイト確保にしてFCBを消したんだが、一見これでも 動作はする。 メモリというものが、電源入れた直後に全てゼロになる前提なら。今回のエミュはそうはいかない。 メモリの確保イコールゼロで初期化まではやっていない。実機でもSRAMにしろDRAMにしろ電源投入直後は電気的には不確定なのが通常で ROMから起動したモニタがメモリをゼロフィルしてメモリの正常動作を確認するのが一般的な初期動作になる。 これまでにテストで使ったlinux上のエミュはメモリのゼロフィルが当たり前だったのが災いした形になる。 この6バイトは、数値の左詰め表示のための結果格納バッファで符号のための1バイト、1から32767までの5桁を入れる5バイトの合計6バイトになる。 そして、GAMEの内部処理では文字列は0終端の集合として扱って表示しているので、数値文字列の終わりのための0を入れる7バイト目が必要になる。 これを端折ったため、maze.hexのオブジェクトのエスケープシーケンスでカーソル位置指定する計算式で 結果が正しく出されずに謎文字列の羅列が爆発するバグにエミュレータ作成初期に悩まされた。 BYNDECルーチンのリターン直前に W82+7の位置に0を書き込むコードを挿入して回避するように修正。 エミ...
githubで公開されてる、FM-7/77/AV系のエミュレータでlinux環境でも直で使える エミュとして唯一あるのが 77AVEMUであるが、ビルドの為のライブラリ導入のため目的のエミュ本体よりデカいTOWNSEMUを必要としたり、GUIが使えますと案内するが肝心のGUIのビルド方法については全く説明がないとか 謎仕様の塊で なかなか敷居の高いエミュなんだが 決して完成度の低いわけではないので ターミナルからCUIで使うか、pythonでも使って自前でフロントエンドでも作るかすれば済む話ではあるが、せっかく作者の方が用意してくれたのに使わないのはストレージの肥やしとしても勿体なさ過ぎるので、chatGPTとアレコレ対話しながら悪戦苦闘して 何をどう修正したとか 細かく説明したり、diffとってパッチファイルにするとかとてもじゃないが面倒なので、必要なファイル放り込んだフォルダごとZIPにしたので約240Mとデカいファイルだが 必要なら各自で ダウンロード して試してみて。最低限やった内容はHowToってテキストに書いてるけど あとは 各自でchatGPTにでも相談して解決して。