Version : 0.23.09.15 TEST バージョン : 0.23.09.15 TEST
Author : Makoto Kamada 作者 : Makoto Kamada
Website : https://stdkmd.net/xeij/ ウェブサイト : https://stdkmd.net/xeij/
XEiJ (X68000 Emulator in Java) is an experimental X68000 emulator written in the Java language. Although XEiJ is an emulator, the sameness to real machines over the details of peripheral circuits is not necessarily top priority. I enjoy thinking new form of X68000 rather than copying old form. When I hit on an idea of an implementation method or a new function, I begin to write a program first of all even if I can not see its entire structure. If the idea goes nowhere, I put it aside until another idea occurs to me. I repeat such things. As a result, many unfinished parts are seen here and there. But I believe that it is meaningful to release XEiJ to the public if any comment in the source code helps someone. XEiJ (X68000 Emulator in Java) は Java 言語で記述された実験的な X68000 エミュレータです。エミュレータといっても周辺回路の隅々まで実機とまったく同じものを作ろうとしているわけではなく、どちらかと言えば X68000 の新しい形を考えることを楽しんでいます。実装方法のアイデアや新しい機能を思い付いたら全体像など見えなくてもとりあえずプログラムを書き始め、詰まったらまた何か湧いてくるまで脇に置いておく、そんなことを繰り返しているので ソースコード は作りかけのところばかりですが、注釈のどれか 1 つでも誰かの役に立つことがあれば公開する意味があると思っています。
This is a test version. New features may be substantially changed or removed in the future. これはテスト版です。 新しい機能は今後大幅に変更されるか廃止される可能性があります。
To stabilize music playback during read/write, data transfer between buffer and memory is divided every 128 bytes. 読み書き中の音楽再生を安定させるために、バッファ・メモリ間のデータ転送を 128 バイト毎に分割するようにしました。
To reduce wait cycles, data transfer between buffer and memory has been changed from byte units to longword units. ウェイトサイクルを減らすために、バッファ・メモリ間のデータ転送をバイト単位からロングワード単位に変更しました。
The state of the Read-only checkbox is stored in the parameter fdreadonly for FD, the parameter sareadonly for SASI, the parameter screadonly for SCSI and the parameter hfreadonly for HFS. The Read-only checkbox in the dialog is valid for the image files and directories selected in the dialog. Image files specified without ":R" in the parameters or dropped into the window will always open with write permission. 書き込み禁止チェックボックスの状態が、FD はパラメータ fdreadonlyに、SASI はパラメータ sareadonlyに、SCSI はパラメータ screadonlyに、そして HFS はパラメータ hfreadonlyに保存されます。 ダイアログにある書き込み禁止チェックボックスは、ダイアログで選択したイメージファイルとディレクトリに対して有効です。 パラメータで「:R」を付けずに指定したイメージファイルやウインドウにドロップしたイメージファイルは、常に書き込みが許可された状態で開きます。
Radio buttons have been added to the left of the "Reboot from it" button and the left of the "Open" button so that you can choose which button is pressed when you double-click on a file name. Default behavior when double-clicking on a file name has been changed from "Reboot from it" to "Open". This setting is stored in the parameter fdappreboot for FD, the parameter saappreboot for SASI, the parameter scappreboot for SCSI and the parameter hfappreboot for HFS. 「ここから再起動」ボタンと「開く」ボタンの左側にラジオボタンを追加し、ファイル名をダブルクリックしたときどちらのボタンが押されたことにするか選べるようにしました。 ファイル名をダブルクリックしたときのデフォルトの動作を「ここから再起動」から「開く」に変更しました。 この設定が、FD はパラメータ fdapprebootに、SASI HD はパラメータ saapprebootに、SCSI はパラメータ scapprebootに、そして HFS はパラメータ hfapprebootに保存されます。
A history of the selected image files and directories is stored in the parameter fdhistoryN for FD, the parameter sahistoryN for SASI, the parameter schistoryN for SCSI and the parameter hfhistoryN for HFS. Selecting "Clear history" at the bottom of the history will display a dialog asking if you want to clear the history. 選択したイメージファイルとディレクトリの履歴が、FD はパラメータ fdhistoryNに、SASI HD はパラメータ sahistoryNに、SCSI はパラメータ schistoryNに、そして HFS はパラメータ hfhistoryNに保存されます。 履歴の一番下の「履歴を消去する」を選択すると、履歴を消去するか問い合わせるダイアログが表示されます。
The behavior when a disk image file is dropped onto a window has been changed from "Reboot from it" to "Open". ディスクイメージファイルをウインドウにドロップしたときの動作を、「ここから再起動」から「開く」に変更しました。
A second bridge checkbox has been added. When a 2-byte character that straddles a 16-byte boundary is written at the end of a line, you can select whether the same character is also written at the beginning of the next line. セカンドブリッジチェックボックスを追加しました。16 バイト境界を跨ぐ 2 バイトの文字を行末に書いたとき、同じ文字を次の行の行頭にも書くか選択できます。
When writing a character that straddles a 16-byte boundary both at the end of a line and at the beginning of the next line, draw a line on either side of the character area to darken the overflow of the character. 16 バイト境界を跨ぐ文字を行末と次の行の行頭の両方に書くとき、キャラクタエリアの左右に線を描いて文字のはみ出した部分を暗くします。
Only the terminal will expand and contract when the window size is changed. ウインドウの大きさを変更したときターミナルだけ伸び縮みするようにしました。
Fixed a bug that caused an ArrayIndexOutOfBoundsException when executing print gcvt(1e+18,19) in X-BASIC when the FE function instruction is enabled. (Thanks TcbnErik) FE ファンクション命令を有効にしているとき X-BASIC で print gcvt(1e+18,19) を実行すると ArrayIndexOutOfBoundsException が出るバグを修正しました。(Thanks TcbnErik)
Fixed a bug that caused an ArrayIndexOutOfBoundsException when executing print gcvt(1,0) in X-BASIC when the FE function instruction is enabled. FE ファンクション命令を有効にしているとき X-BASIC で print gcvt(1,0) を実行すると ArrayIndexOutOfBoundsException が出るバグを修正しました。
When the brightness specified by the parameter hhssbb is in descending order, the color scheme of the keyboard is switched so that the keys do not appear concave. パラメータ hhssbb で指定された輝度が降順のときキーボードの配色を入れ替えてキーが凹んで見えないようにしました。
060turbo.sys 0.59 is now included. The changes from 0.58 are as follows. 060turbo.sys 0.59 を同梱しました。0.58 からの変更点は以下の通りです。
Starting up while holding down the Q key will enter a mode in which the startup screen is not displayed. This mode is released by starting up while holding down the L, N, or V key. This mode is stored in bit 1 of $00ED0095 in the battery-backed SRAM. Q キーを押しながら起動すると起動画面を表示しないモードになります。 このモードは L キー、N キー、V キーのいずれかを押しながら起動すると解除されます。 このモードはバッテリバックアップ SRAM の $00ED0095 のビット 1 に保存されます。
As of this writing, the latest OpenJDK is 20.0.2 2023-07-18. Older versions of JDK may not work. Please use the latest OpenJDK if possible. これを書いている時点で最新の OpenJDK は 20.0.2 2023-07-18 です。 これより古いバージョンの JDK では動作しないかも知れません。 可能な限り最新の OpenJDK を使用してください。
"Default" in the boot device menu has been changed to "Follow settings in SWITCH.X". 起動デバイスメニューの「既定」の表記を「SWITCH.X の設定に従う」に変更しました。
Changed the color scheme of the icons of unconnected units in the file menu. ファイルメニューの未接続のユニットのアイコンの配色を変更しました。
The interval between motor ON, rising READY and state transition interrupt requests has been changed to avoid the problem of IOCS _B_DRVSNS hanging up. IOCS _B_DRVSNS がハングアップする不具合を回避するため、モータ ON と READY 立ち上がりと状態遷移割り込み要求の間隔を変更しました。
The maximum waiting time for GIF animation recording was changed from 10 to 30 seconds. GIF アニメーション録画の待ち時間の最大値を 10 秒から 30 秒に変更しました。
Added use high memory on 060turbo checkbox to the high memory on X68030/Xellent30 menu. X68030 and Xellent30 can use large amount of high memory starting from address $10000000. If enabled, the previous high memory starting at $01000000 will no longer be available. This setting is stored in the parameter highmemory060turbo. X68030/Xellent30 のハイメモリメニューに 060turbo のハイメモリを使うチェックボックスを追加しました。X68030 と Xellent30 でアドレス $10000000 から始まる大容量のハイメモリが使えます。 これを有効にすると従来の $01000000 から始まるハイメモリは使えなくなります。 この設定はパラメータ highmemory060turboに保存されます。
Added 384 MB, 512 MB, and 768 MB to the capacity of high memory on 060turbo. You can select them in the high memory on 060turbo menu and parameter localmemory. While increasing the capacity of high memory increases what can be done, software that does not support high memory is more likely to malfunction. It is recommended to set it to 128 MB or less, the same as the actual device, when not needed. Also note that saving the contents of a large amount of high memory will cause the configuration file to become huge and take longer to start up and close. 060turbo のハイメモリの容量に 384MB、512MB、768MB を追加しました。 060turbo のハイメモリメニューとパラメータ localmemoryで選択できます。 ハイメモリの容量を増やすことでできることが増える一方、ハイメモリに対応していないソフトウェアは誤動作しやすくなります。 必要でないときは実機と同じ 128MB 以下に設定しておくことをお勧めします。 また、大容量のハイメモリの内容を保存すると設定ファイルが巨大化して起動と終了に時間がかかるので注意してください。
The RTC date and time are displayed on the IPLROM 1.6 startup screen. The date and time will be strikethrough if there is an incorrect BCD, a non-existent date and time, an obviously past date, or an incorrect day of the week. IPLROM 1.6 の起動画面に RTC の日時が表示されます。 不正な BCD、存在しない日時、明らかに過去の日付、または曜日の誤りがあるとき、日時に取り消し線が表示されます。
Changed unimplemented exception handling routines in IPLROM 1.6. When a bus error or address error occurred on the 68000, the exception stack frame is no longer dug up. The exception stack frame for bus errors and address errors on the 68000 is deeper than the status register with additional information such as the direction of transfer and the address that was attempted to be accessed. The previous unimplemented exception handling routines would dig up the exception stack frame to the location of the status register, so the TRAP#14 (error display) routine could not reference the additional information. IPLROM 1.6の未実装例外処理ルーチンを変更しました。68000 でバスエラーまたはアドレスエラーが発生したとき、例外スタックフレームを掘り起こさないようにしました。68000 のバスエラーとアドレスエラーの例外スタックフレームは、転送方向やアクセスしようとしたアドレスなどの追加情報がステータスレジスタよりも深い場所にあります。 従来の未実装例外処理ルーチンはステータスレジスタの位置まで例外スタックフレームを掘り起こしてしまうため、TRAP#14(エラー表示) ルーチンが追加情報を参照することができませんでした。
A simple TRAP#14 (error display) routine has been added to IPLROM 1.6. When an error occurs during startup, the error code and program counter are displayed. When a bus error or address error occurs, it also displays the transfer direction and the address that was attempted to be accessed. When nothing is displayed and the unit hangs up, the program counter may be checked by pressing the INTERRUPT switch. Conventionally, when an error occurs during startup, the message "An error has occurred. Please reset." but it was not clear where or what kind of error had occurred. IPLROM 1.6に簡易的な TRAP#14(エラー表示) ルーチンを追加しました。 起動中にエラーが発生したとき、エラーコードとプログラムカウンタを表示します。 バスエラーまたはアドレスエラーが発生したときは、転送方向とアクセスしようとしたアドレスも表示します。 何も表示されずハングアップしたとき、INTERRUPT スイッチを押すとプログラムカウンタを確認できるかも知れません。 従来は、起動中にエラーが発生したとき「エラーが発生しました。リセットしてください。」と表示されるだけで、どこでどのようなエラーが発生したのか分かりませんでした。
jSerialComm is used for connecting to the JoyPortUkun except Windows. You may be able to use the JoyPortUkun on macOS and Linux. On Windows, the conventional native code is used for connecting to the JoyPortUkun, but jSerialComm can also be selected. Added parameter ukunjsc. Windows 以外のとき、じょいぽーと U 君との接続にjSerialCommを使用します。macOS や Linux でもじょいぽーと U 君が使えるかも知れません。Windows のときはじょいぽーと U 君との接続に従来の native コードを使用しますが、jSerialComm も選択できます。 パラメータ ukunjscを追加しました。
Added output interval adjustment to stabilize the initialization sequence of Shiromadokun. The interval between writes to PPI is measured in virtual time and real time, respectively. If the virtual time interval is shorter, a wait cycle is added. If the real time interval is shorter, an empty loop is added with an upper limit of 500 us to reduce the gap between the virtual time interval and the real time interval. The load factor increases when adding an empty loop. This feature is enabled by parameter ukuninterval. 白窓君の初期化シーケンスを安定させるため、出力間隔調整を追加しました。PPI への書き込みの間隔を仮想時間と実時間でそれぞれ計測します。 仮想時間の間隔の方が短ければウェイトサイクルを、実時間の間隔の方が短ければ空ループを、500us を上限として追加することで、仮想時間の間隔と実時間の間隔のずれを軽減します。 空ループを追加するとき負荷率が高くなります。 この機能はパラメータ ukunintervalで有効になります。
Keyboard display now reflects LED brightness (bright, slightly bright, slightly dark, dark). The following is an example of using KeyWitch to make LEDs blink. キーボードの表示に LED の明るさ (明るい、やや明るい、やや暗い、暗い) を反映させるようにしました。 以下は KeyWitch を用いて LED を明滅させる例です。
A:\>echo &unlockblink $19 0 0 1 2 3 3 2 1 > blink.env A:\>KeyWitch blink.env
The functions performed when the mouse wheel is rotated on the screen were Trace and Step, but now you can choose to left-click, right-click, or do nothing. When left and right click are selected, left click is performed when the mouse wheel is rotated down and right click is performed when the mouse wheel is rotated up. The buttons are pressed for 100 ms. Added the mouse wheel menu. Added parameter mousewheel. 画面上でマウスホイールを回転させたとき実行される機能はトレースとステップでしたが、左クリックと右クリックおよび何もしないを選択できるようにしました。 左クリックと右クリックを選択すると、マウスホイールを下へ回転させたとき左クリック、上へ回転させたとき右クリックになります。 ボタンが押されている時間は 100ms です。 マウスホイールメニューを追加しました。 パラメータ mousewheelを追加しました。
From the above three, you can choose two to connect. In the following, they are written as RS-232C, terminal, and serial port, respectively. 以上の 3 つから、2 つを選んで接続できるようにしました。 以下ではそれぞれ RS-232C、ターミナル、シリアルポートと書きます。
For example, small file exchanges can be made between the emulator and the actual machine. 例えば、エミュレータと実機の間で小規模なファイル交換ができます。
The sxmr.bas and TeraTerm written in file exchange with Windows are no longer needed and only XEiJ and ZM.X are needed for file exchange. RSDRV.SYS is on the Human68k 3.0 system disk and is used to set flow control to RTS. Windows とのファイル交換に書いた sxmr.bas と TeraTerm は不要になり、XEiJ と ZM.X だけでファイル交換ができます。RSDRV.SYS は Human68k 3.0 のシステムディスクに入っていてフロー制御を RTS にするとき使います。
Select RS-232C and terminal from the config menu to open the RS232C and terminal window. The RS-232C and terminal window is divided into connection, communication settings, transfer, and terminal. 「設定」メニューの「RS-232C とターミナル」を選択すると「RS232C とターミナル」ウインドウが開きます。 「RS232C とターミナル」ウインドウは「接続」、「通信設定」、「転送」、「ターミナル」に分かれています。
In the "Connection" section of the "RS232C and terminal" window, you can select whether to connect to a terminal (Terminal), RS-232C (AUX), or serial port (COM3, etc.). This setting is stored in the parameter rs232cconnection. Pressing the "Refresh" button will re-search the serial port. 「RS232C とターミナル」ウインドウの「接続」では、ターミナル (Terminal)、RS-232C(AUX)、シリアルポート (COM3 など) のどれとどれを接続するか選択します。 この設定はパラメータ rs232cconnectionに保存されます。 「更新」ボタンを押すとシリアルポートが再検索されます。
When a terminal (Terminal) and RS-232C (AUX) are connected, the ROM debugger can be operated with the terminal as before. Also, when you want to copy a string of characters displayed on the screen by a command, you can easily copy it by using "CTTY AUX" to move the command prompt to the terminal and execute the command. ターミナル (Terminal) と RS-232C(AUX) を接続すると、従来通りターミナルで ROM デバッガを操作できます。 また、コマンドが画面に表示した文字列をコピーしたいとき、「CTTY AUX」でコマンドプロンプトをターミナルに移してコマンドを実行すると簡単にコピーできます。
By connecting a serial port (e.g. COM3) and RS-232C (AUX), serial communication between X680x0 on XEiJ and a device outside the host machine is possible. You may be able to exchange files with the actual X680x0 machine and even play communication games. シリアルポート (COM3 など) と RS-232C(AUX) を接続すると、XEiJ 上の X680x0 とホストマシンの外にある機器の間でシリアル通信ができます。X680x0 実機とファイルのやり取りをしたり、通信対戦もできるかも知れません。
If you connect a serial port (COM3, etc.) to a terminal (Terminal), you can move the command prompt of the actual X680x0 device to the terminal. In the "Communication settings" section, match the settings with those of the actual device and enter "CTTY AUX" on the actual device. シリアルポート (COM3 など) とターミナル (Terminal) を接続すると、X680x0 実機のコマンドプロンプトをターミナルに移すことができます。 「通信設定」で実機と設定を合わせて実機で「CTTY AUX」と入力します。
"Communication settings" in the "RS232C and terminal" window is used when a serial port (e.g. COM3) is connected to a terminal (Terminal). It selects baud rate, data bits, parity, stop bit, and flow control. These settings are stored in the parameter terminalsettings. 「RS232C とターミナル」ウインドウの「通信設定」は、シリアルポート (COM3 など) とターミナル (Terminal) を接続しているときに使います。 ボーレート、データビット、パリティ、ストップビット、フロー制御を選択します。 この設定はパラメータ terminalsettingsに保存されます。
The "Send file" button under "Transfer" in the "RS232C and terminal" window is used to transfer a small file from the host to the actual X680x0 device when the serial port (COM3, etc.) is connected to the terminal (Terminal). Type "CTTY AUX" on the actual device to move the command prompt of the actual device to the terminal, press the "Send file" button, select a file, and press the "Send" button. The selected file is converted into a self-restoring file named a.r that does not contain any control code, and is sent in the following order: string "copy aux a.r", new line, contents of a.r, string "a.r", new line. As long as COMMAND.X is running on the actual device, the process of converting a binary file into a file that does not contain control codes, sending it, and restoring it is done automatically. 「RS232C とターミナル」ウインドウの「転送」の「ファイル送信」ボタンは、シリアルポート (COM3 など) とターミナル (Terminal) を接続しているとき、ホストから X680x0 実機に小さいファイルを転送したいときに使います。 実機で「CTTY AUX」と入力して実機のコマンドプロンプトをターミナルに移し、「ファイル送信」ボタンを押してファイルを選択して、「送信」ボタンを押します。 選択されたファイルが、制御コードを含まない a.r という自己復元ファイルに変換され、文字列「copy aux a.r」、改行、a.r の内容、文字列「a.r」、改行の順に送信されます。 実機で COMMAND.X さえ動いていれば、バイナリファイルを制御コードを含まないファイルに変換して送信して復元する作業が自動で行われます。
This transfer function is a simple one that uses the COMMAND.X copy command. The file to be transferred must fit into the memory of the actual device, including the area needed for decompression. Once the transfer is started, it cannot be stopped. The transfer may not be stopped due to communication errors. If the decoder is corrupted, a white window may appear. If the file is corrupted, a CRC error will be displayed. If the transfer fails, check the flow control, lower the baud rate, and try again. Data bits must be 8 bits. この転送機能は COMMAND.X の copy コマンドを用いる簡易的なものです。 転送するファイルは解凍に必要な領域を含めて実機のメモリに収まらなければなりません。 転送を始めたら途中で止められません。 通信エラーで転送が止まらなくなることがあるかも知れません。 デコーダが破損したときは白窓が表示されるかも知れません。 ファイルが破損したときは CRC エラーが表示されます。 転送に失敗するときはフロー制御を確認してボーレートを下げてやり直してください。 データビットは 8 ビットに限ります。
Fixed a bug that prevented opening hard disk image files initialized with SCSIFORMAT.X included with SxSI. (Thanks りっきーさん) SxSI に付属している SCSIFORMAT.X で初期化されたハードディスクのイメージファイルを開くことができないバグを修正しました。(Thanks りっきーさん)
Write and Verify(10) is implemented with the same behavior as Write(10). Write and Verify(10) を Write(10) と同じ動作で実装しました。
060turbo.sys 0.58 is now included. The changes from 0.56 are as follows. 060turbo.sys 0.58 を同梱しました。0.56 からの変更点は以下の通りです。
A cyber stick has been added to the devices that can be connected to the joystick port. The analog mode can be operated with an XInput gamepad, and the digital mode can be operated with an XInput gamepad or keyboard. Cyberstick button assignments can be set in the joystick port settings window or with the parameters cyberstickanalogN and cyberstickdigitalN. ジョイスティックポートに接続できるデバイスにサイバースティックを追加しました。 アナログモードは XInput 方式のゲームパッドで、また、デジタルモードは XInput 方式のゲームパッドまたはキーボードで操作できます。 サイバースティックのボタンの割り当てはジョイスティックポート設定ウインドウまたはパラメータcyberstickanalogNおよびcyberstickdigitalNで設定できます。
When using Windows, the normal 2 button pad, the MEGA DRIVE 3 button pad, the MEGA DRIVE 6 button pad, and the cyber stick can be operated with an XInput gamepad. This functionality can be configured in the joystick port settings window or with the parameter xinput. Place the included xeijwin.dll in the current directory or in a directory in your path. Windows のとき、ノーマル 2 ボタンパッド、メガドラ 3 ボタンパッド、メガドラ 6 ボタンパッドおよびサイバースティックを XInput 方式のゲームパッドで操作できます。 この機能はジョイスティックポート設定ウインドウまたはパラメータ xinputで設定できます。 付属の xeijwin.dll をカレントディレクトリまたはパスの通っているディレクトリに置いてください。
――Read more―― ―― 続きを読む ――――Hide more―― ―― 続きを隠す ――
I would like to thank: Right-holder companies and staffs of the SHARP PRODUCTS USERS FORUM who made efforts to distribute the basic software products of X68000 for free to the public. Keitarou Hiraki and Num Kadoma, they distribute beautiful fonts. Authors of free software that are used as execution examples of XEiJ. Everyone who reported problems and supported XEiJ by warm messages. X68000 の基本的なソフトウェアの無償公開に尽力された権利各社およびシャープ・プロダクツ・ユーザーズ・フォーラムの方々、美しいフォントを公開されている平木敬太郎さん、門真なむさん、実行サンプルとして使わせていただいたフリーソフトウェアの作者の方々、動作報告と応援のメッセージを寄せてくださった皆さん、ありがとうございます。