Advertisement
Guest User

Untitled

a guest
Aug 10th, 2015
2,063
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 65.30 KB | None | 0 0
  1. クロスプラットフォーム X68000/X68030 エミュレータ
  2.  
  3. XM6i version 0.50
  4.  
  5. Copyright (C) 2006-2015 isaki, Y.Sugahara
  6.  
  7.  
  8.  
  9. ● はじめに
  10.  
  11. XM6i は、言わずとしれた PI.氏による名作 X68000 エミュレータ XM6 と
  12. GIMONS 氏による XM6 TypeG をベースに、私 isaki が適当に改造したり移植
  13. したりしたものです。
  14.  
  15. もはや XM6 VM を利用した別物といったほうが近いです。
  16.  
  17.  
  18. ● XM6i の特徴など
  19.  
  20. XM6i の特徴は大きく分けて2つあります。
  21.  
  22. まず一つ目は XM6 および XM6 TypeG の移植です。XM6 および TypeG は優れた
  23. エミュレーションで定評のある Windows 用のアプリケーションです。XM6 および
  24. XM6 TypeG のもつ高い志はなるべく損なわずに他の環境でも広く動作させたいと
  25. 思っています (その実力があるかどうかはともかく)。
  26.  
  27. もう一つは NetBSD/x68k を動かして遊ぶことです。そのため実在しない 1GB の
  28. 拡張メモリのエミュレーションなども行っています。
  29.  
  30. なお XM6i は、XM6 VM を利用し、XM6 を頭に冠した名前にしてはいますが、
  31. 原作者であるPI.氏とは直接関係はありませんので、XM6i について
  32. 原作者に問い合わせたりはしないようにお願いします。
  33.  
  34.  
  35. ● ver 0.50 の主なトピック
  36.  
  37. o Nereid エミュレーションを独自実装から TypeG 実装に更新。
  38. o MAC アドレス自動生成モードをサポート。
  39. o フレームワークを wxWidgets 3.0 に更新。
  40. o (Windows 版のみ) ランチャ設定ファイル(xm6i.ini) のパスを変更。
  41. o キーの割り当てをいくつか改善。
  42. o ソフトウェアキーボードに LED 表示を実装。配色を変更。
  43. o ver 0.44 以降 CD ブートできなくなっていた問題を修正。
  44.  
  45. 詳細は xm6i_changes.txt を参照してください。
  46.  
  47.  
  48. ● ver 0.45 以前から ver 0.50 以降に更新する場合の注意!!
  49.  
  50. Windows 版に限り、ver 0.45 以前と ver 0.50 以降でランチャ設定ファイルの
  51. パスが変更になっています。このため、ver 0.50 用のパスにランチャ設定
  52. ファイルがなく ver 0.45 以前のパスにランチャ設定ファイルがある場合は、
  53. ランチャ起動時に旧パスのファイルを新パスにコピーするか確認されますので、
  54. 通常は以前のランチャ設定を引き継ぐため「はい」を選択してください。
  55.  
  56. ver 0.45 以前のランチャ設定ファイルはたぶん環境変数 HOME のフォルダの
  57. xm6i.ini、ver 0.50 以降の設定ファイルは CSIDL_APPDATA フォルダ
  58. (Vista 以降? だと C:\Users\ユーザ名\AppData\Roaming) の xm6i.ini に
  59. なると思います。
  60.  
  61. なお、新パスは XM6i ランチャメニューの「ファイル > 設定ファイルパスを
  62. 表示」でいつでも確認することが出来ます。
  63.  
  64. UNIX 版、Mac OS X 版ではこの問題はありません。
  65.  
  66.  
  67. ● 動作環境
  68.  
  69. 以下の環境で動作します。
  70.  
  71. Windows (32bit)
  72. Windows のことよく知らないので、動作範囲や要件は知りません。
  73. Vista、7 で起動することは確認しています。
  74. DirectX とかはいらないと思います。
  75.  
  76. 従来必要だった mingwm10.dll は必要ありません。
  77.  
  78. CPU については XM6 オリジナル版と同様に MMX 拡張および CMOV 命令を
  79. サポートしている必要があります (今時このエミュレータが動かせる
  80. スペックの CPU ならまずサポートしているはずです)。
  81. 以下 XM6 ver 2.05 付属文書より引用します。
  82.  
  83. --------------------------------------------------------------
  84. Intel ...... PentiumII,Celeron以降 (P5, P54C, P55Cなどは不可)
  85. AMD ........ Athlon,Duron以降 (K6シリーズは不可)
  86. VIA ........ C3-Nehemiah or C7 (C3-Ezra以前は不可)
  87. Transmeta .. Crusoe,Efficeon (全てOK)
  88. --------------------------------------------------------------
  89.  
  90. イーサネットエミュレーションを使ってホストと通信するには
  91. OpenVPN をインストールして出来る TAP-Win32 デバイスが必要です。
  92.  
  93. Mac OS X
  94. Mac OS X 10.8 で動作確認しています。他のバージョンについては
  95. 分かりません。
  96.  
  97. NetBSD/i386
  98. NetBSD/i386 6.1.4 + pkgsrc-2014Q1 でビルドしていますので、
  99. 共有ライブラリが解決できる程度に近い環境なら動作すると思います。
  100. たぶん pkgsrc/x11/gtk2+ があればいいと思います (wxGTK28 は不要です)。
  101. CPU については MMX 拡張および CMOV 命令をサポートしている
  102. 必要があります。Windows 版と同様の制約です。
  103.  
  104. NetBSD/amd64
  105. NetBSD/amd64 6.1.4 + pkgsrc-2014Q2 でビルドしていますので、
  106. 共有ライブラリが解決できる程度に近い環境なら動作すると思います。
  107. たぶん pkgsrc/x11/gtk2+ があればいいと思います (wxGTK28 は不要です)。
  108. CPU についての制約はたぶんありません。
  109.  
  110.  
  111. ● インストール方法
  112.  
  113. インストールは不要です。XM6i のアーカイブを適当なところに展開して
  114. 実行してください。
  115.  
  116.  
  117. ● アンインストール方法
  118.  
  119. 展開したアーカイブ、自分が用意した ROM ファイル、自分が作成した仮想
  120. マシンフォルダなどを削除してください。
  121.  
  122. ランチャ設定ファイルとしてプラットフォームごとに固有のパスにファイル
  123. を作成しますので、不要なら削除してください。設定ファイルのパスは
  124. ランチャのメニュー「ファイル > 設定ファイルパスを表示」で確認できます。
  125.  
  126.  
  127. ● 起動方法
  128.  
  129. XM6i.exe を起動すると、まずランチャが起動します。XM6i では設定ファイル
  130. を複数持てるためランチャを用意しています。仮想マシンの設定は主にこの
  131. ランチャ上で行います。
  132.  
  133. +-----------------------------------------------+
  134. | 新規 編集 実行 | 終了 |
  135. | |
  136. | +--------------------+ |
  137. | | 仮想マシン一覧 | |
  138. | | | |
  139. | | | |
  140. | +--------------------+ |
  141. +-----------------------------------------------+
  142.  
  143. 新規
  144. 仮想マシンを新規に作成します。
  145.  
  146. 新規 VM 作成ダイアログが出ますので以下の値を指定します。
  147. 「VM 名称」は仮想マシンの名称で、ランチャ上で仮想マシン同士を
  148. 区別するためのものです。
  149. 「VM フォルダ」は仮想マシンを置くフォルダパスです。
  150. XM6i ver 0.30 以上では 1フォルダにつき 1つの仮想マシンの構成を
  151. 推奨します。フォルダはなければ作成します。
  152. 「VM 設定」は仮想マシン設定ファイルのパスです。拡張子は .xmx
  153. を推奨します。
  154. 「OK」ボタンを押すと仮想マシン設定ファイルがデフォルト状態で
  155. 作成されますので、適当に編集してください。
  156. VM 名称は仮想マシン一覧の欄にてポップアップメニューから変更
  157. することができます。
  158.  
  159. 設定
  160. 選択中の仮想マシンを設定します。
  161. 後述の「仮想マシンの設定」の項を参照してください。
  162.  
  163. 実行
  164. 現在選択中の仮想マシンを起動します。
  165.  
  166. 終了
  167. XM6i を終了します。
  168.  
  169.  
  170. ● ディレクトリ構成
  171.  
  172. ここでは XM6i (ver 0.30 以上) の仮想マシン等の設定ファイル、フォルダ
  173. の構成方法について記します。この通りでなければならないというわけでは
  174. ありませんので、参考にしてください。
  175.  
  176. 1) 仮想マシンを1つしか作らない場合
  177.  
  178. XM6i.exe を展開したフォルダを仮想マシンフォルダにしてしまうと楽だと
  179. 思います。ただし配布ファイルを展開した状態ではパス名にバージョンが
  180. 含まれてしまうので、これは変更しておいたほうがよいと思います。
  181.  
  182. 展開したパスが /path/to/XM6i-x.xx である場合
  183. (Windows の場合 C:\path\to\XM6i-x.xx と読み替えてください)、
  184. フォルダ名を /path/to/XM6i/ のように変更します。
  185.  
  186. 必要な ROM ファイルを /path/to/XM6i/ に置き、ランチャの
  187. 「VM フォルダ」にはこのフォルダ /path/to/XM6i/ を指定します。
  188. また設定ダイアログの「ROM イメージフォルダ」は空のままにします。
  189. こうすることで、実行ファイル、仮想マシン設定ファイル、ROM ファイル、
  190. SRAM ファイルなど (ランチャ設定ファイルを除く) すべてのファイルが
  191. このフォルダに集約できます。
  192.  
  193. + XM6i/
  194. - xm6i.exe
  195. - 仮想マシン設定ファイル (.xmx)
  196. - ROM ファイル (*.DAT)
  197. - SRAM.DAT
  198.  
  199. 2) 仮想マシンを複数作る場合
  200.  
  201. XM6i.exe を展開したフォルダに、必要な ROM ファイルを置きます。
  202. ROM ファイルは名前によって区別されているため、機種の異なる仮想
  203. マシン同士でも ROM フォルダを共有することが出来ます。
  204.  
  205. 一方、仮想マシンファイルと SRAM ファイルは仮想マシンごとに持つ
  206. 必要があります。そこで (どこでもよいのですが) ROM フォルダに
  207. 個別の仮想マシンフォルダを作成することにします。以下のような
  208. 感じです。
  209. この場合、各仮想マシンの「ROM イメージフォルダ」には ".."
  210. (自分の親フォルダ) を指定します。
  211.  
  212. + XM6i/
  213. - xm6i.exe
  214. - ROM ファイル (*.DAT)
  215. + 仮想マシン1/
  216. - 仮想マシン1設定ファイル (.xmx)
  217. - SRAM.DAT
  218. + 仮想マシン2/
  219. - 仮想マシン2設定ファイル (.xmx)
  220. - SRAM.DAT
  221.  
  222.  
  223. ● ROM ファイル
  224.  
  225. XM6i を起動するためにはターゲットとなる X68000/X68030 の ROM ファイル
  226. が必要です。必要な ROM ファイルはエミュレーションする機種によって
  227. それぞれ異なります。
  228.  
  229. EXPERT モードでは以下の2つのファイルが必要です。
  230. IPLROM.DAT (131072 バイト) … X68000 の $FE0000..$FFFFFF
  231. CGROM.DAT (131072 バイト) … X680x0 の $F00000..$FBFFFF
  232.  
  233. SUPER モードでは以下の3つのファイルが必要です。
  234. IPLROM.DAT (131072 バイト) … X68000 の $FE0000..$FFFFFF
  235. SCSIINROM.DAT ( 8192 バイト) … X68000 SUPER の $FC0000..$FC1FFF
  236. CGROM.DAT (131072 バイト) … X680x0 の $F00000..$FBFFFF
  237.  
  238. X68030 モードでは以下のファイルが必要です。
  239. IPLROM30.DAT (131072 バイト) … X68030 の $FE0000..$FFFFFF
  240. ROM30.DAT (131072 バイト) … X68030 の $FC0000..$FDFFFF
  241. CGROM30.DAT (131072 バイト) … X68030 の $F00000..$FBFFFF
  242.  
  243. IPLROM.DAT はバージョン 1.00 (87/05/07) が使用可能です。
  244. X68000 初代 (初期ロット 87/03/18 を除く)、ACE、PRO、EXPERT、SUPER の
  245. ものが使用できます。XM6 と同様です。
  246.  
  247. X68030 モードでは ROM30.DAT は無くても (その機能が使えないだけで)
  248. 起動できます。ROM30.DAT が X68030 から取得したのものと異なると判断した
  249. 場合は警告メッセージを表示します (将来の動作は未定です)。
  250.  
  251. CGROM.DAT は、XM6 と同様、X68000 または X68030 から取得したものでないと
  252. 判断した場合は警告メッセージを表示します。
  253. CGROM.DAT が見つからない場合は CGROM.TMP を使用します。CGROM.TMP について
  254. も CGROM.DAT と同様のチェックを行いますが、Windows 内蔵フォントなどから
  255. 生成した CGROM ファイルを使う場合はファイル名を CGROM.TMP にして使うこと
  256. を推奨します。
  257.  
  258. また XM6i ver 0.44 以降では、X68030 の CGROM を CGROM30.DAT という名前で
  259. 区別します。X68030 の CGROM は X68000 シリーズの CGROM とは内容が異なる
  260. ためです。具体的には X68000 シリーズの 6x12 フォントは IPLROM にありますが
  261. X68030 の 6x12 フォントは CGROM にあるため、X68030 モード(IPLROM30.DAT) で
  262. X68000 の CGROM.DAT を併用すると 6x12 フォントの文字が表示できないという
  263. 問題が起きます。Human68k のソフトウェアキーボードや SX-Window がそれに
  264. あたります。
  265.  
  266. XM6i ver 0.44 以降では、X68030 モードなら CGROM30.DAT というファイルが
  267. あれば 6x12 フォントの存在をチェックし、不正と判断すれば警告ダイアログを
  268. 出します。過去との互換性のため CGROM.DAT という名前であれば 6x12 フォント
  269. の有無はチェックしません。
  270.  
  271. NetBSD/x68k 起動支援モードについては後述の記事を参照してください。
  272.  
  273.  
  274. ● SRAM ファイル
  275.  
  276. SRAM ファイルは SRAM の内容を保持するために使用します。仮想マシン設定
  277. ファイルと同じフォルダの SRAM.DAT という名前で自動的に作成されます。
  278. 名前やパスの変更は出来ません。
  279.  
  280. SRAM ファイルがなく自動的に作成した場合や、SRAM ファイルがあっても内容が
  281. 破壊されている場合は (実機では SRAM 用の内蔵バッテリが切れて自力で交換
  282. した直後の状態に近いと言えるかも知れません)、IPL ROM の働きによって
  283. データが初期化されます。この初期化によって、本来、SRAM スイッチのメイン
  284. RAM サイズ ($ED0008.L) は 1MB (X68030 なら 4MB) に初期化されますが、
  285. 設定ダイアログの「システム > メモリ > メモリスイッチを自動更新する」に
  286. チェックが入っている場合 (デフォルト) は XM6i の越権行為により
  287. 「システム > メモリ > メイン RAM サイズ」で設定した容量が再設定されます。
  288. XM6 と同じ動作です。
  289.  
  290.  
  291. ● コマンドラインオプション
  292.  
  293. xm6i.exe [<options>] [<floppy1> [<floppy2>]]
  294.  
  295. 本家 XM6 と同様にファイル名2つまでを引数にとります。<floppy1>、<floppy2>
  296. はいずれもフロッピーディスクイメージを指定しますが、MOイメージを指定する
  297. ことも可能です。CD イメージには対応していません。これは XM6 と同じ制約です。
  298.  
  299. -c <configfile>
  300. 起動する仮想マシンの .xmx ファイルを直接指定することが出来ます。
  301. -c オプションにディレクトリが指定された場合、そのディレクトリ
  302. 内に .xmx ファイルが1つだけ存在していれば、その .xmx ファイルが
  303. 指定されたものとみなして処理を進めます。ディレクトリ中に .xmx
  304. ファイルがないか2つ以上ある場合は、ディレクトリ指定はエラーに
  305. なります。
  306.  
  307. -e <configfile>
  308. 指定の仮想マシンファイル(.xmx) の設定ダイアログを直接開くことが
  309. 出来ます。「OK」を押すと設定を保存して終了、「キャンセル」を押す
  310. と設定を保存せずに終了します。<configfile> にディレクトリを指定した
  311. 場合の動作は -c と同様です。
  312.  
  313. --disable-sound
  314. サウンドオフの状態で起動します。起動時の初期値なだけなので、
  315. 起動後にメニューからサウンドオンにすることは可能です。
  316. NetBSD 版でのみ有効です。それ以外ではこのオプションは何もしません。
  317.  
  318. -s <n>, --stretch=<n>
  319. 画面のストレッチを変更して起動します。
  320. n = 0 なら等倍、n = 1 なら 0.5倍、n = 2 なら 1.5倍です。
  321. 値と倍率の組み合わせは将来のバージョンで変わるかもしれません。
  322. 起動時の初期値なので、起動後にメニューから変更することは可能です。
  323.  
  324. これ以外にもオプションはありますが、デバッグ用とかです。
  325.  
  326. 起動後はカレントフォルダを仮想マシンフォルダに移して実行します。
  327. ただし引数に指定する <floppy1>、<floppy2> は起動直後フォルダ変更前に
  328. 処理するため、プロセス起動時点のカレントフォルダからのパスで指定して
  329. ください。
  330.  
  331.  
  332. ● 仮想マシンの設定
  333.  
  334. ランチャの設定ダイアログ、およびメニューの「オプション」ダイアログ (以下
  335. まとめて「設定ダイアログ」と呼びます) は、XM6 および XM6 TypeG の
  336. オプション設定ダイアログを一部踏襲しています。
  337.  
  338. XM6、XM6 TypeG のオプション設定ダイアログと異なる部分だけ説明します。
  339.  
  340. 基本 > 仮想マシンの場所
  341. 仮想マシンフォルダと設定ファイルのパスを表示しています。
  342. 読みにくいとかいろいろ問題があることは分かっています。_o_
  343.  
  344. 基本 > 機種
  345. 機種を選択します。EXPERT、SUPER、X68030 が選択できます。
  346. 今のところ EXPERT と SUPER の違いは SCSI 内蔵かどうかであって
  347. 正確ではありませんが、つっこまないでください。
  348. 今のところ XM6 にある SCSI 外付は選択できません。
  349.  
  350. 基本 > ROM イメージフォルダ
  351. XM6i では ROM ファイルの存在するフォルダを指定することが
  352. できます。デフォルトは空 (設定ファイルと同じフォルダ) です。
  353. なお ROM イメージファイルのファイル名は機種などによって
  354. 自動的に決定します。ここで選ぶのはフォルダだけです。
  355.  
  356. フォルダパスは、相対パスを入力するとこの仮想マシンフォルダからの
  357. 相対パスになります。
  358.  
  359. システム > MPU > MPU を 68EC030 から 68030 に換装
  360. 機種が X68030 の場合に MPU を標準の 68EC030 から MMU 付きの
  361. 68030 に換装します。NetBSD/x68k を動作させる場合はチェックを
  362. 入れてください。Human68k で使用する場合は不要です。
  363.  
  364. システム > MPU > FPU ソケットに 68881 を装着
  365. 機種が X68030 の場合に FPU として 68881 を装着します。デフォルト
  366. はオフです。
  367.  
  368. システム > 速度 > システムクロック
  369. システムクロック (というか MPU クロック) を 10.0MHz から 50.0MHz
  370. の範囲で 0.1MHz 単位で指定することが出来ます。
  371. 68000/50MHz など現実的でない値を指定することも出来ますが、その
  372. 場合の挙動については検証していませんし、するつもりもありません。
  373. 現実的な組み合わせにおいて、実機と異なる点があれば報告頂けると
  374. 助かります。
  375.  
  376. システム > 速度 > MPUのみノーウェイト動作
  377. 未実装です。
  378.  
  379. システム > 速度 > 仮想マシン全体をノーウェイト動作
  380. 仮想マシン全体を仮想時間を無視して目一杯高速動作させます。
  381.  
  382. ジョイスティック > キーボードによるエミュレーション
  383. キーボードの十字キー入力をジョイスティックポート1 からの入力
  384. にも見せかけます。将来どうなるかは保証しません。
  385.  
  386. SASI、SxSI、SCSI
  387. ver 0.31 以降、XM6 とほぼ同等の UI を復元しています。
  388. 右クリックでリストから削除することが出来ます。
  389.  
  390. ポート > RS-232C(シリアルポート) > ポート
  391. RS-232C(シリアルポート)のホストドライバを指定します。
  392. NetBSD、Linux 版は tty を選択し、シリアルポートデバイスのパスを
  393. 指定します (/dev/tty00 など)。
  394. Windows 版は COM ポートを選択します。
  395. Windows 版以外であれば、TCP プロキシを選択することも可能です。
  396. XM6i が指定の TCP ポートで待ち受けますので、telnet 等で接続して
  397. ください。
  398. 詳細については後述します。
  399.  
  400. ポート > RS-232C(シリアルポート) > 受信ログ
  401. 受信ログファイルを指定します。相対パスにするとこの仮想マシン
  402. ディレクトリを起点にします。
  403.  
  404. Nereid
  405. Nereid 拡張ボードについての設定です。
  406.  
  407. Nereid > Nereid 拡張ボードを使用する
  408. チェックをすると Nereid 拡張ボードエミュレーションを使用します。
  409. ただし後述するようにとてもエミュレーションできているとは言い難い
  410. レベルですので、そこは理解した上で使用してください。
  411.  
  412. Nereid > ボードの設定
  413. Nereid 拡張ボード上の DIP SW 5、6、8 の状態をエミュレーション
  414. できます。ロットによって何か違いがあればごめんなさい。
  415.  
  416. Nereid > MACアドレス
  417. Nereid イーサネットデバイスの MAC アドレスを指定します。
  418. 自動設定と手動設定が選択出来ます。
  419.  
  420. 手動設定の場合、MAC アドレスは 12:34:56:78:9A:BC のようにコロン
  421. 区切り16進数形式で指定してください。今のところエラー処理が緩く、
  422. 入力文字列が MAC アドレスとして認識できない場合はデフォルト値の
  423. 02:00:00:11:22:33 になります。
  424.  
  425. また、手動設定の場合 MAC アドレスは既存のホスト、あるいは XM6i
  426. 同士で衝突が起きないように適切に設定してください。XM6i は指定
  427. された MAC アドレスの妥当性を判断しません。
  428. なお、MAC アドレスの第一オクテットの bit0、bit1 にはそれぞれ
  429. ユニキャスト/マルチキャスト、グローバル/ローカルの意味があります
  430. ので正しく設定してください。具体的にはユニキャストにしなければ
  431. ならず(bit0 = %0)、ローカルアドレスを使うほうがいいと思うので
  432. (bit1 = %1)、第一オクテットは $02 とかにしてくのがいいと思います。
  433.  
  434. Nereid > ホストドライバ
  435. Nereid イーサネットのホストドライバを指定します。
  436. NetBSD 版では tap(4) デバイスを使用して、Windows 版では TAP-Win32
  437. デバイスを使用して、パケットの送受信が行えます。
  438. Mac OS X 版は未対応です。
  439.  
  440. 拡張メモリ
  441. 拡張メモリのエミュレーションを行うか指定します。いずれも X68030
  442. モードでのみ使用できます。デフォルトは「使用しない」です。
  443. 詳しくは後述の相違点の項目も参照してください。
  444.  
  445. 改造 > FC2 ピンをカットする
  446. MPU の FC2 ピンをカットする改造をエミュレーションします。
  447. 主に NetBSD/x68k で X Window System を起動するために使用します。
  448.  
  449. その他 > ホスト FPU
  450. FPU エミュレーションを XM6i がソフトウェアで演算するのではなく、
  451. ホストの math ライブラリを直接実行して代用します。つまり例えば
  452. FSIN.X 命令は sin(3) をコールするだけというような感じです。
  453. 拡張倍精度(.X)を要求しても double で演算しますので精度は double
  454. よりも落ちますが、手元の環境でパフォーマンスは約1割程度改善する
  455. ようです。メリットとデメリットについて理解できない人はオフの
  456. まま使用することを推奨します。
  457.  
  458. その他 > NetBSD/x68k 起動支援モードを有効にする
  459. X68030 実機を持っていない人が NetBSD/x68k を起動しやすくするため
  460. の機能です。詳しくは後述「NetBSD/x68k 起動支援モード」を参照して
  461. ください。
  462.  
  463. デバッガ
  464. XM6i デバッガに関する設定を行います。XM6i デバッガは開発途中の
  465. ものであり、使用は推奨しませんし、使用方法は解説しません。
  466.  
  467. 設定ダイアログは、仮想マシン実行中にメニュー「ツール > オプション」
  468. でも開くことが出来ます。ただし、仮想マシン実行中 (電源オフの時も含み
  469. ます) に行える変更は機器構成に影響を与えないものに限ります。ここは
  470. オリジナル XM6 とは動作思想が異なります。
  471. 具体的には以下の項目は仮想マシン実行中には変更できません。
  472.  
  473. 基本
  474. システム > MPU
  475. システム > 速度
  476. システム > メモリ > メインRAMサイズ
  477. SASI
  478. SxSI
  479. SCSI
  480. Nereid > Nereid拡張ボードを使用する
  481. Nereid > ボードの設定
  482. Nereid > MACアドレス
  483. 拡張メモリ
  484. MercuryUnit > ユニットタイプ
  485. CZ-6BF1(1) > 装着する
  486. CZ-6BF1(2) > 装着する
  487. 改造 > SASIバスの改造
  488. 改造 > MPUの改造
  489. その他 > Pluto-X仮想デバイス
  490.  
  491. これらの項目はランチャの設定ダイアログから変更してください。
  492.  
  493.  
  494. ● キーボード
  495.  
  496. wxWidgets のキー入力機構によって動作します。日本語キーボードが前提です。
  497. 以下の特殊キーは直接入力できます。
  498.  
  499. X68000 [HOME] → ホスト [Home]
  500. X68000 [INS] → ホスト [Insert]
  501. X68000 [DEL] → ホスト [Delete]
  502. X68000 [ROLL DOWN] → ホスト [Page Up] ?
  503. X68000 [ROLL UP] → ホスト [Page Down] ?
  504. X68000 [UNDO] → ホスト [End]
  505. X68000 [CAPS] → ホスト [Caps Lock]
  506. X68000 [CTRL] → ホスト [Ctrl]
  507. X68000 [BREAK] → ホスト [Pause]
  508. X68000 [OPT.1] → ホスト [ALT]
  509.  
  510. これ以外のキーはメニュー「ツール > ソフトウェアキーボード」で入力する
  511. ことが出来ます。
  512.  
  513. デバッグオプション --debug-key を指定して起動すると、入力されたキーの
  514. 情報をコンソールに出力します。
  515.  
  516.  
  517. ● マウス
  518.  
  519. 「ツール > マウスモード」あるいは F12 キーによりマウスモードになります。
  520. マウスモードでは、ホストのマウスカーソルは仮想マシンのマウスカーソルに
  521. なります。マウスモードから抜けるには F12 キーを押してください。
  522. XM6i がフォーカスから外れた場合も自動的にマウスモードから抜け出します。
  523.  
  524. XM6 にある中ボタンでのマウスモードの切り替えは未実装です。
  525. XM6 のホイールによるアスペクト比の切り替えは、ベースを TypeG に変更した
  526. ことに伴い実装予定はありません。
  527.  
  528.  
  529. ● ジョイスティック
  530.  
  531. Mac OS X 版のみサポートしています。
  532. XM6i ではまだ ATARI 標準タイプのジョイスティックしかサポートしていません。
  533.  
  534.  
  535. ● SASI ハードディスク
  536.  
  537. 機種が EXPERT の場合、XM6 同様の SASI ハードディスクイメージファイルに
  538. よるエミュレーションを行います。以下のファイル形式をサポートしています。
  539.  
  540. ・HDFファイル形式 (拡張子 .HDF)
  541. ファイルサイズは 10441728バイト、20748288バイト、41496576バイトの
  542. いずれかです。(それぞれ 10MB、20MB、40MB ドライブに対応)
  543.  
  544.  
  545. ● SCSI ハードディスク/光磁気ディスク/CD-ROM (SCSI 経由)
  546.  
  547. 機種が SUPER/X68030 で SCSI ROM ファイルがある場合、標準 SCSI インタ
  548. フェース経由での SCSI ディスクエミュレーションが行えます。
  549. なお、XM6i では、オリジナル XM6 でサポートしている外付 SCSI ボードの
  550. エミュレーションはサポートしていません。
  551.  
  552. SCSI ハードディスクは以下のファイル形式をサポートしています。
  553.  
  554. ・HDS ファイル形式 (拡張子 .HDS)
  555. ファイルサイズは 10MB 以上 (たぶん 2TB 未満の範囲) で、
  556. 512バイト単位の任意のサイズです。
  557.  
  558. 光磁気(MO) ディスクは以下のファイル形式をサポートしています。
  559.  
  560. ・MOS ファイル形式 (拡張子 .MOS)
  561. ファイルサイズは以下の4種類のいずれかです。
  562. 128MB タイプ (127398912 バイト)
  563. 230MB タイプ (228518400 バイト)
  564. 540MB タイプ (533248000 バイト)
  565. 640MB タイプ (635600896 バイト)
  566.  
  567. 128MB、230MB、540MB タイプは 512バイト/セクタ、640MB タイプは
  568. 2048バイト/セクタになります。640MB タイプはセクタサイズが異なる
  569. ため、SUSIE などの対応ドライバを必要とします。
  570.  
  571. 読み込み専用属性のついたイメージファイルをマウントすると
  572. 書き込み禁止 (Write Protected) として扱います。
  573.  
  574. CD-ROM ディスクは以下のファイル形式をサポートしています。
  575.  
  576. ・ISO ファイル形式 (拡張子 .ISO、ISO9660 ベタイメージ)
  577. モード1 (2048バイト/セクタ) で、データのみ格納されたファイルと
  578. RAW 形式で記録されたファイルの両方に対応しています。
  579.  
  580. 詳しくは XM6 の付属文書を参照してください。
  581.  
  582.  
  583. ● シリアルポート
  584.  
  585. ホストの COM ポート(シリアルポート)を使ったエミュレーションができます。
  586. NetBSD、Linux 版はシリアルポートのデバイスパス (/dev/tty00 など) を指定
  587. してください。
  588. Windows 版は COM ポートを指定してください。
  589. ネタとして、XM6i が TCP ソケットで待ち受ける TCP プロキシもあります。
  590. telnet や netcat で接続することが出来ますが、後は察してください。
  591. 設定ダイアログの TCP ポートの欄には、待ち受けるアドレスとポート番号を
  592. ':'(コロン) で続けたものを指定してください。ポート番号のみを指定すると
  593. 127.0.0.1 の指定ポートになります。デフォルトは 127.0.0.1:8530 です。
  594.  
  595. 内蔵 SCC および拡張シリアルボード CZ-6BF1 #1、#2 のいずれでも同様に
  596. 使用できます。
  597.  
  598.  
  599. ● ネットワークの設定 (NetBSD版)
  600.  
  601. NetBSD 版では Nereid イーサネットエミュレーションのホスト側に tap(4) を
  602. 使用しており、ホストマシンやホストマシンを介してのネットワーク接続が可能
  603. です。ただし当然ですが多少のネットワークの知識は必要です。
  604.  
  605. まず、カーネルに tap(4) デバイスのサポートが必要です。GENERIC カーネル
  606. であればサポートしています。tap インタフェースは静的に設定しておく方法と
  607. 動的に生成する方法の2通りがあり、XM6i ver 0.39 までは前者のみサポート
  608. でしたが、ver 0.40 からはどちらもサポートしています。ver 0.40 からは後者
  609. のほうをお勧めします。
  610.  
  611. (1) 静的に設定しておく方法
  612.  
  613. root になって、tap インタフェースを作成します。
  614.  
  615. # ifconfig tap0 create
  616.  
  617. 出来た tap0 インタフェースのホスト OS 側に IP アドレスを設定します。
  618. 物理インタフェースやその他のインタフェースのアドレスやネットワーク空間
  619. と衝突しないように設定してください。ここで例えば、ホスト OS 側の IPv4
  620. アドレスを 10.0.0.1/8 にするには以下のように設定します。
  621.  
  622. # ifconfig tap0 inet 10.0.0.1/8 up
  623.  
  624. XM6i を root で実行する場合はこれだけで構いませんが (ただし一般的に
  625. root での実行はお勧めしません)、一般ユーザで実行する場合は /dev/tap0 を
  626. そのユーザから読み書き (rw-) 可能でオープンできるようにパーミッションを
  627. 変更します。どのように変更すべきかは各自の環境によりますので適切に変更
  628. してください。このホストを自分でしか使っておらず設定方法が分からないと
  629. いう人は (そんな人は UNIX ホスト使ってないと思いますが…)、とりあえず
  630.  
  631. # chmod 666 /dev/tap0
  632.  
  633. とすればよいはずです。
  634.  
  635. ホスト OS を介して外部のネットワークと通信を行うには、外部の物理インタ
  636. フェースと tap0 インタフェースとをブリッジにする必要があります。以下に
  637. 外部インタフェースが wm0 の場合の設定例だけ書いておきます。詳しくは
  638. マニュアルなどを参照してください。
  639.  
  640. # ifconfig bridge0 create
  641. # ifconfig bridge0 up
  642. # brconfig bridge0 add wm0 add tap0
  643.  
  644. これでホスト側の準備完了です。
  645.  
  646. 続いて XM6i 側の設定です。設定ダイアログの「Nereid」ページを開き、
  647. 「Nereid 拡張ボードを使用する」にチェックを入れてください。
  648. 「ホストドライバ」は「tap(4)を使用する」を選択し、「tapデバイス名」に
  649. 先ほど設定したデバイス (この例では /dev/tap0) を指定してください。
  650. なおデフォルトが /dev/tap0 になっています。
  651.  
  652. xm6i-ifup、xm6i-ifdown スクリプトが見付からないというメッセージが出ますが
  653. 無視して構いません。気になるようであれば後述の方法を参考に空のスクリプトを
  654. 用意してください。
  655.  
  656. (2) 動的に生成する方法
  657.  
  658. 動的にインタフェースを生成する方法では /dev/tap デバイスを使用します。
  659. そのため、XM6i を一般ユーザで実行する場合は (通常 root での実行はお勧め
  660. しません)、あらかじめ /dev/tap をそのユーザから読み書き(rw-)可能な
  661. パーミッションに変更します。
  662. どのように変更すべきかは各自の環境によりますので適切に変更してください。
  663. とりあえずという人は
  664.  
  665. # chmod 666 /dev/tap
  666.  
  667. とすればよいはずです。
  668. ホスト OS を介して外部のネットワークと通信を行うには、ブリッジの設定も
  669. 必要でしょう。以下に設定例を書いておきますが、詳しくはマニュアルなどを
  670. 参照してください。
  671.  
  672. # ifconfig bridge0 create
  673. # ifconfig bridge0 up
  674. # brconfig bridge0 add wm0
  675.  
  676. XM6i の設定ダイアログでは「tapデバイス名」を空にします ("/dev/tap" を
  677. 指定しても構いませんが)。
  678.  
  679. tapデバイス名が空だった場合、XM6i は /dev/tap を通じて tap0、tap1、…
  680. など使用可能なインタフェースを自動的に生成します。インタフェースの生成時
  681. と終了時にユーザが任意の設定が行えるよう、XM6i はこの仮想マシン
  682. ディレクトリにある xm6i-ifup、xm6i-ifdown というファイルを実行します。
  683. その際、それぞれ第1引数にインタフェース名を渡しますので、このスクリプトで
  684. インタフェースを適切に設定してください。XM6i がユーザ権限で動作している
  685. 場合、ここで呼び出すスクリプトも同じ権限で動作しますので ifconfig など
  686. 特権が必要なコマンドを実行するには sudo を用いるなどの何らかの策が必要に
  687. なるはずです。例えば生成した tap インタフェースを既設のブリッジに追加する
  688. にはおおよそ以下のようにすればよいでしょうが、詳しくはマニュアルなどを
  689. 参照してください。
  690.  
  691. xm6i-ifup
  692. ----------------------------
  693. #!/bin/sh
  694. echo $0 $1 executed
  695. sudo /sbin/ifconfig $1 up
  696. sudo /sbin/brconfig bridge0 add $1
  697. ----------------------------
  698.  
  699. xm6i-ifdown
  700. ----------------------------
  701. #!/bin/sh
  702. echo $0 $1 executed
  703. sudo /sbin/brconfig bridge0 del $1
  704. sudo /sbin/ifconfig $1 down
  705. ----------------------------
  706.  
  707.  
  708. ● ネットワークの設定 (Linux版)
  709.  
  710. Linux 版は tap デバイスを動的に生成する方法のみサポートしています。
  711. XM6i を一般ユーザで実行するには (通常 root での実行はお勧めしません)、
  712. あらかじめ以下の2つの権限を操作しておく必要があります。
  713.  
  714. まず /dev/net/tun デバイスをそのユーザから読み書き(rw-)可能なパーミッション
  715. に変更します。どのように変更すべきかは各自の環境によりますので適切に変更
  716. してください。とりあえずという人は
  717.  
  718. # chmod 666 /dev/net/tun
  719.  
  720. とすればよいと思います。
  721.  
  722. 次に、ネットワークインタフェースの生成に必要な CAP_NET_ADMIN ケーパ
  723. ビリティを XM6i 実行ファイルに許可します。
  724.  
  725. # setcap cap_net_admin=ep /path/to/xm6i
  726.  
  727. これで、tap デバイスを動的に生成して xm6i-ifup、xm6i-ifdown スクリプト
  728. を呼び出しますので、その辺りは前項 NetBSD 版の記述を参照してください。
  729.  
  730.  
  731. ● ネットワークの設定 (Windows版)
  732.  
  733. Windows 版では Nereid イーサネットエミュレーションのホスト側に TAP-Win32
  734. を使用しており、ホストマシンやホストマシンを介してのネットワーク接続が
  735. 可能です。ただし、サードパーティのデバイスをインストールが必要なことと、
  736. 当然ですが多少のネットワークの知識は必要です。
  737.  
  738. TAP-Win32 は Windows XP 以降で動作するネットワークデバイスドライバで、
  739. OpenVPN の中に含まれています。TAP-Win32 のインストールと設定については
  740. http://xm6i.org/ > ドキュメント > TAP-Win32 のインストールと設定方法、
  741. を参照してください。
  742.  
  743. TAP-Win32 のインストールと設定が終わったら、続いて XM6i 側の設定です。
  744. 設定ダイアログの「Nereid」ページを開き、「Nereid 拡張ボードを使用する」
  745. にチェックを入れてください。「ホストドライバ」は「TAP-Win32を使用する」
  746. を選択し、「TAP-Win32デバイス名」に先ほど設定したデバイス (xm6i.org
  747. サイトの例では TAP01) を指定してください。
  748.  
  749.  
  750. ● メニュー
  751.  
  752. ファイル
  753. ステートを開く ステートファイルをロードします。
  754. ステートを名前を付けて保存 ステートファイルをセーブします。
  755. クイックロード ステートを state1.x6s からロードします。
  756. クイックセーブ ステートを state1.x6s にセーブします。
  757. リセット 仮想マシンをリセットします。
  758. CTRL+OPT.1+DEL CTRL + OPT.1 + DEL を仮想マシンに送ります。
  759. インタラプト 仮想マシンに NMI 割り込みをかけます。
  760. 電源スイッチ 仮想マシンの電源スイッチを ON/OFF します。
  761. 電源を切って終了 (未実装です)
  762. 終了 XM6i を終了します。
  763.  
  764. FD0, FD1
  765. 開く フロッピーの挿入に相当します。
  766. イジェクト フロッピーのイジェクトに相当します。
  767. 書き込み保護 ライトプロテクトシールに相当します。
  768. 強制イジェクト イジェクト禁止の場合に強制イジェクトします。
  769. 誤挿入 誤挿入をシミュレーションします。
  770.  
  771. MO ディスク
  772. 開く MO ディスクイメージを設定します。
  773. イジェクト MO ディスクイメージを取り外します。
  774. 書き込み保護 ライトプロテクトタブに相当します。
  775. 強制イジェクト イジェクト禁止の場合に強制イジェクトします。
  776.  
  777. CD-ROM
  778. 開く CD イメージを設定します。CD 挿入相当です。
  779. イジェクト CD のイジェクトに相当します。
  780. 強制イジェクト イジェクト禁止の場合に強制イジェクトします。
  781.  
  782. 表示
  783. システム システム情報を表示します。
  784. プロセッサ MPU まわりの情報を表示します。
  785. デバイス 各種デバイスの情報を表示します。
  786. ビデオ ビデオRAMの情報を表示します。
  787. レンダラ 表示合成用ワークメモリの情報を表示します。
  788. 仮想ホスト 仮想ホストの情報を表示します。
  789. ストレッチ 画面全体を拡大縮小します。
  790. 等倍/0.5倍/1.5倍から選択できます
  791.  
  792. デバッグ デバッグモードです。
  793.  
  794. ツール
  795. 仮想マシン全体をノーウェイト動作
  796. 仮想マシン全体をフルスピードモードで実行
  797. します。設定ダイアログの「仮想マシン全体
  798. をノーウェイト動作」にチェックをしたのと
  799. 同じ状態です。
  800. マウスモード マウスエミュレーションを行います。
  801. ソフトウェアキーボード ソフトウェアキーボードウィンドウを表示します。
  802. サウンドシンセサイザ 内蔵音源のシンセサイザを表示します。
  803. SASI ハードディスクイメージの作成
  804. 新しいSASIハードディスクイメージを作成します。
  805. SCSI ハードディスクイメージの作成
  806. 新しいSCSIハードディスクイメージを作成します。
  807. SCSI MOディスクイメージの作成
  808. 新しいSCSI光磁気ディスクイメージを作成します。
  809. サウンド NetBSD 版でホストサウンドを有効にします。
  810. オプション 設定ダイアログを開きます。仮想マシン実行中
  811. (電源オフ時も含みます) は機器構成の変更は
  812. 行えません。
  813.  
  814. ヘルプ
  815. バージョン情報 XM6i のバージョン情報を表示します。
  816. ビルドオプション XM6i のビルドオプションを表示します。
  817.  
  818.  
  819. ● 実機およびオリジナル XM6、XM6 TypeG との相違点について
  820.  
  821. オリジナル XM6 と XM6i との相違点、XM6 TypeG と XM6i の相違点、
  822. XM6i の実機との相違点について述べます。オリジナル XM6 のドキュメントも
  823. 併せて参照してください。
  824.  
  825. MPU (全般)
  826. オリジナル XM6 は MPU コアに Starscream を採用していましたが、
  827. XM6i では MUSASHI コアを採用しています。
  828. Starscream は IA32 フルアセンブラの 68000 (〜68020?) エミュレータ、
  829. MUSASHI は C 言語で書かれた 68000 〜 68EC040 エミュレータです。
  830. XM6i ではこのうち 68000、68EC030 (68030) のみをサポートしています。
  831.  
  832. オリジナル XM6 の MPU コア Starscream が IA32 フルアセンブラなのに
  833. 対し、MUSASHI は C言語 (XM6i 拡張部分では C++ も) で記述されている
  834. ため、Windows などの IA32 環境に限ればパフォーマンスでは当然
  835. 勝てません。必然的に最低動作環境や快適に動作するためのホスト要件は
  836. XM6 のそれよりも上がることになります。どのくらいかは不明です。
  837.  
  838. MPU クロックは 10.0MHz から 50.0MHz まで指定することができますが
  839. 現実的でない指定についてはネタとして扱ってください。
  840.  
  841. MPU (68030)
  842. 68EC030 の命令はたぶんすべてサポートしていると思います。
  843. 命令クロック数については未考察です (MUSASHI コアそのままでもなんか
  844. それなりの値になっているので)。
  845. ロングワード命令フェッチは実装してありますが、命令キャッシュおよび
  846. データキャッシュは未実装です。以下の ROM の項目も参照してください。
  847. 例外フレームの内容は適当です。
  848.  
  849. メモリに対するビットフィールド命令は、おそらく実機ではアライン
  850. メントを考慮した最適なアクセスを行うのではないかと想像し、その
  851. ように実装していますが、正しいかどうか分かりません。たぶん動作
  852. には影響ないはずです。
  853.  
  854. 68030 MMU
  855. 68030 MMU をサポートしています。ここは独自実装です。
  856. たぶんすべてのアドレス変換機能が実装してあると思います。
  857. 透過変換(TT)、ロングディスクリプタ、リミット、間接ディスクリプタ
  858. などのマニアック機能も全て実装してあると思いますが面倒なのですべて
  859. については動作確認はしていません。
  860.  
  861. ATC (アドレス変換キャッシュ) もたぶんすべて実装してあり、
  862. NetBSD/x68k で MMU をイネーブルにする前に PFLUSHA を実行していな
  863. かったバグも (わざと起こせば) 実機同様の動作をします。
  864.  
  865. ATC の22個あるエントリの交換アルゴリズムは、68030 のマニュアルに
  866. よると擬似 LRU ですが、それ以上は記載はないため、XM6i では独自に
  867. 最適化を施した擬似 LRU で実装しています。
  868.  
  869. 68881 FPU
  870. 68881 浮動小数点演算ユニットを 68030 のコプロセッサとしてサポート
  871. しています。I/O ポートとしての動作はまだサポートしていません。
  872.  
  873. 演算コアは NetBSD/m68k FPE をベースにしたものを使用しています。
  874. 命令は一応すべて実装しているつもりですが、細部については自信
  875. ありません。誰か助けて。
  876. また各命令の消費サイクル数については正確ではありません。
  877.  
  878. メインメモリ
  879. メインメモリの DRAM リフレッシュウェイトをエミュレーションして
  880. います。オリジナル XM6 はこのリフレッシュウェイト分を CPU クロック
  881. を一律に下げることでエミュレーションしていますが、XM6i では DRAM
  882. リフレッシュウェイトを独立してエミュレートしているため CPU クロック
  883. は XM6 より正確になると思います。
  884. DRAM リフレッシュウェイト成分の実測に使用したのは PRO-II ですので
  885. 他の機種とは異なるかも知れません。XVI 以降の機種については未考察
  886. です。
  887.  
  888. ROM
  889. ROM のアクセスウェイトも実装しています。
  890.  
  891. ただし、X68030 の IPLROM 内でクロックスピードを測定する箇所について
  892. だけハックを入れてあります。これは、この測定ルーチンが 68030 命令
  893. キャッシュ ON の状態でクロックスピードを測定するため、実際には
  894. リードサイクルは発生しないのですが、XM6i の 68030 CPU はキャッシュを
  895. 実装していないため、そのままだとアクセスウェイトが入ってしまい、
  896. 期待通りのクロックスピードが求まらないためです。
  897. それ以外では必ず正規の 2 ウェイトが入ります。
  898.  
  899. SRAM
  900. SRAM へのプログラムアクセスウェイトおよび書き込みウェイトも正しく
  901. 実装しています。これにより SRAM 上でクロックスピードを測定する
  902. プログラムなども XM6 より正確な値を出すと思います。
  903.  
  904. システムポート
  905. システムポート0 ($E8E001) のコントラスト値を変更した時にコントラスト
  906. がふわっと変化するあの見え方を擬似的に生成しています。
  907. 実際に Human68k の電源オフ時はコントラストを ($E から) $0 に1回変更
  908. しているだけなので、XM6 でかくんと暗くなるのはそれはそれで正しい
  909. 動作です。ふわっと暗くなるのは本体内のアナログ回路のようです。
  910. M.Kamada 氏の日記参照。
  911. http://homepage2.nifty.com/m_kamada/di200608.htm#06
  912.  
  913. システムポート7 ($E8E00D) に XM6 判定機能と同様の XM6i 判定機能を
  914. 実装してあります。詳しくは後述します。
  915.  
  916. ジョイスティックエミュレーション
  917. キーボードによるジョイスティックエミュレーション機能を実装して
  918. います。キーボードの十字キーでジョイスティック入力も発生させる
  919. ものです。ジョイスティックがなくてもオトコダマが遊べるための措置
  920. かも知れません…。
  921. メニュー「ツール > オプション」の「ジョイスティック」ページ、
  922. 「キーボードによるエミュレーション」で ON/OFF の切り替えが出来ます。
  923. デフォルトは OFF です。
  924.  
  925. FDC (uPD72065)
  926. XM6 からずいぶん改良を加えた XM6 TypeG とほぼ同じ実装です。
  927.  
  928. フロッピーイメージ
  929. オリジナル XM6 がサポートしている形式に加えて、NetBSD/x68k 方面
  930. で使用される 2HC フォーマットもサポートしています。イメージサイズ
  931. が 1228800 バイトの場合、拡張子に関係なく 2HC として認識します。
  932. ファイルオープンダイアログは .2HC (.2hc) という拡張子を認識する
  933. ように対応していますので、特に問題がなければ .2HC という拡張子を
  934. 使用することをお勧めします。
  935.  
  936. SCSI (MB89352)
  937. XM6 からずいぶん改良を加えた XM6 TypeG とほぼ同じ実装です。
  938.  
  939. オリジナル XM6 で実装されていない内部の 8バイトキューは XM6i でも
  940. 実装していません。従って、これを前提に動作しているものがあると
  941. 動かないかも知れません。ただ NetBSD/x68k が動作する程度には
  942. 誤魔化してあります。実装は容易ではないので問題が起きるまではあまり
  943. 対応する予定はありません。
  944.  
  945.  
  946. Nereid
  947. ver 0.50 以降、TypeG 実装を採用しています。
  948.  
  949. イーサネットエミュレーションでホストと実際に通信できるのは NetBSD
  950. 版と Windows 版ですが、Mac OS X 版もイーサネットエミュレーション
  951. 自体は機能します。
  952. ハブの先に誰もつながってないような感じに振る舞います。
  953.  
  954. 拡張メモリ
  955. X68030 モードでのみ拡張メモリエミュレーションをサポートしています。
  956. ただし、実在の構成、あるいは現実的な構成とはかけ離れたものもあり、
  957. それらについて特に Human68k での動作がどうなっても知りません。
  958.  
  959. 「TS-6BE16 互換モード」は TS-6BE16 の拡張メモリ 16MB を
  960. エミュレーションしているつもりです。エミュレーションしているのは
  961. あくまで拡張メモリの番地と容量だけです。実物についての知見に乏しい
  962. ため、誰か詳しい人がいたら教えてください…。
  963.  
  964. 「060turbo 互換モード」は 060turbo の 128MB までのローカルメモリの
  965. 番地と容量だけをエミュレーションしているつもりです。こちらも
  966. エミュレーションしているのはローカルメモリの番地と容量だけであり、
  967. MPU が 68060 になるわけではありませんし、ローカルメモリの番地と容量
  968. 以外の一切はエミュレーションしていません。このような構成は現実には
  969. 存在しないはず(?)なので「非実在」と表記しています。
  970.  
  971. 「XM6i 独自モード」は、もはやエミュレーションでも何でもないですが
  972. 68030 + メモリ 1GB という、夢の頂へ、です。
  973.  
  974.  
  975. Pluto-X 仮想デバイス
  976. $EAC000〜$EADFFF に XM6i 独自の仮想デバイスがあります。とりあえず
  977. 名前がないのもあれなので Pluto-X と名前を付けました。拡張ボードが
  978. ささってるようなイメージです。
  979.  
  980. ソフトウェアキーボード
  981. XM6 と同様のソフトウェアキーボードウィンドウを実装してありますが、
  982. ステータスバーに表示される刻印はひらがなに変更してあります。
  983.  
  984. また LED のエミュレーションも行ってみましたが、今後どうするかは
  985. 未定…。
  986.  
  987. キーボード
  988. 「キーボードとRTCをホスト時間で駆動する」にチェックが入っている場合
  989. キーリピートはホスト時間で計測します。これにより「仮想マシン全体を
  990. ノーウェイト動作」時でもキーが打ちやすくなっていると思います。
  991. 実機でのキーリピートはキーボード側の機能であり、MPU クロックや本体の
  992. システムクロックには影響されないはずなので、たぶんこちらのほうがより
  993. 現実に近いと思います。
  994.  
  995. 表示メニューについて
  996. メニュー「表示」の中には XM6 のそれを変更拡張したものや、XM6i 独自
  997. のものがあります。
  998.  
  999. 表示 > プロセッサ > MPU レジスタ
  1000. 68030 に対応しています。そのため書式も一部変更しています。
  1001. 68000 モードでも 68030 と同じだけのレジスタセットが見えて
  1002. いますが、そのうちなんとかするかも知れません。
  1003.  
  1004. レジスタではありませんが、MPU のステートも表示しています。
  1005. Running は通常の実行状態、STOP instruction は STOP 命令に
  1006. よるストップ状態、Double Bus Fault は二重バスフォールトです。
  1007.  
  1008. 表示 > プロセッサ > 68030 MMU
  1009. 68030 の MMU 関連レジスタと ATC の内容を表示します。ATC は
  1010. Address Translation Cache でいわゆる TLB です。ATC の値は
  1011. 実機では窺い知ることは出来ませんので、エミュレータならでは
  1012. と言えるかも知れません。ヒット率はその時その行にあるエントリ
  1013. のヒット率ではなく、先頭から何番目のエントリの通算ヒット率と
  1014. いうような意味です。
  1015. ヒット率は起動時からの通算で、動作中にリセットする方法は
  1016. 今のところありません。
  1017.  
  1018. 表示 > プロセッサ > FPU
  1019. 68851 FPU コプロセッサの関連レジスタの内容を表示します。
  1020. レジスタダンプの後ろの括弧内は 80bit 精度の FPU レジスタの
  1021. 内容を double (64bit 精度) で表現したものになります。よって
  1022. 細かいところは気にしないでください。
  1023.  
  1024. 表示 > プロセッサ > MUSASHI
  1025. 開発用です。
  1026.  
  1027. 表示 > プロセッサ > メモリ
  1028. XM6 にあるものと近いものですが、インタフェースを若干変更して
  1029. います。また、MPU レジスタによるアドレス選択、スタックに
  1030. よるアドレス選択、メモリへの値の書き込みの各機能は、現状では
  1031. あまり意味を持たないため未実装です。
  1032. また現在のところメモリウィンドウは1つしか表示できません。
  1033. 今後の実装は検討中です。拡張メモリについても検討段階です。
  1034.  
  1035. 表示 > プロセッサ > メモリマップ
  1036. XM6i では X680x0 の外部メモリ空間 ($000000 .. $FFFFFF) を
  1037. 内部で 8KB ごとに区切って処理しており、どのアドレスをどの
  1038. 内部デバイスが担当しているか表示します。反転は、ユーザ
  1039. モードでアクセスできない空間 (スーパバイザ保護またはバス
  1040. エラー空間) を示しています。
  1041.  
  1042. 表示 > プロセッサ > メモリアクセス
  1043. XM6i の全メモリ空間(最大 1GB)について、アクセス状況を
  1044. リアルタイムに表示します。1文字が 1MB に相当し、その 1MB
  1045. の中のどこかが一度以上アクセスされたことを意味します。
  1046.  
  1047. . … アクセスなし
  1048. R … リードアクセス
  1049. W … ライトアクセス
  1050. D … リードおよびライトアクセス
  1051. I … 命令フェッチアクセス
  1052. A … 命令およびデータの両方のアクセス
  1053.  
  1054. バンクメモリについては命令フェッチかどうかは表示されません
  1055. ので、R/W/D のみです。
  1056.  
  1057. 表示 > デバイス > マウス
  1058. 仮想マシンのマウスのステータスを表示します。
  1059.  
  1060. 表示 > デバイス > レンダラ仮想デバイス
  1061. 仮想マシン内のレンダラ関連の情報を表示します。
  1062.  
  1063. 表示 > デバイス > エリアセット
  1064. エリアセットおよび X68030 の拡張エリアセットレジスタの
  1065. 内容を表示します。
  1066.  
  1067. 表示 > デバイス > ROM
  1068. 使用中の各種 ROM 種別を表示します。
  1069. IPLROM1 は $FF0000 .. $FFFFFF を示しています。
  1070. IPLROM2 は $FE0000 .. $FEFFFF を示しています。
  1071.  
  1072. 表示 > デバイス > I/O コントローラ
  1073. 仮想マシンの I/O コントローラ (IOSC-2) のステータスを
  1074. 表示します。
  1075.  
  1076. 表示 > デバイス > Nereid イーサネット
  1077. Nereid の RTL8019AS のステータスを表示します。
  1078.  
  1079. 表示 > デバイス > システムポート
  1080. システムポートのステータスを表示します。
  1081. ポートのナンバリングは X68030 のもので表記していますので、
  1082. X68000 当時の資料とは異なると思います。
  1083.  
  1084. 表示 > ビデオ > PCG
  1085. XM6 のものと同等ですが、補足説明します。
  1086. コンテキストメニューでパレット 0〜F を選択できます。また
  1087. 画面内左クリックでもパレットを 0→1→2→…とインクリメント
  1088. できます。これに加え、XM6i ではツールバーにプルダウン
  1089. メニューを備えここでもパレットが選択できるようにしています。
  1090.  
  1091. 表示 > 仮想ホスト > スケジューラ
  1092. ホストスケジューラのステータスを表示します。
  1093. オリジナル由来の「表示 > システム > スケジューラ」ウィンドウ
  1094. にある Frame Rate は、ホスト側実装の違いにより XM6i では
  1095. 表示できません。こちらにある Frame Rate を参照してください。
  1096.  
  1097. 表示 > 仮想ホスト > ネットワーク
  1098. ホストネットワークドライバのステータスを表示します。
  1099. ホストネットワークが実装してある機種でのみ意味を持ちます。
  1100.  
  1101. ツール > サウンドシンセサイザ
  1102. XM6 TypeG 由来のサウンドシンセサイザを表示します。
  1103.  
  1104. ツール > サウンド
  1105. 仮想ホストのサウンド機能をホストに接続するかどうかのスイッチ
  1106. です。また現状接続されているかどうかが反映されています。
  1107. NetBSD のオーディオデバイス (/dev/audio) は排他なので、
  1108. 他のプロセスが /dev/audio をオープンしていると、使用できま
  1109. せん。この場合チェックが外れています。
  1110. サウンド機能を有効にしたい場合は、他のプロセスが /dev/audio
  1111. を使用していないことを確認してから、このチェックをつけて
  1112. ください。
  1113. なお、Windows 版、Mac OS X 版にはこの制約はないため、
  1114. このメニュー自体が無効になっています。
  1115.  
  1116.  
  1117. ● ステートセーブ/ロードについて
  1118.  
  1119. XM6i のステートセーブ/ロード機能は本家 XM6 のそれとは互換性がない
  1120. 独自のものです。拡張子は .x6s です。
  1121. クイックセーブ/ロードはカレントディレクトリの state1.x6s という
  1122. ファイルをアクセスします。
  1123. おそらくまだちゃんと動いていません。
  1124.  
  1125.  
  1126. ● NetBSD/x68k 起動支援モード
  1127.  
  1128. NetBSD/x68k 起動支援モードは、X68030 実機を持っていない人が少しでも
  1129. NetBSD/x68k を起動しやすくするための機能です。
  1130.  
  1131. X68000/X68030 のエミュレーションには無償公開されていない CGROM.DAT が
  1132. 必要であり、さらに X68030 のエミュレーションには ROM30.DAT が必要です。
  1133. このため、これらの代替 ROM ファイルを作成する方法が世間にはいくつか
  1134. 存在していますが、XM6i の NetBSD/x68k 起動支援モードも代替 ROM を内蔵
  1135. しています。
  1136.  
  1137. 具体的には NetBSD/x68k 起動支援モードでは、ROM ディレクトリに
  1138. CGROM30.DAT、CGROM.DAT、CGROM.TMP のいずれも存在しなければ XM6i 内蔵の
  1139. 独自 CGROM を使用し、ROM ディレクトリに ROM30.DAT が存在しなければ、
  1140. XM6i 内蔵の独自 ROM を使用するようになります。
  1141.  
  1142. これらはあくまで代替 ROM であるためいくつかの制約があります。
  1143.  
  1144. o ROM Human、ROM DB は動作しません。
  1145. o SCSI デバイスから Human68k を起動することが出来ません。(フロッピー
  1146. から Human68k を起動することは出来ます)
  1147. o CGROM の JIS 漢字のうち 78JIS/83JIS で字体変更があったものを含め、
  1148. 字体はオリジナルと同じでないものがあります。
  1149.  
  1150.  
  1151. ● XM6i バージョン判定方法
  1152.  
  1153. 仮想マシン内から XM6i を識別し、バージョンを取得することが出来ます。
  1154. システムポート7 ($E8E00D) に $58('X') を書き込むと、同じポートから
  1155. $36('6')、XM6 VM のメジャーバージョン、XM6 VM のマイナーバージョンが
  1156. 取得できます。続けて $ff が読み出せた場合はオリジナル XM6 であり、
  1157. $69('i') が読み出せた場合には XM6i です。XM6i であれば更に続けて
  1158. XM6i メジャーバージョン、XM6i マイナーバージョンを読み出すことが
  1159. できます。以降の読み出しは $ff です。また XM6i であれば先に読み出した
  1160. XM6 VM のバージョン番号2バイトは互換性のためだけであり、意味を持たない
  1161. ものとします。
  1162. つまり例えば XM6i version 0.37 であれば、$36, $02, $05, $69, $00, $25
  1163. の順で読み出せます。
  1164.  
  1165. なお、この判定方法では本家 XM6 の判定方法に変更を加えることになります
  1166. が、この点について原作者のPI.氏には許可を頂いております。
  1167.  
  1168.  
  1169. ● 機種別サポート状況
  1170.  
  1171. 機種ごとにサポート状況が異なる機能を以下に示します。
  1172.  
  1173. NetBSD Windows MacOSX
  1174. ----------------------------- ------- ------- -------
  1175. ジョイスティック × × ◯
  1176. ネットワーク ◯ ◯ ×
  1177. サウンド ◯ ◯ *1
  1178. シリアルポート(COM) ◯ ◯ *2
  1179. シリアルポート(TCP) ◯ × ◯
  1180.  
  1181. *1: SDL版でサポート
  1182. *2: ビルドしてありますが動作は未確認です。
  1183.  
  1184.  
  1185. ● 不具合など
  1186.  
  1187. まだまだ作りかけなので色々不具合があります。
  1188.  
  1189. o ここに記載のない機能はおそらくサポートしていません。
  1190.  
  1191. o ステータスバーには本家 XM6 とは異なり、デバッグ目的にパフォーマンス
  1192. カウンタを表示しています。ある程度これの意味するところが分からない
  1193. と使いものにならないレベルかも知れません。
  1194.  
  1195. o 特に MMU が動いてる場合 (NetBSD/x68k を動作させている場合など) は
  1196. それなりの CPU パワーが必要です。
  1197. CPU パワーが足りず、処理が実時間より遅れ続けてしまうと、CPU に余裕が
  1198. 出来た途端に遅れを取り戻そうとして猛スピードで実行します。この状態
  1199. では画面更新もままならずキー入力はリピートしがちになります。
  1200. そっとしておきましょう。:-)
  1201.  
  1202. o コンソールウィンドウが必ず開きます。そのうちなんとかしたいとは
  1203. 思っています。
  1204.  
  1205. o キー割り当ては適当です。また変更することは出来ません。
  1206.  
  1207. o ノーウェイト動作は安定していないと思います。
  1208.  
  1209. o グラフィック系のサブウィンドウは非常に重たいです。
  1210.  
  1211. o Mac OS X 版の制限事項
  1212. * メニューの挙動がおかしかったりします。
  1213. * コマンドキーによるショートカットは正しく動作しません。
  1214. * ファイルセレクタの拡張子が自動でついたりつかなかったりします。
  1215.  
  1216.  
  1217.  
  1218. ● 著作権表示等
  1219.  
  1220. XM6i 固有部分については isaki および Y.Sugahara に著作権があります。
  1221.  
  1222. XM6i が使用している原作およびその他のコンポーネントの著作権については
  1223. 各著作物の主張に準じます。
  1224.  
  1225. XM6
  1226. Copyright (C) 2001-2006 PI.
  1227.  
  1228. XM6 TypeG
  1229. Copyright (C) 2010-2014 GIMONS
  1230.  
  1231. XM6 ver 2.05改
  1232. Copyright (C) 2006-2014 co
  1233.  
  1234. Starscream 680x0 emulation library
  1235. by Neill Corlett ([email protected])
  1236.  
  1237. FM Sound Generator with OPM interface
  1238. Copyright (C) by cisc 1998, 2003.
  1239.  
  1240. MUSASHI Version 4.95 (2012-02-19)
  1241. A portable Motorola M68xxx/CPU32/ColdFire processor emulation engine.
  1242. Copyright Karl Stenerud.
  1243.  
  1244. Mac 版のみ、SDL 1.2 をダイナミックリンクしています。
  1245. SDL 1.2 は LGPL でライセンスされています。
  1246. http://www.libsdl.org
  1247.  
  1248. 内蔵 CGROM には以下のフォントの一部あるいは全部を使用しています。
  1249.  
  1250. 美咲フォント
  1251. 東雲フォント
  1252. 日比谷24フォント
  1253. 梅フォント
  1254. milkjf フォント
  1255.  
  1256.  
  1257. ● 配布等
  1258.  
  1259. 無断の転載および二次配布は禁止します。
  1260.  
  1261.  
  1262. ● 連絡先
  1263.  
  1264. (EOF)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement