XM6i - クロスプラットフォーム X68000/X68030 エミュレータ

このページは(今のところ)本家XM6iのページとは関係なく参考用として作成されています。
誤り等々の指摘は <tsutsui@ceres.dti.ne.jp> または Twitter(@tsutsuii)宛でお願いします。

NetBSD/x68k on XM6i ver 0.30

余計な説明はいいからとにかく手っ取り早く動かしたい人向け手順まとめ
……のつもりでしたが長過ぎですね、すいません orz

必須バイナリ準備

オプションバイナリ

各種設定準備用バイナリ

  • LZH解凍
    .LZH なんて解凍できねーよ、という方は arcdec が手軽でおすすめ
    http://www.ponsoftware.com/archiver/download.htm#arcdec
    インストール不要で実行後自己解凍でできたバイナリアイコンにドラッグアンドドロップするだけ。

  • XM6ユーティリティ
    http://yohkai.no-ip.info/x680x0/XM6.htm#download
    の「xm6_206u.zipのダウンロード」から XM6ユーティリティ をダウンロード。
    状況によってはダウンロードに失敗する場合があるようなのでその場合は何度かリトライ。

  • XM6ユーティリティ実行用DLL
    http://yohkai.no-ip.info/x680x0/XM6.htm#dll
    の「mfc71dll.zipのダウンロード」から実行時に必要なランタイムDLLをダウンロード。

  • GNU utilities for Win32
    http://sourceforge.net/projects/unxutils/
    の「download」から UnxUtils.zip をダウンロード。
    ファイルサイズ切り上げに使う Windows版 dd(1) のみ使用。

  • dd for windows (オプション)
    http://www.chrysocome.net/ddの dd for windows にある http://www.chrysocome.net/downloads/dd-0.6beta3.zip をダウンロード。
    administrator権限がない環境での任意サイズのファイル作成に使用。

    GNU utilities の ddconv=sync をサポートするが /dev/zero の模擬機能がなく、
    dd for windows のほうはその逆なので、やむなく似て非なる2つを使用。

各種バイナリ展開

  • XM6i本体
    ここでは c:\ 直下に展開したとして説明。
    そのまま取り出すと c:\XM6i-0.30\ になるが、そのままだとパスにバージョン番号が含まれていて XM6i本体バージョンアップ時に各種設定の修正が必要になるので c:\XM6i\ に名前変更。

  • IPLROM30.DAT
    X68BIOS3.LZH から IPLROM30.DAT を取り出して c:\XM6i\ に置く。

  • HUMAN302.XDF
    HUMN302I.LZH から HUMAN302.XDF を取り出して c:\XM6i\ に置く。

  • SXWIN315.XDF (オプション)
    SXWN315I.LZH から SXWIN315.XDF を取り出して c:\XM6i\ に置く。

  • XM6ユーティリティ
    xm6_206u.zip から XM6Util.exe を取り出して c:\XM6i\ に置く。

  • XM6ユーティリティ実行用DLL
    mfc71dll.zip から MFC71.dllmsvcr71.dll を取り出して c:\XM6i\ に置く。

  • dd.exe (GNU utilities)
    UnxUtils.zip のzipアーカイブ中の usr/local/wbin 内にある dd.exe を取り出して c:\XM6i\ に置く。

各種バイナリ生成

  • コマンドプロンプト起動
    コマンドラインから実行するコマンドもあるので、「スタート」⇒「プログラム」⇒「アクセサリ」⇒「コマンドプロンプト」を起動して

    C:\Document and Settings\Administrator>cd \XM6i

    して c:\XM6i\ に移動。

  • CGROM.TMP 生成
    XM6Util.exe を起動して
    「CG-ROM(CGROM.TMP)を合成する」
    を押して CGROM.TMP を生成。

  • SCSIINROM.DAT 生成
    HUMAN302.XDF が置かれていることを確認して XM6Util.exe を起動して
    「内蔵SCSI-ROM(SCSIINROM.DAT)を合成する」
    を押して SCSIINROM.DAT を生成。

  • ROM30.DAT (ダミー) 生成
    dd.exeSCSIINROM.DAT が置かれていることを確認して、コマンドプロンプト上で

    C:\XM6i>dd if=SCSIINROM.DAT of=ROM30.DAT bs=128k conv=sync

    としてダミーの ROM30.DAT を生成。 (SCSIINROM.DAT の後ろをパディングして 128KB にしているだけ)

NetBSD用VMフォルダ作成

XM6iではROMファイルのような各種設定で共通のファイルは実行ファイルと同じフォルダに置き、 HDDイメージのような各種設定で個別に使い分けるファイルは設定別のフォルダに置くような設計思想?
  • 上記に基づいて NetBSD用のフォルダを作成。ここでは c:\XM6i\NetBSD\ とする。

NetBSD/x68k 5.1_STABLE スナップショット

5.1リリース版にはインストール中に落ちるバグやFPUエミュレーションのバグがあること、 現状の -current は一部問題あること、5.1_STABLEの公式スナップショットは古くなると消えていくことから 5.1_STABLEの個別スナップショットを用意してあります。

NetBSD/x68k用 イメージ作成および調整

  • HDDイメージ作成
    コマンドプロンプト上で fsutil コマンドを使ってHDDイメージを作成。
    XM6i標準の拡張子は .HDS なのでここでは名前は sd0.hds とする。
    XM6iの制約でイメージサイズ上限は2GBなので2GBで作成。
    NetBSD/x68kインストールで Minimum install を選択すれば 512MBでも大丈夫かも。
    KB/MB/GBなどの単位指定はできないのでその場合は電卓でサイズを計算。

    C:\XM6i\NetBSD>fsutil file createnew sd0.hds 2147483648

    fsutilの実行には administrator 権限が必要なので、難しい場合は dd for Windows を使用する。
    dd-0.6beta3.zip のzipアーカイブ中の dd.exe を取り出して c:\XM6i\NetBSD\ に置く。
    GNU Utilities のものと名前が同じなので注意。

    C:\XM6i\NetBSD>dd if=/dev/zero of=sd0.hds bs=1 seek=2147483647 count=1

    として作成。 bs=1 の分だけ seek=N の数字を -1 するのに注意。

  • MOイメージ作成 (XM6i r3395以降)
    HDDイメージと同様にコマンドプロンプト上で fsutils コマンドを使ってMOイメージを作成。
    XM6i標準の拡張子は .MOS なのでここでは名前は mo.mos とする。
    XM6iの仕様でイメージサイズは実MOと同じにする必要がある。

    C:\XM6i\NetBSD>fsutil file createnew mo.mos 228518400

    dd for windows を使う場合は次の通り。

    C:\XM6i\NetBSD>dd if=/dev/zero of=mo.mos bs=1 seek=228518399 count=1

  • sysinst1.fs 名前変更
    拡張子を .2HC としたほうがXM6iのメニュー選択時に楽なので、
    sysinst1.fssysinst1.2hc
    に名前変更。

  • sysinst2.fs 名前変更とサイズ調整
    XM6iは2HCフロッピーイメージを使う場合にサイズが 1200KB の正規のサイズである必要があるので、 dd.exe を使って拡張子変更とあわせて sysinst2.fs のサイズを調整。
    ここでの dd は GNU Utilities のもの(上記説明では C:\XM6i\ に置いたもの)なので注意。

    C:\XM6i\NetBSD>..\dd if=sysinst2.fs of=sysinst2.2hc bs=1200k conv=sync

XM6i設定

  • XM6i 起動
    XM6i.exe をダブルクリックして起動。

  • VM設定ファイル新規作成
    メインウインドウと設定ファイル選択ウインドウが開くので「新規」を押す。
    開いた「XM6i 新規VM作成」のウインドウで以下を設定。
    • VM名称: NetBSD
    • VMフォルダパス: c:\XM6i\NetBSD
    • 設定ファイルパス: c:\XM6i\NetBSD\NetBSD.xmx ←VMフォルダパスを入れると自動でこうなるはず
    OKを押すと「フォルダ C:\XM6i\NetBSD はすでに存在します。」と警告が出るがさっき作成したからなのでそのまま「はい(Y)」を押して設定ファイル選択ウインドウに戻る。

  • VM設定ファイル設定
    作成した「NetBSD」をクリックして選択した状態で、ボタンの「設定」を押す。
    開いた「XM6iの動作設定」のウインドウで以下を設定。記載のない項目はデフォルトのまま。
    • 基本
      • 機種: X68030 を選択
      • ROMイメージフォルダ: c:\XM6i に設定
    • システム
      • MPU: 68(EC)030 の選択で「MPU を 68EC030 から 68030 に換装」にチェック
      • 速度: システムクロック 25MHz (X68030) を選択
        「MPUのみノーウェイト動作」「仮想マシン全体をノーウェイト動作」はとりあえずチェックしない(後者は実行時切り替え可)
      • メモリ: メインRAMサイズ 12MB (フル実装) を選択して「メモリスイッチを自動更新する」にチェック
    • SCSI
      • ドライブ数: 深く考えず 7 に設定
      • scsi_file_0: 上記で作成した c:\XM6i\NetBSD\sd0.hds を設定
      • scsi_file_1〜4: 複数HDDイメージを使用する場合はそれぞれ作成したイメージファイルをフルパスで設定
      上記設定だと ID=5 が MOになる。ID=6 は CD-ROM で固定割り当て。

    上記が設定できたらOKを押す。

  • XM6i.ini
    VMファイルの置かれるフォルダなどXM6i自体の設定は %HOME%xm6i.ini として置かれるので、XM6iインストールフォルダの名前変更などの場合はそちらを編集。

NetBSD/x68k 起動とインストール

  • VM起動
    作成したVMの「NetBSD」を選択した状態で「実行」を押すとXM6iが起動。
    「ROM30.DATの内容が正しくありません。続けますか?」に「はい (Y)」。
    「CGROMの内容がX680x0と異なっています。続けますか?」に「はい (Y)」。
    初回起動時のみ「SRAMファイルを作成しました。」が出るので「OK」。

  • インストールフロッピー1枚目挿入
    メニューバーの「FD0」⇒「開く」で sysinst1.2hc を選択して挿入。
    そのまま読み込み開始して起動するはず。
    よくわからん状態になったらメニューバーの「ファイル」⇒「リセット」で。

  • インストールフロッピー2枚目挿入
    Please remove disk 1, insert disk 2, and press return...
    と出たら再度メニューバーの「FD0」⇒「開く」で sysinst2.2hc を選択して挿入。
    メッセージと異なり、自動イジェクトかつ自動挿入検知なのでイジェクトもリターンも不要。

    2枚目の読み込みが終わるとそのままインストールカーネルが起動してメッセージ表示後に sysinst が起動。

  • sysinst
    インストールはCD-ROMから行うので、インストール開始前にメニューバーの「CD-ROM」⇒「開く」で x68kcd.iso を選択して挿入しておく。

    sysinstのインストール手順はどの機種でもほぼ共通なので、
    NetBSDガイド http://www.netbsd.org/docs/guide/en/chap-exinst.html#exinst-starting
    NetBSD/arc on GXemul まとめ http://togetter.com/li/64084 などを参照。
    FDISK設定など機種固有部分は読み替え要。

    フルインストールは N時間単位で待つ必要あり。

  • HDD起動設定
    sysinstインストール終了後、sysinst終了してshellプロンプト上で以下を実行してPluto-XによるHDD起動設定

    # memswitch -w boot.device=ROM; memswitch -w boot.romaddr=0xeac000

    詳細はXM6iマニュアル参照。

    ちなみに SCSIINROM.DAT から作った ROM30.DAT だと NetBSD/x68k はHDD起動しないものの Human68k はHDD起動するっぽい。

Human68kインストール

エミュレータが起動さえすればベースのXM6と同じなので
http://www.mmyh.jp/wp/x68kindex/xm6setup3
あたりを参照。 VM設定はHuman68k用フォルダを作って個別HDDイメージファイルおよびSRAM設定を用意した方がいいかも?

XM6i上 NetBSD/x68k⇔ホスト間 ファイル交換

だんだんめんどくさくなってきたので気が向いたら後で追記予定。