XEiJ (X68000 Emulator in Java) version 0.15.01.29

作者: Makoto Kamada

ウェブページ: http://stdkmd.com/xeij/

目次

はじめに

XEiJ (X68000 Emulator in Java) は Java 言語で記述された X68000 エミュレータです。エミュレータといっても周辺回路の隅々まで実機とまったく同じものを作ろうとしているわけではなく、どちらかと言えば X68000 の新しい形を考えることを楽しんでいます。実装方法のアイデアや新しい機能を思い付いたら全体像など見えなくてもとりあえずプログラムを書き始め、詰まったらまた何か湧いてくるまで脇に置いておく、そんなことを繰り返しているのでソースコードは作りかけのところばかりですが、注釈のどれか 1 つでも誰かの役に立つことがあれば公開する意味があるかも知れないと思っています。

最近の更新

0.15.01.29

http://stdkmd.com/xeij/ に引っ越しました。Java コントロールパネルのセキュリティタブの例外サイトリストに http://mada.la.coocan.jp/ を登録されている場合は http://stdkmd.com/ への変更をお願いします。

0.15.01.25

ウインドウの位置、ディスクイメージファイル名、SRAM の内容などを終了時に設定ファイルに保存して次回起動時に復元します。コマンドラインから起動したときの設定ファイルは、Windows のとき %APPDATA%/XEiJ/XEiJ.ini、それ以外は ~/XEiJ.ini または ./XEiJ.ini です。Java アプレットのときは Web Storage を、Java Web Start のときは PersistenceService を使用して設定をローカルファイルに保存します。

表示モードテストのパターンテストを更新しました。背景に敷き詰められると邪魔な 0 番の番号を省き、反転を示す印は小さく、手前のスプライトを明るく、奥のスプライトとバックグラウンドを暗く表示します。

デバッガ db.x とソースコードデバッガ scd.x にある「リモートコンソールモードのとき受信バッファに溜まった入力が 1 文字置きに欠落する」というバグを回避して、入力を 1 行ずつ転送するターミナルとの相性を改善しました。

音声出力速度制御を OFF にできるようにしました。音程が不安定になるのは音が途切れるよりも気持ち悪いという人は OFF にしてください。

要求する Java SE のバージョンを 8u31 (1.8.0_31) 以上に更新しました。Java™ SE Development Kit 8, Update 31 Release Notes [www.oracle.com]

0.14.12.26

CRTC のステージを再構築しました。CRTC IRQ と V-DISP は水平フロントポーチで遷移します。ラスタブレークも一緒で H-SYNC はブレーク後数命令ないし数十命令後に遷移します。

ビデオコントローラの重ね合わせの処理を変更しました。スプライト画面とテキスト画面のどちらか代表する画面を選んでからグラフィックス画面と重ね合わせます。

表示モードテストを追加しました。CRTC やビデオコントローラなどの表示モードの確認と、任意のテストデータで動作テストを行えます。

音声モニタの出力波形は左クリックと右クリックで時間方向、Shift キーを押しながらだと振幅方向に拡大縮小します。

続きを読む

0.14.11.23

OPM モニタ改め音声モニタに、出力波形、周波数分布、キーオンとリリースを示す鍵盤、音色定義データおよび ADPCM の状態を表示します。

ADPCM の出力が ON または OFF されたとき、-1 または 0 のマスクの代わりに滑らかな曲線を掛けることでプチノイズを除去します。

ADPCM で 0x00 または 0x88 が出力されたとき、変位の符号によって 0x08 または 0x80 に読み替えることで変位の偏りを抑制します。

ADPCM の原発振周波数を通常の 8MHz/4MHz と改造された 8MHz/16MHz から選べます。8MHz/16MHz のとき PCM8A.X -M1 -F2 とすると ADPCM のサンプリング周波数が 31.3kHz になります。

ADPCM の予測指標が 45 以上のとき波形が乱れる不具合を修正しました。

0.14.11.11

IPLROM 1.3 を使用していて ROM デバッガがないのに ROM デバッガを組み込もうとしたとき、エラーが出ないようにダミーのコードを走らせてそのまま起動できるようにしました。

0.14.11.07

コアのバグを修正しました。また、ゼロプライオリティといくつかの特殊プライオリティ/半透明モードを追加・修正しました。

0.14.11.03

DMA を更新しました。

データブレークポイントを追加しました。指定されたアドレスとサイズで指定された範囲のデータの読み書きがあると停止します。

0.14.10.29

HFS の _CREATE の不具合を修正しました。また、MFP の割り込み要求が 1 命令遅れて受け付けられるようにしてみました。

0.14.10.21

SASI ハードディスクイメージの書き出しと SCSI ハードディスクイメージの新規作成の不具合を修正しました。

0.14.10.20

マウスモード (エクスクルーシブ) のときマウスカーソルの移動速度を調節できるようにしました。

0.14.10.18

ラスタブレークポイントを追加しました。垂直帰線割り込み、水平帰線割り込み、ラスタ割り込みをトレースしたいときに使います。

0.14.10.15

要求する Java SE 実行環境のバージョンを Java SE 8 Update 25 [www.oracle.com] (8u25, 1.8.0_25) 以上に更新しました。

0.14.10.14

パラメータ -model=(EXPERT|SUPER|XVI|Compact|Hybrid|X68030) またはメニューで機種を選択できます。IPLROM*.DAT は機種に対応するものがリソースから読み込まれるので別途用意する必要はありません。

SCSI ハードディスクイメージ (*.HDS) に対応しました。SCSIINROM.DAT と SCSIEXROM.DAT はリソースにある IPLROM30.DAT を使って内部で生成されるので別途用意する必要はありません。

0.14.09.23

FMOVE.D FPn,(Ar)+/-(Ar) を修正しました。

0.14.09.22

ieeerem/rem のアルゴリズムを変更しました。sin(2^10000) を計算できるようにしました。

0.14.09.08

atanh のアルゴリズムを変更しました。また、JRE 7 への対応を廃止しました。

0.14.09.04

atan/exp2/tan のアルゴリズムを変更しました。

0.14.08.29

浮動小数点命令の処理を更新しました。

0.14.08.22

デバッガで浮動小数点命令を逆アセンブルできるようにしました。

0.14.08.21

80 ビット拡張精度 (19 桁) または 96 ビット拡張精度 (24 桁) のどちらかを選択できるようにしました。

0.14.08.20

FETOXM1 の誤差を減らしました。

0.14.08.19

X68030 モードのとき浮動小数点命令の一部 (演算命令と分岐命令) を実行できるようにしました。例外処理は未実装です。

0.14.07.17

要求する Java SE のバージョンを更新しました。

0.14.05.06

割り込み禁止の状態で暴走したときもインタラプトスイッチが効くようにしました。

0.14.05.05

分岐ログを更新してプログラムフロービジュアライザを追加しました。プログラムカウンタが通った跡をリアルタイムに可視化します。

0.14.05.01

デバッグウインドウが開いているときは F11 キーが全画面表示ではなく停止ボタンとして機能します。

0.14.04.30

コアのバグを修正しました。

0.14.04.29

キー入力の処理を TimerTask を使わない方法に変更しました。

0.14.04.28

FDC を更新しました。FDDEVICE.X を組み込むと 2DD (640KB)、2DD (720KB)、2HQ のイメージファイルを操作できます。

0.14.04.27

描画するフレームの間隔を空けることで描画の負荷を軽くすることができます。

0.14.04.26

FDC を動かしてみるテスト。FORMAT /5 B: で 2HC モードでフォーマットできます。

0.14.04.23

HUMAN.SYS が入っていないディレクトリでも起動できるようにしました。COMMAND.X は入れておいてください。

0.14.04.21

実行サンプルの Human68k version 3.02 のシステムディスクの設定を 10MHz、最近傍補間、音声なしに変更しました。

0.14.04.19

Firefox と Opera でも全画面表示が使えるようになりました。

機能と特徴

Java 言語

XEiJ は Java 言語で記述されています。最新の Java SE 実行環境があれば OS に関係なく動作し、コマンドライン、Java アプレット、Java Web Start のいずれでも起動できます。

シームレスマウス

マウスの移動距離のデータを作るときに逆アクセラレーション計算を行うことで X68000 の IOCS のマウスカーソルをホストマシンのマウスカーソルの真下に貼り付けます。さらに X68000 のマウスカーソルが表示されていてホストマシンのマウスカーソルが X68000 の画面の上にあるときはホストマシンのマウスカーソルを透明にします。これでホストマシンのマウスカーソルが X68000 の画面の上にある間だけ X68000 のマウスカーソルになり、X68000 用のマウスを使うソフトウェアをホストマシンのアプリケーションに近い感覚で操作することができます。シームレスマウスの効果は じょんぐ を見るとわかりやすいと思います。

ホストファイルシステムインタフェイス

XEiJ はリモートデバイスから ROM 起動するための仮想拡張ボードを搭載しており、ホストマシンの任意のディレクトリを Human68k の起動ドライブにすることができます。CONFIG.SYS やデバイスドライバなどの起動シーケンスに必要なファイルがすべてホストマシンのディレクトリで検索されるので、Human68k の環境を構築するためにホストマシン側から内容を操作しにくいフロッピーディスクやハードディスクのイメージファイルを作る必要がありません。イメージファイルという箱庭から開放された X68000 に慣れると、イメージファイルの中に Human68k の環境を構築するのがとても面倒なことに思えてきます。

音声出力速度制御

XEiJ は動作速度に十分な余裕がないときバッファアンダーランを避けるためにサンプリングデータを引き伸ばして出力します。音程が不安定になることがありますが、音がぶつぶつ途切れるよりは耳とスピーカーに優しいかも知れません。

FE ファンクション命令

軽量化のため、通常は F ライン例外を経由して FLOATn.X が処理する FE ファンクションコールを XEiJ は MPU の命令として処理します。

96 ビット拡張精度浮動小数点数

XEiJ は X68030 モードのとき浮動小数点演算を MC68882 よりも高い精度で行い、その引数や結果を MC68882 の 80 ビット拡張精度 (仮数部 64 ビット) よりも 16 ビット多い 96 ビット拡張精度 (仮数部 80 ビット) で読み書きすることができます。MC68882 は 80 ビット拡張精度浮動小数点数を 16 ビットの予約領域を挟んで 96 ビットを消費する形でメモリに書き込みますが、XEiJ はその予約領域に 96 ビット拡張精度浮動小数点数の仮数部の末尾の 16 ビットを格納します。予約領域が $0000 になっていないのでバイナリデータを他所の環境で利用する場合は注意してください。

例: 円周率 π = 3.141592653589793238462643383... の内部表現を見る
-l200000 20000d
  00200000      fmovecr.x       #$00,FP0
  00200004      fmove.x FP0,$00200010
  0020000C      _EXIT
80 ビット拡張精度のとき。0xc90fdaa22168c235/262 = 3.1415926535897932385128... (19 桁)
-g=200000
program terminated normally
-d200010 20001b
00200010  4000 0000 C90F DAA2 2168 C235                     @...ノ.レ「!hツ5
96 ビット拡張精度のとき。0xc90fdaa22168c234c4c6/278 = 3.141592653589793238462642109... (24 桁)
-g=200000
program terminated normally
-d200010 20001b
00200010  4000 C4C6 C90F DAA2 2168 C234                     @.トニノ.レ「!hツ4

音声モニタ

XEiJ の音声モニタには、波形、周波数分布 (スペクトラムアナライザ)、鍵盤、音色データおよび ADPCM の状態が表示されます。

波形は OPM と PCM の合成前の波形です。左クリックまたは右クリックで時間方向を拡大縮小、Shift キーを押しながら左クリックまたは右クリックで振幅方向を拡大縮小できます。波形の狙ったところを拡大縮小させたいときは右下のボタンで更新を停止させてから行います。

スペクトラムアナライザ (FFT アナライザ) は低音域の分解能と高音域の反応速度を両立させるために周波数の範囲を 5 分割しています。また、どこが何 Hz か数字で書く代わりに周波数を下の鍵盤に合わせてあり、単純な音色ならば白鍵でも黒鍵でも鍵の中央の真上に輝線が現れます。

鍵盤はキーオンとリリースの様子を示しています。平均律で KC と KF を合わせた周波数に近い鍵が反応します。

音色データは YM2151 のレジスタの内容を MML の音色定義データのフォーマットに変換したものです。レジスタの内容をそのまま表示するよりもわかりやすいと思います。

分岐ログとプログラムフロービジュアライザ

XEiJ はプログラムカウンタのインクリメント以外の変化すなわち割り込みを含むすべての分岐の分岐元と分岐先のアドレスを直近の 65535 回までメモリ上の分岐ログに保存しています。分岐ログウィンドウを開くとプログラムカウンタの変化を遡って逆アセンブルすることができます。

プログラムフロービジュアライザは分岐ログをリアルタイムに可視化するツールです。プログラムカウンタが 16MB のアドレス空間のどこを巡回しているのかがひと目でわかり、クリックで逆アセンブルさせればそこで何をやっているのかもすぐにわかります。1 命令ずつトレースするよりもプログラムの大きな構造を把握しやすいと思います。

動作環境

システム要件

動作確認を Intel Core i7-3770 3.40GHz, Windows 7 Professional (64 ビット) のデスクトップ PC で行っており、デフォルトの X68000 Hybrid (16.7MHz) で男弾(オトコダマ)の高クロック機用 (背景スクロールあり、BGM あり、効果音多重再生) が鈍化テストで 75% くらいまで問題なく動作することから、プロセッサは Intel Core i7-3770 3.40GHz と比較して 4 倍くらい遅くても大丈夫だと思います。公開されている CPU ベンチマークの結果を参考にして大雑把な目安を立てると PassMark CPU Benchmarks - Single Thread Performance [www.cpubenchmark.net] のスコアが 520 あたりのマルチコアプロセッサが下限ではないかと思いますが、下限を上回っていても実際に問題なく動作するかどうかは試してみないとわかりません。

Java SE 実行環境

XEiJ は Java SE 実行環境の JRE 8 で動作します。GUI は Swing を使用しています。これを書いている時点で JRE 8 の最新版は JRE 8u31 (1.8.0_31) です。Java SE - Downloads | Oracle Technology Network | Oracle [www.oracle.com] で OS の種類とアーキテクチャに合った JRE の最新版をダウンロードしてインストールしてください。

ブラウザ

XEiJ を Java アプレットとして起動するときはモダンブラウザと JRE に含まれている Java プラグインが必要です。64 ビットの OS を使用している場合は 64 ビットモードで動作するブラウザで動かすことをお勧めします。OS が 64 ビットでもブラウザが 32 ビットモードで動いていると組み込まれる Java プラグインも 32 ビット版になるため、64 ビット版のブラウザで 64 ビット版の Java プラグインを使用した場合と比較して 2~3 倍の負荷がかかり、処理が重くなってしまいます。

Internet Explorer 11 [windows.microsoft.com]

インターネットオプションのセキュリティタブのインターネットゾーンの「保護モードを有効にする」と詳細設定タブの「拡張保護モードを有効にする」と (もしもあれば) 「拡張保護モードで 64 ビット プロセッサを有効にする」にチェックを入れて IE を再起動すると 64 ビットモードになります。ローカルでは常に 32 ビットモードになってしまうようです。

Google Chrome 40 [www.google.com]

32 ビットモードで動作します。

Google Chrome 40 (win64) [www.google.com]

Windows 7/8 用 Google Chrome の 64 ビット版です。64 ビットモードで動作します。

Opera 27 [www.opera.com]

32 ビットモードで動作します。

Opera 12.17 [ftp.opera.com]

64 ビットモードで動作します。ローカルでは LiveConnect が動作しないため Java アプレットのサイズを変更できません。

実行サンプル

XEiJ にはデジタル署名を付けていません。Java 7 Update 51 (7u51、2014 年 1 月 14 日公開) 以降で Java アプレットの実行がブロックされる場合は、Java コントロールパネルを開いてセキュリティタブの例外サイトリストに http://stdkmd.com/ を加えてください。参考: どうすれば例外サイト・リストを構成できますか。 [java.com]

Human68k version 3.02 のシステムディスク

Java アプレット / Java Web Start

無償公開された Human68k version 3.02 のシステムディスク [retropc.net] です。とりあえずコマンドプロンプトが表示されるところを見たい人と X-BASIC を動かしてみたい人向け。

男弾(オトコダマ) - OTOKO DAMA -

Java アプレット / Java Web Start

Mitsuky さん [retropc.net] による縦スクロールシューティングゲーム 男弾(オトコダマ) [retropc.net] です。DSHELL のメニューで「◎遊ぶ(10MHz機用)」と「◎遊ぶ(高クロック機用)」を選べるようになっているので、速いマシンを持っている人は是非高クロック機用を試してみてください。スプライト管理システム XSP によって繰り出されるハードウェアの限界を超えた数のスプライトが画面狭しと飛び散ります。操作はテンキーの 2、4、6、8 またはカーソルキーで移動、X がショット、Z がボンバーです。標準キーボードの左下にあるひらがなキーの LED を点灯させておくとショットが自動連射になります。

▪男弾(オトコダマ)の説明 [retropc.net]

▪男弾(オトコダマ)のグラフィックの説明 [retropc.net]

▪男弾(オトコダマ)のディスクイメージ版の補足説明 [retropc.net]

▪男弾(オトコダマ)の 1 面攻略法 [retropc.net]

じょんぐ

Java アプレット / Java Web Start

『 X68000 マシン語プログラミング』でおなじみの 村田敏幸さん [retropc.net] による麻雀ソフト じょんぐ [retropc.net] です。マウスで遊びます。音はありません。ポン、チー、カン、ロンするときは右クリック。

▪じょんぐの説明 [retropc.net]

▪じょんぐのコマンドラインリファレンス [retropc.net]

▪じょんぐのコンフィギュレーションファイルの説明 [retropc.net]

ごーじゃすリバーシ

Java アプレット / Java Web Start

拙作の ごーじゃすリバーシ [retropc.net] です。ボードの上で石が裏返る様子を 512x512 ドット 65536 色モードのグラフィック画面でアニメーション表示させるという無茶なことをしていますが、それを除けばただのリバーシです。音はありません。

▪ごーじゃすリバーシの説明 [retropc.net]

ダウンロード

XEiJ_0150129.zip (3.1MB)

ソースコード

ソースコードを HTML で見る (20.7MB)

追加・修正されたソースコードを送っていただく場合のお願い

XEiJ の使用許諾条件と両立できない条件が付されているソフトウェアのソースコードを XEiJ に取り込むことはできません。送っていただくことができるソースコードは、送ってくださった方自身が追加・修正された部分の著作権を保持していると考えて差し支えないものに限らせていただきます。

コンパイル手順

以下は Windows 7 (64 ビット) の場合です。

Java SE 開発環境

JDK を使用します。Java SE - Downloads | Oracle Technology Network | Oracle [www.oracle.com] から jdk-8u31-windows-x64.exe をダウンロードしてインストールします。

環境変数 Path

環境変数 Path に JDK の bin ディレクトリのパスを追加します。コントロールパネル→システム→システムの詳細設定→環境変数と進み、システム環境変数の Path を選択して編集、変数値の末尾に JDK の bin ディレクトリを追加します。このとき既存のパスを壊さないように注意します。JDK の bin ディレクトリのパスは JDK のバージョンによって異なります。

;C:\Program Files\Java\jdk1.8.0_31\bin

コンパイル

JDK 8 で LiveConnect を使うため、netscape/javascript/JSObject.class が jfxrt.jar ではなく plugin.jar から読み込まれるようにする必要があります。-extdirs "" を指定して jfxrt.jar を外し、代わりにクラスパスに plugin.jar と javaws.jar と deploy.jar を加えます。

コマンドプロンプトの場合
>mkdir class
>del /q class\*.class
>javac -d class -encoding UTF-8 XEiJ.java -extdirs "" -cp "C:\Program Files\Java\jre1.8.0_31\lib\plugin.jar;C:\Program Files\Java\jre1.8.0_31\lib\javaws.jar;C:\Program Files\Java\jre1.8.0_31\lib\deploy.jar"
>jar cfe XEiJ.jar XEiJ -C class . -C . IPLROM.DAT IPLROMXV.DAT IPLROMCO.DAT IPLROM30.DAT CGROM_XEiJ.DAT HUMAN.SYS COMMAND.X license_XEiJ.txt license_FSHARP.txt license_MAME.txt
Cygwin64 Terminal の場合
$ mkdir class
$ rm -f class/*.class
$ javac -d class -encoding UTF-8 XEiJ.java -extdirs "" -cp "C:/Program Files/Java/jre1.8.0_31/lib/plugin.jar;C:/Program Files/Java/jre1.8.0_31/lib/javaws.jar;C:/Program Files/Java/jre1.8.0_31/lib/deploy.jar"
$ jar cfe XEiJ.jar XEiJ -C class . -C . IPLROM.DAT IPLROMXV.DAT IPLROMCO.DAT IPLROM30.DAT CGROM_XEiJ.DAT HUMAN.SYS COMMAND.X license_XEiJ.txt license_FSHARP.txt license_MAME.txt

起動方法

コマンドライン

XEiJ.jar を実行します。main のクラスは jar ファイルのマニフェストに書いてあるので指定する必要はありません。パラメータで起動デバイスを指定できます。

Human68k version 3.02 のシステムディスクから起動する
>java -jar XEiJ.jar -boot HUMAN302.XDF
カレントディレクトリを起動ドライブにして起動する
>java -jar XEiJ.jar -boot .

Java アプレット

<object> または <applet> を使って HTML ファイルにアプレットを埋め込みます。必要なファイルをすべて jar ファイルに入れ、archive の値の XEiJ.jar の後にコンマで区切って並べます。HTML ファイルをモダンブラウザで開いて Java アプレットの実行を許可すると XEiJ が起動します。

<object> (HTML5)

human.htm (抜粋)
<div>
  <div style="text-align:center">
    <object height="639"
            id="XEiJApplet"
            type="application/x-java-applet;version=1.8"
            width="768">
      <param name="archive" value="XEiJ.jar,HUMAN302.jar,SXWIN315.jar"/>
      <param name="boxbgcolor" value="#000"/>
      <param name="code" value="XEiJ$XEiJApplet.class"/>
      <param name="mayscript" value="true"/>
      <param name="model" value="Hybrid"/>
      <param name="clock" value="EXPERT"/>
      <param name="boot" value="HUMAN302.XDF"/>
      <param name="fd1" value="SXWIN315.XDF"/>
      <param name="sound" value="off"/>
      <param name="interpolation" value="nearest"/>
      Java プラグインがインストールされていないか、実行が許可されていません。
    </object>
  </div>
</div>

<applet> (HTML4)

human.htm (抜粋)
<div>
  <div style="text-align:center">
    <applet archive="XEiJ.jar,HUMAN302.jar,SXWIN315.jar"
            code="XEiJ$XEiJApplet.class"
            height="639"
            id="XEiJApplet"
            mayscript
            width="768">
      <param name="boxbgcolor" value="#000">
      <param name="model" value="Hybrid">
      <param name="clock" value="EXPERT">
      <param name="boot" value="HUMAN302.XDF">
      <param name="fd1" value="SXWIN315.XDF">
      <param name="sound" value="off">
      <param name="interpolation" value="nearest">
      Java プラグインがインストールされていないか、実行が許可されていません。
    </applet>
  </div>
</div>

Java Web Start

jnlp ファイルへのリンクをクリックすると XEiJ が起動します。Google Chrome の場合は jnlp ファイルがダウンロードされると画面下に表示されるボタンをクリックします。デフォルトのセキュリティ設定では全画面表示が使えません。

human.jnlp
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+"
      codebase="http://stdkmd.com/xeij/"
      href="human.jnlp">
  <information>
    <title>Human68k version 3.02 のシステムディスク - XEiJ</title>
    <vendor>XEiJ</vendor>
    <homepage href="http://stdkmd.com/xeij/"/>
    <description>無償公開された Human68k version 3.02 のシステムディスク です。とりあえずコマンドプロンプトが表示されるところを見たい人と X-BASIC を動かしてみたい人向け。</description>
    <icon href="XEiJ.png"/>
    <offline-allowed/>
  </information>
  <related-content href="http://retropc.net/x68000/software/sharp/human302/"/>
  <resources>
    <j2se version="1.8+"/>
    <jar href="XEiJ.jar"/>
    <jar href="HUMAN302.jar"/>
    <jar href="SXWIN315.jar"/>
  </resources>
  <application-desc main-class="XEiJ">
    <argument>-model=Hybrid</argument>
    <argument>-clock=EXPERT</argument>
    <argument>-boot=HUMAN302.XDF</argument>
    <argument>-fd1=SXWIN315.XDF</argument>
    <argument>-sound=off</argument>
    <argument>-interpolation=nearest</argument>
  </application-desc>
</jnlp>

使用許諾条件/著作権/免責

license_XEiJ.txt
--------------------------------------------------------------------------------
XEiJ License (2014-04-17)

  You can use, modify and redistribute the XEiJ (X68000 Emulator in Java) if the
  following conditions are met.

  1. Derivatives of the XEiJ must be distributed without any pay.

  2. Redistributions of the XEiJ must include those source codes necessary to
     make them.

  3. You must attach this text to redistributions of the XEiJ.

Copyright

  Source codes and data of the XEiJ except for the following parts are
  copyrighted by Makoto Kamada.

  1. Freely-published basic softwares for X68000 including IPLROM.DAT, HUMAN.SYS
     and so on are copyrighted by each right-holder company.
     http://retropc.net/x68000/software/sharp/

  2. The emulation algorithm of YM2151 is based on ym2151.c of the MAME.
     http://mamedev.org/

  3. The default font data is composed of several fonts designed by Keitarou
     Hiraki and Num Kadoma.
     http://hp.vector.co.jp/authors/VA000874/
     http://www.geocities.jp/littlimi/

Disclaimer

  XEiJ is provided as is. No warranty against disadvantages caused by use and/or
  inability to use this software is given regardless of whether it had been able
  to be foreseen.
--------------------------------------------------------------------------------
XEiJ 使用許諾条件 (2014-04-17)

  XEiJ (X68000 Emulator in Java) は以下の条件で使用し、改変し、再配布することが
  できます。

  1. XEiJ の派生物は無償で配布されなければなりません。

  2. XEiJ の再配布にはそれを make するために必要なソースコードを含めなければなり
     ません。

  3. XEiJ の再配布には本文書を添付しなければなりません。

著作権

  XEiJ の以下を除くソースコードとデータは Makoto Kamada の著作物です。

  1. IPLROM.DAT、HUMAN.SYS などを含む無償公開された X68000 用の基本的なソフトウ
     ェアは権利各社の著作物です。
     http://retropc.net/x68000/software/sharp/

  2. YM2151 のエミュレーションアルゴリズムは MAME の ym2151.c を元にしています。
     http://mamedev.org/

  3. デフォルトのフォントデータは平木敬太郎氏と門真なむ氏によってデザインされた
     いくつかのフォントで構成されています。
     http://hp.vector.co.jp/authors/VA000874/
     http://www.geocities.jp/littlimi/

免責

  XEiJ は現状のまま (AS-IS) 提供されます。このソフトウェアを用いたことあるいは用
  いることができなかったことで不利益が生じたとしても、それが予見可能だったかどう
  かに関わらず補償されません。
--------------------------------------------------------------------------------

謝辞

X68000 の基本的なソフトウェアの無償公開に尽力された権利各社およびシャープ・プロダクツ・ユーザーズ・フォーラムの方々、美しいフォントを公開されている平木敬太郎さん、門真なむさん、実行サンプルとして使わせていただいたフリーソフトウェアの作者の方々、動作報告と応援のメッセージを寄せてくださった皆さん、ありがとうございます。

参考資料

X68000 関連

X68000 全般

Inside X68000 (桑野雅彦著)

CZ-674C サービスマニュアル (シャープ)

#1000 技術資料 (シャープ)

MPU

M68000 Family Programmer's Reference Manual (Motorola)

MC68030 ユーザーズ・マニュアル (Motorola)

MC68881/882 User's Manual (Motorola)

060ISP, 060FPSP (Motorola)

FPU

研究解説 : チェビシェフ多項式による関数近似について [repository.dl.itc.u-tokyo.ac.jp] (岡本通子著)

基礎数値解析‐偏微分方程式の数値シミュレーション技法入門‐ [www.made.gifu-u.ac.jp] (田中光宏著)

SPARC64(TM) VIIIfx Extensions 日本語版 [jp.fujitsu.com] (富士通)

サルでも分かるCORDICアルゴリズム [teamcoil.sp.u-tokai.ac.jp] (遠藤雅守さん)

FM 音源

MAME | Multiple Arcade Machine Emulator [mamedev.org] (Nicola Salmoria and the MAME team)

ADPCM

S44PLAY.X [retropc.net]

逆アセンブルリスト

FDDEVICE.X, FLOAT2.X, FLOAT4.X, FORMAT.X, HUMAN.SYS など

その他

いろいろ

Java 関連

Java SE

Java Platform Standard Edition 8ドキュメント [docs.oracle.com] (Oracle)

Java アプレット

applet、object、および embed タグの使用 [docs.oracle.com] (Oracle)

LiveConnect のサポート [docs.oracle.com] (Oracle)

LiveConnect の概要 - JavaScript | MDN [developer.mozilla.org] (Mozilla)

Java Web Start

Java Web Start とは何ですか。また、どうやって起動しますか。 [www.java.com] (Oracle)

Java(TM) Web Start [docs.oracle.com] (Oracle)

Java Sound API

Java Sound Technology [docs.oracle.com] (Oracle)

X68000 エミュレータ

XM6i - クロスプラットフォーム X68000/X68030 エミュレータ [xm6i.org] (isaki さん [twitter.com]) … NetBSD/i386、NetBSD/amd64、CentOS、Mac OS X、Win32

XM6 TypeG [www.geocities.jp] (GIMONS さん [twitter.com]) … Win32、Win64

X68000エミュレータXM6 version 2.05改 [coexe.web.fc2.com] (co さん [twitter.com]) … Win32

hissorii/px68k · GitHub [github.com] (ひっそりぃさん [twitter.com]) … PSP、Android、iOS

X68000 Emulator for Macintosh:Top [www22.ocn.ne.jp] (YOH さん) … Mac OS X

XM6 [yohkai.no-ip.info] (作者は PI. さん、リンク先はよ~かいさんのミラー) … Win32

WinX68k高速版/WinX68030の部屋 [www.geocities.jp] (tamu さん) … Win32

EX68 X68000 Emulator for Windows95/98/NT/2000 [www.ksky.ne.jp] (yamama さん) … Win32

ROM / Human68k

無償公開されたシャープのソフトウェア - ソフトウェアライブラリ - X68000 LIBRARY [retropc.net]

連絡先

ツイッター

@kamadox [twitter.com]

メール

m_kamada [at] nifty.com