tsutsuiの作業記録置き場

NetBSDとかPC-6001とかの作業記録のうち、Twitterの140字では収まらない内容や記事としてまとめるべき内容をとりあえず置いてみる予定

PC6001VX の pkgsrc 化 その後

NetBSD + pkgsrc で P6エミュレータ PC6001VX のエントリの続きです。

pkgsrc/emulators/PC6001VX

ブログに書くのをサボっていましたが、 OSC大阪の展示 のほぼ2週間前の 1月15日に pkgsrc のツリーにコミット しました。

以前書いた PC6001VX.pro の修正についてはすでに 本家の github には取り込まれていて、次のリリースには入るはずです。 pkgsrc 的には現状の最新である 2.30.0 を使うので本家の最新版に追従する形のパッチを入れています。

OpenGL ハードウェアアクセラレーション問題

以前のエントリで「SIGSEGV問題」として挙げた「起動して少し時間が経つと core を吐いて落ちる」という問題ですが、一部訂正があります。

NOOPENGL について改めて調べたところ、前項に書いた PC6001VX.proX11 関連の定義の「linux以外」の部分で記載するところに「QT += x11extras」を書き忘れていたのが原因ということがわかりました。

実はこれは間違いで、「ハードウェアアクセラレーションを有効にすると落ちるグラボ(というかXサーバードライバ)がある」のが正解のようです。

たまたまビルド時に NOOPENGL を定義したバイナリを動かすと設定ファイル上でハードウェアアクセラレーションが無効の設定で記録され、そのままの状態で NOOPENGL 有効のバイナリをインストールしてもたまたま動いていただけのようです。

とりあえず手元のマシンでは以下のような状態でした。

NetBSD 的には DRMKMS 対応の Xサーバーはまだまだ発展途上ということでしょうか。

ハードウェアアクセラレーションを無効にするには起動後のメニューで設定すればよいのですが、ダメなときはメニューを開く間もなく落ちてしまうので、 ~/.pc6001vx/pc6001vx.ini の以下の行を編集して true → false に変更すればOKです。

hwAccel=true

起動

PC6001VX を起動すると初回起動時は自動で ~/.pc6001vx 以下の設定ファイルディレクトリ一式を作ってくれます。その場合 ROM が無いので警告メッセージが出るので一旦終了します。

実機を持っていてエミュレータを使うような人はすでにROMを吸い出しているでしょうからそれを ~/.pc6001vx/rom ディレクトリにコピーするだけです。

実機を持っていない場合は、 秋川さんの互換BASIC の BASICROM.60 と PC6001VX作者でもある eighttailsさん制作のフォント の CGROM.60 を上記 ~/.pc6001vx/rom ディレクトリにコピーすればOKです。

イース2 OPデモ on 互換BASIC

これも以前の記事で書いた話です。

ただし、 PC-6001用互換BASIC だとイース2オープニングは何かしらおかしいようです。エミュレータの問題ではないと思いますが、これもせっかくなので調べてみたいところです。

これについて、作者の秋川さんから直接連絡いただきました。

ROM 内ルーチン的には OPEN および CLOSE のルーチン内でリレーONおよびリレーOFFまでやってくれるようなのですが、TINY野郎さんの YS2OP 実装時は両方を重複して呼ぶ実装にしていたとのことです。

互換BASIC Ver.0.6 の中には RLON および RLOFF というリレーON/OFFを実行するエントリはすでに存在しているので、上記 1B49H および 1B4BH にこれら RLON および RLOFF への JR 相対ジャンプ命令を書いてやればイース2オープニングデモも動作します。

ちなみに OSC大阪でのセミナー時のイース2OPデモも互換BASICで動かしてました。

なお、イース2エンディングデモの方はテープロード時間と実行速度がリンクしているので、 OSC大阪展示のエントリ で書いたように PC6001VX のテープロード速度を遅くするパッチを当てる必要があります。さらに、 BASICローダーとデモ本体部分の3つのパートを別の P6ファイルにしておかないと最初のテープヘッダの「ピー」が鳴らないため時間がズレてしまい、これまたうまくいきません。

NetBSD -current と pkgsrc PC6001VX

えびはらさんによると NetBSD の -current では PC6001VX がうまく動かないそうです。調べたいと思いつつ、現状手元には -current で pkgsrc もビルドできるようなマシンがないので確認できていません。手抜きでいません