俺と DOS とフロッピーイメージ

で、最近思い出したように DOS 方面をちょろちょろいじってたり。98 方面のエミュレータIBM 方面のエミュレータ間でフロッピーディスクのイメージファイルを経由してデータ交換したりとか、もう21世紀も15年ぐらい経ってるのに何やってんのかと自分でも思うのです。

ということで DOS フォーマット済の FD イメージ作成ツールを作ったりしてました。
(2015-02-19追記:すこし更新)
(2015-03-22追記:さらに微妙に更新)

blankimg_20150216.zip
blankimg_20150218.zip
blankimg_20150322.zip

自作する必要は実のところほとんどないのですが(WinImage や mformat を始めとして、その手のツールは結構ある)、ライセンス的に後腐れがなくて、IBM PC と PC-98x1 どっちの機種(のエミュ)に突っ込んでも HDD 起動してくれるディスクイメージがほしかったので。
(ただし PC-98 は SASI/IDE の HDD のみ検出。各種エミュを別にすれば実機では手持ちの PC-9821Xc13 でしか起動確認していない。IDE じゃないガチ SASI 機で本当に HDD 起動できるのか…?)

8086tiny:極小 PC エミュレータ

まあこの日記(?)的には例の「MS-DOS ソースコード公開」ネタをやっとくべきかもしれないけど敢えて外していくスタイル(ほんとはまだ落としただけでソース確認してない)。
まあそんなわけで 8086tiny です。例によって例の DOS 系掲示板で知ったのですが興味深いところがあります。

  • 驚きの短さ。本体は C ソース1本で 750 行程度(もっとも、エミュレーションには専用 BIOS も必要であり、こちらはアセンブラで 3850 行程度。PC/XT 相当機をエミュレーションしており、SDL 経由の CGA/Hercules グラフィックやビープ音出力までサポートしている。
    しかし、この短さには若干のトリックが…(下項参照)
  • CPU エミュレーションに必要なデータがゲスト空間側にもおいてある。レジスタエイリアスがゲスト空間上にメモリマップされていたり、命令デコード用のテーブルが BIOS 上にハードコードされていたりする。
  • MIT ライセンス。GPL よりは気楽に再利用できる…ただ、↑のような技術的仕様になっているので IBM PC の枠を外れた運用は面倒かもしれない。
  • テキストモードの出力はホストのコンソールに出力される。Windowsコマンドプロンプトエスケープシーケンスがサポートされないので事実上ただのダム端末であり、フルスクリーンのテキストアプリは使い物にならない。

エミュレータとしての完成度、という意味合いで言うとそれほど利用価値は高くないかもしれません(レガシー IBM PC エミュレータとしては DOSBox という決定版がありますし…)が、実装に関する技術的側面のほうに面白さがある、というのが個人的なポイント。

で、フォーラムに上がってた Win32 版のバイナリ使って付属のディスク起動してみた。しかしこのゲーム(ALLEYCAT)、どうやって終了するのかよくわからない…わからないのでタスクマネージャで 8086tiny を落としている。

おまけ:ノリで訳してみたドキュメント 8086tiny_jadoc_20140323.zip


近況的な何か

まあ XP ぶちこんであるノートの Security Essentials が↑のようなことをお知らせしてくれる昨今ですが皆様いかがお過ごしですか。
実際どうしたもんかと思う。どのみち以前買っておいた Windows 8 のアップグレード入れることになるのですがなんとなーく気が乗らない。最大メモリ 3.4G だしなあ(昔の C2D ノートなのでメモリ 4G 積んでも 3.4G しか認識しない)。かといって Linux に腰をすえるほどの根性もないし(やはりエロゲは Windows でないと…)。いまどきのマシン買う経済力(+物欲)もないので Windows7 あたりの突っ込んである再生 PC とか適当に見繕っとくか…と思って秋葉原をうろついたのですがなぜか Vista Business の入ったノート PC が 6000 円ぐらいだったのでうっかり買ってしまった。ちなみに何がうっかりかというと、内蔵 HDD が 40M のモデルだったこと。この HDD サイズのモデルだけ SATA じゃなくて IDE(LIF) 接続なので HDD 増設面での拡張性がほぼ詰んでいる。基板には SATA 接続用コネクタもあるっぽいんだけど接続ケーブルがないのよね……つまりこのスペックで満足するしかねえ的状態。まあ HDD 容量以外の不満はそれほどなかったり。ノート PC ってこんなに軽かったんだね!いままで持ち運ぶと腰とか肩とかにひどい負荷がかかるものばかりだったので新鮮です。今までつかってたやつの3倍ぐらいバッテリ持つし!(今までがひどすぎただけである。1時間半も持たなかったし…)

VirtualBox 4.3 で仮想マシンの動画撮影ができるようになったので…

せっかくだから eComStationデモ CD の動画を撮ってみた。

仮想マシンの設定の「ディスプレイ」のとこにビデオキャプチャーのタブが追加されている。有効化しておくと VM 開始時から録画が始まる(途中から録画開始/途中で録画停止したい場合はホットキーの設定が必要)。

フォーマットは webm なんすね…あと音は録れないみたい。無念。
とりあえず設定できる範囲の最高画質にしてみた。ダウンロードして webm の見れる適当なプレーヤー(firefox とかのブラウザでもおk)で開いてください。

eCS22b3demo_on_VB430_20131031.webm (100Mぐらい)

ちなみに eCS デモ CD を VirtualBox で動かすときの(割とどうでもいいような)メモ:

  • VT-xとかそのへんを有効にしないと起動しない(ちなみに VirtualPC ではそのへんの支援は不要。むしろ使わないように設定したほうが安定する気が)。まあマニュアルに書いてある通りですけどね…
  • そのまま起動するとなんか CPU 負荷が高いままになる。eCS 起動オプションで ACPI を有効にするといいみたい。仮想マシンのシステム設定で IOAPIC を有効にする必要があるチップセットは PIIX3 のままのほうがいいみたい。ためしに ICH6 にするとネットワークが何故か使えなくなったりとか変な不具合が出た)

  • 以前のバージョンの VBox だと、ネットワークアダプタが Am79C973 だとアダプタ検出時にハングアップしてしまうことがあったが 4.3.0 では問題ないようだ

  • IDE (ATA) ドライバは danis506 より ibm1s506 のほうが安定している。んー、何が違うのか…(ちなみに VMWare Server だだかのマニュアルにも「danis506 じゃなくて ibm1s506 を使え」的なことが書かれていたのだった)
  • 日本語キー対応してなくても泣かない
  • 音が出なくても泣かない(オーディオ設定で SB16 以外のデバイス選べば UNIAUD ドライバは入るんだけど音が出ない。uniaud ダイレクトインターフェース使えるプレーヤーなら音も出せることはむかし確認したんだけどね…MMOS2 側になんか問題があるのだろうか…)

二次元限定イベント(ハロウィンともいう)

というか、だいたい女の子ばっかりしか出てこないマンガやアニメの中というか。
街中でコスプレっぽい格好したり人に菓子をせびったりするというお戯れが許されるのは、日本だとそのへんの人(キャラ)たちだけなんやな…