PC-98 エミュレータ事情 2018
◆
エンジニア歴30年
私事ですが(と言うか、このサイトの内容は基本的に全てそうですが)、2018年04月、エンジニア歴30年を迎えました。 年齢は52歳になり、「これからあと何年この業界で仕事できるだろう」と考えた時、自分がどれだけのことを行ったのかが何も残らないのは寂しいなと感じ始めていました。
職場の若い人たちは20代、彼らが生まれる前からこの業界で仕事しているという自負が私にはあります。 昨日・今日プログラミングを覚えた人たちとは「知識の深さが違う」とは思っているものの、 その一方で、仕事で直接は必要ないような古い技術は、段々記憶が薄れていることも事実です。 忘れ去る前にきちんと記録に残さなければならないのではという気持ちが芽生え、そのことが、この仕事に就いた頃のことを思い返すきっかけにもなり、 そして「これまで培った技術を形あるものとして今後に残したい」と心の中で強く感じるようになりました。
◆
再びエミュレータにのめり込む
私の場合、アプリケーション選びをする時、最初にどれを使うかはそれなりに時間をかけて慎重に選ぶのですが、 同じ機能のものを複数使い分けて、それぞれの長所を利用するというようなことはほとんどしてきませんでした。
しかし、エミュレータに関してはそうも言ってられなくなり、使い慣れたAnex86以外のものも、可能な限り使ってみることにしました。 ほとんどがフリーウェアですし、ディスク容量もそんなに必要としません。 標準的な仮想FDD・HDDの形式を使えば特にコンバーターなどを利用しなくても仮想データを使い回せます。
そうして、何種類かのエミュレータを試しているうちに、T98-NEXTの方が若干動きがいいことがわかり、更にその上を行くものを見つけました。 それが「Neko Project」だったのです。
◆
Neko Project最新版の動作に感動
Neko Projectの最新を使ってみたところ、Anex86で問題だった現象がほぼ完璧にクリアされていました。
対象プログラム
Anex86 2.77
Neko Project 21/W ver0.86 rev.45
Disk-BASIC
起動せず
動作OK、問題なし
N88BASIC Ver.5以降
強制終了
動作OK、問題なし
DUT(自作ツール)
起動時ハングアップ
SCSIの詳細情報が表示されない以外問題なし
MDUMP(自作ツール)
拡張メモリ使用時ハングアップ
動作OK、問題なし
少し技術的な話になりますが、PC-98・MS-DOS・C言語でプログラムを作る場合、主に以下の4つを使える訳ですが、
@C言語標準関数
ADOSのファンクションコール
BBIOSコール
CポートI/O
下に行く程、汎用性が低くなります。
@のみで作ったものは、他のマシン・OSでも、ソース互換が期待でき、それに合ったコンパイラでビルドすれば動く可能性があります。 それだけ汎用性が高いソースと言えます。
Aを使えばOS依存、Bを使えば機種依存になりますが、新OS・新機種を作る際、 これまでのOSや機種で動いていたアプリが使えないというリスクは相当高いものなので余程の理由がない限り互換性を保つケースが多いのが実状です。 そのため、@〜Bまでで作ったものは、機種の変更・OSのバージョンアップなどで乱暴な仕様変更が行われない限りそのまま実行できる可能性が高くなります。 プログラマとしては、将来起こり得るリスクをこれくらいまでに抑えたいところです。
Cを含んでしまうと、高度に機種依存となり、新機種が出る度に動作確認を強いられます。 そう言ったリスクを承知の上で尚実現したい機能、私の場合、作品数は少ないのですが、自慢の力作は大抵こうなっています。 それらがNeko Projectに出会う前はことごとく動かなかったのですが・・・
四半世紀前は将来エミュレータ上で動かすなどとは夢にも思わなかった自作アプリですが、当時から感じていた「機種が変われば動かないかも知れない」という危惧は、 エミュレータという名の「新機種」にもそのまま当てはまったのでした。
エミュレータで起きる問題のほとんどはBCに起因しています。 BIOSコールもその内部処理ではポートI/Oを使用するため、もしかしたら、この2つを厳密に区別する必要はないのかも知れません。
ハードウェアを直接制御する命令「ポートI/O」の部分を、如何に実機と同じにできるかがエミュレータの課題と言ってもいいのでしょう。
PC-98エミュレータの多くが開発を停止した中、Neko Projectはまだバージョンアップを続けており、私が望んでいた機能の多くが実現されるレベルに達して来ていました。
いろいろ話しが飛びましたが、私が声を大にして言いたいのは、次のことです。
※パソコンのボリュームを上げることはできませんので、フォントを大にしておきます。
実機の場合、ある機種でサポートされなくなった機能は、通常その後継機種以降もずっと引き継がれることになる(つまりは消滅する)のですが、 エミュレータの場合は現時点では実現しない機能も開発が進むにつれて対応されていく可能性があり、これがエミュレータの面白いところだと思います。 その陰には
開発に携わる人の多大な努力がある
のは想像に難くありません。尊敬と感謝の気持ちを持ちつつ、今後の更なる改善に期待しています。
戻る