Table of contents目次

  1. Past changes 過去の更新

Back to recent changes 最近の更新に戻る

1. Past changes 過去の更新

0.23.10.08

Execution environment 実行環境

As of this writing, the latest OpenJDK is 21. Older versions of JDK may not work. Please use the latest OpenJDK if possible. これを書いている時点で最新の OpenJDK は 21 です。 これより古いバージョンの JDK では動作しないかも知れません。 可能な限り最新の OpenJDK を使用してください。

Host file system ホストファイルシステム

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. ウェイトサイクルを減らすために、バッファ・メモリ間のデータ転送をバイト単位からロングワード単位に変更しました。

Dialog to open image files and directories イメージファイルとディレクトリを開くダイアログ

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". ディスクイメージファイルをウインドウにドロップしたときの動作を、「ここから再起動」から「開く」に変更しました。

Memory dump list メモリダンプリスト

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 バイト境界を跨ぐ文字を行末と次の行の行頭の両方に書くとき、キャラクタエリアの左右に線を描いて文字のはみ出した部分を暗くします。

RS-232C and terminal RS-232C とターミナル

Only the terminal will expand and contract when the window size is changed. ウインドウの大きさを変更したときターミナルだけ伸び縮みするようにしました。

FE function instructions FE ファンクション命令

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 が出るバグを修正しました。

Keyboard display キーボードの表示

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 で指定された輝度が降順のときキーボードの配色を入れ替えてキーが凹んで見えないようにしました。

misc/060tsys/060turbo.sys misc/060tsys/060turbo.sys

060turbo.sys 0.59 is now included. The changes from 0.58 are as follows. 060turbo.sys 0.59 を同梱しました。0.58 からの変更点は以下の通りです。

IPLROM 1.6 IPLROM 1.6

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 に保存されます。

misc/optime.x misc/optime.x

Fixed a bug that caused a bus error if "..." written in the command line was not closed. コマンドラインに書かれた "…" が閉じていないとバスエラーが出るバグを修正しました。

Z keyboard support Z キーボード対応

Changed device path search criteria from "paths containing the first vid_33dd&pid_0011&mi_01&col05 found" to "paths containing the last vid_33dd&pid_0011&mi_01&col05 found". デバイスパスの検索条件を「最初に見つかった vid_33dd&pid_0011&mi_01&col05 を含むパス」から「最後に見つかった vid_33dd&pid_0011&mi_01&col05 を含むパス」へ変更しました。

The debug flag checkbox has been added to the Z keyboard menu. If it is turned on before connecting, information will be output when connecting. Z キーボードメニューデバッグフラグチェックボックスを追加しました。 接続する前に ON にしておくと接続するとき情報が出力されます。

Fixed a problem in which the CLR key was sometimes entered when the Z keyboard connection was terminated. Z キーボードの接続を終了したとき CLR キーが入力されることがある不具合を修正しました。

0.23.08.08

Execution environment 実行環境

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 を使用してください。

Boot device menu 起動デバイスメニュー

"Default" in the boot device menu has been changed to "Follow settings in SWITCH.X". 起動デバイスメニューの「既定」の表記を「SWITCH.X の設定に従う」に変更しました。

File menu ファイルメニュー

Changed the color scheme of the icons of unconnected units in the file menu. ファイルメニューの未接続のユニットのアイコンの配色を変更しました。

FDC

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 立ち上がりと状態遷移割り込み要求の間隔を変更しました。

GIF animation recording GIF アニメーション録画

The maximum waiting time for GIF animation recording was changed from 10 to 30 seconds. GIF アニメーション録画の待ち時間の最大値を 10 秒から 30 秒に変更しました。

High memory ハイメモリ

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 以下に設定しておくことをお勧めします。 また、大容量のハイメモリの内容を保存すると設定ファイルが巨大化して起動と終了に時間がかかるので注意してください。

IPLROM 1.6 IPLROM 1.6

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 スイッチを押すとプログラムカウンタを確認できるかも知れません。 従来は、起動中にエラーが発生したとき「エラーが発生しました。リセットしてください。」と表示されるだけで、どこでどのようなエラーが発生したのか分かりませんでした。

JoyPortUkun じょいぽーと U 君

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 キーボードの表示

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

Mouse wheel マウスホイール

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を追加しました。

RS-232C and terminal RS-232C とターミナル

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. 例えば、エミュレータと実機の間で小規模なファイル交換ができます。

  1. Prepare a serial port on the host machine and connect it directly to the actual X680x0 machine with an RS-232C crossover cable. ホストマシンにシリアルポートを用意して RS-232C クロスケーブルで X680x0 実機と直結します。
  2. Connect the terminal to the serial port and send ZM.X (and RSDRV.SYS if necessary) to the actual X680x0 device with the terminal function. ターミナルとシリアルポートを接続し、ターミナルの機能で X680x0 実機に ZM.X(と必要ならば RSDRV.SYS) を送信します。
  3. Connecting the RS-232C and serial port creates a file exchange environment using ZM.X between the emulator and the actual device. RS-232C とシリアルポートを接続すると、エミュレータと実機の間で ZM.X によるファイル交換環境が出来上がります。

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 ビットに限ります。

SCSI menu SCSI メニュー

Fixed a bug that prevented opening hard disk image files initialized with SCSIFORMAT.X included with SxSI. (Thanks りっきーさん) SxSI に付属している SCSIFORMAT.X で初期化されたハードディスクのイメージファイルを開くことができないバグを修正しました。(Thanks りっきーさん)

SPC SPC

Write and Verify(10) is implemented with the same behavior as Write(10). Write and Verify(10) を Write(10) と同じ動作で実装しました。

misc/060tsys/060turbo.sys misc/060tsys/060turbo.sys

060turbo.sys 0.58 is now included. The changes from 0.56 are as follows. 060turbo.sys 0.58 を同梱しました。0.56 からの変更点は以下の通りです。

0.23.05.14

CYBER STICK サイバースティック

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で設定できます。

XInput support XInput 対応

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 をカレントディレクトリまたはパスの通っているディレクトリに置いてください。

0.23.05.03

Sprite screen スプライト画面

Fixed a bug that caused transparent lines to appear on the sprite screen when palette or scroll position was changed during the horizontal data display period. 水平データ表示期間中にパレットやスクロール位置を変更するとスプライト画面に透明な線ができるバグを修正しました。

0.23.05.01

Execution environment 実行環境

As of this writing, the latest OpenJDK is 20.0.1 2023-04-18. Older versions of JDK may not work. Please use the latest OpenJDK if possible. これを書いている時点で最新の OpenJDK は 20.0.1 2023-04-18 です。 これより古いバージョンの JDK では動作しないかも知れません。 可能な限り最新の OpenJDK を使用してください。

F11 key F11 キー

Shift+F11 key toggles between seamless mouse mode and exclusive mouse mode as well as the F12 key. Use this key when the F12 key is not assigned on the Z keyboard. Shift+F11 キーで F12 キーと同様にシームレスマウスモードエクスクルーシブマウスモードを切り替えられます。Z キーボードで F12 キーが割り当てられていないときに使います。

Added "Do nothing" to the F11 key menu. When the right Ctrl key on the Z keyboard is used as the F11 key, you can usually select "Do nothing" and nothing will happen if you accidentally press it. F11 キーメニューに「何もしない」を追加しました。Z キーボードの右 Ctrl キーを F11 キーにしているとき普段は「何もしない」を選択しておけば間違って押しても何も起こりません。

File menu ファイルメニュー

The frame of the connection icon is no longer darkened when the unit is not connected. ユニットが接続されていないとき接続アイコンの枠の部分を暗くしないようにしました。

Host file system ホストファイルシステム

Fixed a bug that caused file timestamps to be set incorrectly if _CLOSE was performed immediately after _CREATE/_NEWFILE. _CREATE/_NEWFILE してすぐに _CLOSE するとファイルのタイムスタンプが正しく設定されないバグを修正しました。

IPLROM 1.6 IPLROM 1.6

When the MPU is 68060, for exceptions and IOCS calls where bit 4 of the number is 1, the undefined vectors will not contain vector numbers. When there is high memory at address $01xxxxxxxx, such undefined exceptions or IOCS calls will not run out of control and the appropriate white window will be displayed. MPU が 68060 のとき、番号のビット 4 が 1 である例外および IOCS コールについて、未定義のベクタにベクタ番号を入れないようにしました。 アドレス $01xxxxxx にハイメモリがあるときそのような未定義の例外または IOCS コールを呼び出しても暴走せず適切な白窓が表示されるようになります。

For the following interrupt-related IOCS calls, the condition for determining that an interrupt is unused has been changed from "the vector is $01000000 or more" to "the vector contains a vector number". When the vector of an interrupt in use points to high memory, the interrupt is no longer misidentified as unused. 以下の割り込み関係の IOCS コールについて、割り込みが未使用であると判断する条件を「ベクタが $01000000 以上」から「ベクタにベクタ番号が入っている」に変更しました。 使用中の割り込みのベクタがハイメモリを指しているとき割り込みが未使用と誤認されなくなります。

JoyPortUkun support (experimental) じょいぽーと U 君対応 (実験中)

When using Windows, TNB Seisakusho's JoyPortUkun is supported. Input/output devices connected to the joystick port of the actual X68000 may be used with XEiJ. See JoyPortUkun support (experimental) for details. Windows のとき、TNB 製作所さんのじょいぽーと U 君に対応しました。X68000 実機のジョイスティックポートに繋いでいた入出力デバイスが XEiJ で使えるかも知れません。 詳しくはじょいぽーと U 君対応 (実験中)を参照してください。

Key assignments キー割り当て

The width of keyCode that can be used for key assignment when using Windows has been changed from 12 bits to 16 bits. The F13 to F24 keys used on the Z keyboard can be assigned. Windows のときキー割り当てに使える keyCode の幅を 12 ビットから 16 ビットに変更しました。Z キーボードで使う F13~F24 キーを割り当てられます。

Operation frequency 動作周波数

Changed the operating frequency of 060turbo and 060turboPRO from 33.3MHz to 50MHz. 060turbo と 060turboPRO の動作周波数を 33.3MHz から 50MHz に変更しました。

Added 66.7MHz, 75MHz, and 100MHz radio buttons to the MPU menu. MPU メニューに 66.7MHz、75MHz、100MHz のラジオボタンを追加しました。

The default value of the arbitrary frequency spinner in the MPU menu was changed to 200MHz. MPU メニューの任意の周波数スピナーの初期値を 200MHz に変更しました。

SCSI menu SCSI メニュー

The tooltip for the hard disk icon is no longer displayed when the unit is not connected. ユニットが接続されていないときハードディスクアイコンのツールチップを表示しないようにしました。

SPC SPC

Selection phase is no longer omitted when the unit is not connected. ユニットが接続されていないときセレクションフェーズを省略しないようにしました。

Z Keyboard support (experimental) Z キーボード対応 (実験中)

In a Windows 10 and Microsoft IME or Google Japanese Input environment, all keys on the X68000 Z keyboard can be entered, with some limitations, by remapping the special keys to the F13-F24 keys using Microsoft PowerToys Keyboard Manager. You can control the 7 LEDs on the X68000 Z keyboard. See Z keyboard support (experimental) for details. Windows 10 と Microsoft IME または Google 日本語入力の環境で、Microsoft PowerToys Keyboard Manager を用いて特殊キーを F13~F24 キーへ再マップすることで、いくつかの制約はありますが、X68000 Z のキーボードのすべてのキーを入力できます。X68000 Z のキーボードの 7 個の LED を制御できます。 詳しくはZ キーボード対応 (実験中)を参照してください。

0.23.04.10

8-bit port 8 ビットポート

When accessing an even address of an 8-bit port with byte size, a bus error is now generated unless the Xellent30 is in 68030 mode. 8 ビットポートの偶数アドレスにバイトサイズでアクセスしたとき Xellent30 の 68030 モードでなければバスエラーが発生するようにしました。

Change the model and reset 機種を変更してリセット

Fixed a bug that prevented X68000 Compact (16.7MHz) from responding in the menu. メニューの X68000 Compact (16.7MHz) が反応しないバグを修正しました。

Controll pipe 制御パイプ

Added control pipe. When in Windows, the named pipe "\\.\pipe\XEiJControl&#34, you can send control commands, such as pressing an interrupt switch, from other processes via this pipe. Place the supplied xeijwin.dll in the current directory or in a directory that is in your path. Activating the paste pipe via the paste settings menu or the parameter pastepipe also activates the control pipe. 制御パイプを追加しました。Windows のとき、名前付きパイプ「\\.\pipe\XEiJControl」を介して他のプロセスからインタラプトスイッチを押すなどの制御コマンドを送信できます。 付属の xeijwin.dll をカレントディレクトリまたはパスの通っているディレクトリに置いてください。 貼り付け設定メニューまたはパラメータ pastepipe貼り付けパイプを有効にすると制御パイプも有効になります。

echo interrupt > \\.\pipe\XEiJControl

DMAC DMAC

Fixed a bug where DMAC would not read the source operand if it knew an address error would occur when writing to the destination operand. DMAC がデスティネーションオペランドへライトするときアドレスエラーが発生することが分かっているとソースオペランドをリードしないバグを修正しました。

Fixed an enbug in array chain mode and linked array chain mode that attempted to determine address and count errors before the first MAR and MTC were loaded. アレイチェーンモードとリンクアレイチェーンモードのとき最初の MAR と MTC がロードされる前にアドレスエラーとカウントエラーを判別しようとするエンバグを修正しました。

Host file system ホストファイルシステム

Fixed an error code when a file was not found in files. files でファイルが見つからなかったときのエラーコードを修正しました。

Remnants of _FILES buffers are now erased on reset. リセット時、_FILES のバッファの残骸を消すようにしました。

IPLROM 1.6 IPLROM 1.6

When the MPU is other than 68000 and the program counter is $02xxxxxx to $0Fxxxxxx, the vector number is obtained from the program counter instead of the vector offset. With this change, when an undefined F line instruction is executed on X68030, the message "A strange instruction was executed" will be displayed instead of "An error ($000B) occurred". MPU が 68000 以外かつプログラムカウンタが $02xxxxxx~$0Fxxxxxx のとき、ベクタオフセットの代わりにプログラムカウンタからベクタ番号を取得します。 この変更により、X68030 で未定義の F ライン命令を実行したとき、「エラー ($000B) が発生しました」ではなく「おかしな命令を実行しました」と表示されるようになります。

Parameters hdN and saN パラメータ hdN と saN

The parameter for specifying the SASI HD image file name has been changed from parameter hdN to parameter saN. SASI HD のイメージファイル名を指定するパラメータをパラメータ hdNからパラメータ saNに変更しました。

hdN can now be specified as either a SASI HD or SCSI HD/CD image file name. The file specified by hdN is considered to be a SASI HD image file name if the file extension is HDF or the file size is 10441728, 20748288, or 41496576. To be considered a SCSI HD/CD image file name, the file specified by hdN must have the HDS or ISO extension or have a file size that is not 10441728, 20748288, or 41496576. hdN には SASI HD と SCSI HD/CD のどちらのイメージファイル名でも指定できるようにしました。hdN で指定されたファイルが SASI HD のイメージファイル名とみなされる条件は、拡張子が HDF であるか、ファイルサイズが 10441728、20748288、41496576 のいずれかであることです。hdN で指定されたファイルが SCSI HD/CD のイメージファイル名とみなされる条件は、拡張子が HDS または ISO であるか、ファイルサイズが 10441728、20748288、41496576 のいずれでもないことです。

The image file name specified in hdN will be stored in saN if it is a SASI HD or in scN if it is a SCSI HD or CD-ROM. It is not stored in hdN. hdN で指定されたイメージファイル名は SASI HD であれば saN に、SCSI HD または CD-ROM であれば scN に保存されます。hdN には保存されません。

When deleting an image file name, use saN=none or scN=none. You cannot delete with hdN=none. イメージファイル名を削除するときは saN=none または scN=none としてください。hdN=none では削除できません。

RTC RTC

A slight discrepancy between the host machine's time and the X68000's time could affect the file modification date and time settings in the host file system. The unit of time difference between the host machine and the X68000 was changed from milliseconds to seconds, and the slight discrepancy was rounded to zero. ホストマシンの時刻と X68000 の時刻のわずかなずれが、ホストファイルシステムのファイルの更新日時の設定に影響することがありました。 ホストマシンと X68000 の時差の単位をミリ秒から秒に変更し、わずかなずれが丸め処理でゼロになるようにしました。

0.23.03.11

Core control buttons コア制御ボタン

ori illegal stop on error stop at start break trace trace 10 trace 100 step step 10 step 100 step until return run

A checkbox stop at start has been added to core control buttons to stop the core at the program execution start position. It is used when you want to set a breakpoint in a program before executing it. The disassemble list shows the name of the program and the offset from the beginning, so you can easily find the place to set a breakpoint by comparing it with the assembly list generated by HAS060.X and the disassembly list generated by dis.x. This feature is only available when Human68k 3.02 is running. コア制御ボタンにプログラムの実行開始位置でコアを停止させるチェックボックス stop at start を追加しました。 プログラムにブレークポイントを仕掛けてから実行したいときに使います。 逆アセンブルリストにはプログラムの名前と先頭からのオフセットが表示されるので、HAS060.Xが生成したアセンブルリストやdis.xが生成した逆アセンブルリストと照合することで、ブレークポイントを仕掛ける場所を簡単に見つけられます。 この機能は Human68k 3.02 が動作しているときだけ有効です。

DMAC DMAC

Fixed a bug that caused incorrect transfers when the device port size was 8 bits and the operand size was a word or longword. デバイスポートサイズが 8 ビットでオペランドサイズがワードまたはロングワードのとき正しく転送されないバグを修正しました。

Fixed a bug that did not result in a configuration error when the device port size was 16 bits and the operand size was 8 bits without pack. デバイスポートサイズが 16 ビットでオペランドサイズがパックなし 8 ビットのときコンフィギュレーションエラーにならないバグを修正しました。

Fixed a bug that prevented COC from being set when a channel stopped in error. チャンネルがエラーで停止したとき COC がセットされないバグを修正しました。

The formula for burst time and interval at auto request limited speed has been corrected. オートリクエスト限定速度のときのバースト時間と間隔の計算式を修正しました。

The number of cycles per operand has been corrected. The following table shows the number of cycles per operand for each setting on the actual X68030. You can see that the HD63450 operates with a minimum of 9 cycles, but the X68030 operates with 10 cycles with a wait cycle inserted. The X68000 also has many 10-cycle units, but some of the XVI and Compact units have 9 cycles. Furthermore, it appears that only the main memory is 9-cycle and the battery-backed SRAM is also 9-cycle. The PRO has 12 cycles, so DMA transfers are slower than other models. XEiJ uses 12 cycles for PRO, 9 cycles for Compact including Hybrid, and 10 cycles for the other models. オペランドあたりのサイクル数を修正しました。 以下の表は、X68030 実機の設定毎のオペランドあたりのサイクル数を示しています。HD63450 は最短 9 サイクルで動作しますが、X68030 ではウェイトサイクルが挿入されて 10 サイクルで動作していることが分かります。X68000 も 10 サイクルの個体が多いですが、XVI と Compact の一部に 9 サイクルの個体が存在します。 更に、メインメモリだけが 9 サイクルの個体と、バッテリバックアップ SRAM も 9 サイクルの個体があるようです。PRO は 12 サイクルなので、他の機種よりも DMA 転送が遅いです。XEiJ では、PRO を 12 サイクルに、Hybrid を含む Compact を 9 サイクルに、その他の機種を 10 サイクルにしています。

dmactime10.png

Dot clock oscillator ドットクロックオシレータ

In the modification menu or parameter dotclock, you can change the frequency of the three dot clock oscillators: one for low resolution, one for high resolution, and one for VGA. Changes made in the menu are reflected after a reset. See also: Oh!X June 1994, "The Road to Mega Displays" 改造メニューまたはパラメータ dotclockで、低解像度用、高解像度用、VGA 用の 3 つのドットクロックオシレータの周波数を変更できます。 メニューでの変更はリセット後に反映されます。 関連 : Oh!X 1994 年 6 月号『メガディスプレイへの道』

Host file system ホストファイルシステム

"..." or "...." etc. cannot be used as file names. "..." や "...." などをファイル名として使えないようにしました。

The size of the read-ahead and delayed write buffer per file handle has been changed from 16KB to 64KB. ファイルハンドルあたりの先読み・遅延書き込みバッファのサイズを 16KB から 64KB に変更しました。

When transferring data, address conversion is now performed one page at a time instead of one byte at a time. データを転送するときアドレス変換を 1 バイトずつ行っていたところを 1 ページずつ行うように変更しました。

Human68k patches Human68k のパッチ

Fixed a problem in which "PCM8A.X 1.02 is available" was sometimes displayed after PCM8A.X was deactivated. PCM8A.X を解除した後に「PCM8A.X 1.02 があります」と表示されることがある不具合を修正しました。

IPLROM 1.6 IPLROM 1.6

The IPLROM 1.6 startup screen used to display the DMAC transfer rate measured in battery-backed SRAM, but now it displays two times, once when measured in main memory and once when measured in battery-backed SRAM. When measured in main memory, the transfer rate is slightly lower due to the effect of DRAM refresh. It seems that some XVI and Compact models have different number of wait cycles between main memory and battery-backed SRAM. IPLROM 1.6の起動画面にバッテリバックアップ SRAM で計測した DMAC の転送速度を表示していましたが、メインメモリで計測したときとバッテリバックアップ SRAM で計測したときの 2 つ表示するようにしました。 メインメモリで計測すると DRAM リフレッシュの影響を受けて転送速度が若干低下します。XVI と Compact の一部にメインメモリとバッテリバックアップ SRAM でウェイトサイクルの数が異なる個体が存在するようです。

iplrom16boot.png

Key assignments キー割り当て

On Linux, the key assignments for Windows were not useful and all keys had to be reassigned. saku39 provided us with the data of key assignments created on Linux. He said that it is incomplete as a whole because it was created on a laptop, but I think it will be of great help. Thank you, saku39. Linux では、Windows 用のキー割り当てが役に立たず、すべてのキーを割り当て直さなければなりませんでした。saku39 さんに Linux で作成されたキー割り当てのデータを提供していただきました。 ノート PC で作成されたため全体的に不完全とのことですが、大いに参考になると思います。saku39 さん、ありがとうございます。

Added Save and Restore buttons to the Key assignments window. Key assignments can be saved to a file in CSV format. Since XEiJ saves key assignments in a settings file, when XEiJ settings are initialized, the key assignments are also initialized together. By saving key assignments to a file, key assignments can be restored after XEiJ settings are initialized. キー割り当てウインドウに保存ボタンと復元ボタンを追加しました。 キー割り当てを CSV 形式でファイルに保存できます。XEiJ ではキー割り当てを設定ファイルに保存しているので、XEiJ の設定を初期化するとキー割り当ても一緒に初期化されてしまいます。 キー割り当てをファイルに保存しておくことで、XEiJ の設定を初期化した後にキー割り当てを復元できます。

Added Undo and Redo buttons to the Key assignments window. You can undo changes to key assignments. If a key assigned to another key is pressed by mistake when changing the key assignment, the two keys will be in the wrong state, but they can be undone together. Operations of the blank button, default button, and restore button can also be undone. You can undo up to 1000 previous changes until you exit XEiJ. To undo a key assignment change after exiting XEiJ, take the keymap= line from the XEiJ.ini.bak file, write it to a file named keymap.txt, and restore it. キー割り当てウインドウに取り消しボタンとやり直しボタンを追加しました。 キー割り当ての変更を取り消すことができます。 キー割り当てを変更するとき他のキーに割り当てられているキーを間違って押してしまうと、2 つのキーが間違った状態になってしまいますが、まとめて取り消せます。 白紙ボタン、初期値ボタン、復元ボタンの操作も取り消せます。XEiJ を終了するまで、1000 回前の変更まで取り消せます。XEiJ を終了した後にキー割り当ての変更を取り消すには、XEiJ.ini.bak ファイルから keymap= の行を取り出して keymap.txt というファイルに書き込み、それを復元してください。

keyassignments.png

Number of sprites per raster ラスタあたりのスプライトの枚数

The number of sprites per raster can be changed from 32 to any number in the modification menu or in the parameter sprras. Changes made in the menu will take effect immediately. 改造メニューまたはパラメータ sprrasで、ラスタあたりのスプライトの枚数を 32 枚から任意の枚数に変更できます。 メニューでの変更は直ちに反映されます。

Scanline effect 走査線エフェクト

In the Scanline effect menu or parameter scanline, the scanline effect in low-resolution mode can be selected from five options: none, weak, medium, strong, and black. The default value is medium. Previously, only strong was available. 走査線エフェクトメニューまたはパラメータ scanlineで、低解像度モードのときの走査線エフェクトを、なし、弱、中、強、黒の 5 つから選択できるようにしました。 初期値は中です。 以前は強のみでした。

If the vertical magnification of the screen is not an integer multiple and not large enough, the scanline effect will not look good. Use Fixed scale to set the screen's vertical magnification to an integer multiple. 画面の縦方向の倍率が整数倍でなくかつ十分に大きくないとき、走査線エフェクトは綺麗に見えません。 固定倍率を用いて画面の縦方向の倍率を整数倍にしてください。

256 sprites スプライト 256 枚

The number of sprites can be doubled from 128 to 256 in the modification menu or parameter dblspr. Changes made in the menu are reflected after a reset. 改造メニューまたはパラメータ dblsprで、スプライトの枚数を 128 枚から 256 枚に倍増させることができます。 メニューでの変更はリセット後に反映されます。

The X68000 has 128 sprite scroll registers at addresses $00EB0000 to $00EB03FF. Addresses $00EB00400 to $00EB07FF immediately after that are free, so they are used as sprite scroll registers for an additional 128 sprites. X68000 はアドレス $00EB0000~$00EB03FF に 128 枚分のスプライトスクロールレジスタがあります。 その直後のアドレス $00EB00400~$00EB07FF が空いているのでそこを追加の 128 枚分のスプライトスクロールレジスタとして使用します。

Added program misc/spr256test.x to test the simultaneous display of 256 sprites. スプライト 256 枚同時表示をテストするプログラムmisc/spr256test.xを追加しました。

spr256test.png

1024-dot non-interlaced 1024 ドットノンインターレース

In the modification menu or parameter eleventhbit, the width of R04/R05/R06/R07/R09 of CRTC can be extended from 10 bits to 11 bits. This modification enables 1024-dot vertical non-interlaced display. Changes made in the menu will be reflected after reset. 改造メニューまたはパラメータ eleventhbitで、CRTC の R04/R05/R06/R07/R09 の幅を 10 ビットから 11 ビットに拡張できます。 この改造で縦 1024 ドットノンインターレース表示が可能になります。 メニューでの変更はリセット後に反映されます。

Wait cycles ウェイトサイクル

Wait cycles are inserted for main memory and I/O port accesses. The number of wait cycles is not finely enough controlled and can be too many or too few. The wait cycles can be disabled in the MPU menu or with the parameter waitcycles. Even if wait cycles are disabled, wait cycles are still inserted for battely-backed SRAM and ROM accesses as before. メインメモリと I/O ポートのアクセスにウェイトサイクルが挿入されます。 ウェイトサイクルの数は十分に細かく制御されておらず、多すぎたり少なすぎたりすることがあります。 ウェイトサイクルはMPU メニューまたはパラメータ waitcyclesで無効にできます。 ウェイトサイクルを無効にしてもバッテリバックアップ SRAM と ROM のアクセスには従来どおりウェイトサイクルが挿入されます。

When the cache is OFF on the X68030, wait cycles can be added to main memory and ROM accesses using system port $00E8E009. X68030 でキャッシュ OFF のとき、システムポート $00E8E009 を使ってメインメモリと ROM のアクセスにウェイトサイクルを追加できます。

The XEiJ 68030 and 68060 do not have an instruction cache and data cache entity, and wait cycles are inserted into main memory and ROM accesses only when both caches are OFF. XEiJ の 68030 と 68060 には命令キャッシュとデータキャッシュの実体がなく、両方のキャッシュが OFF のときだけメインメモリと ROM のアクセスにウェイトサイクルが挿入される仕組みになっています。

Xellent30 Xellent30

Fixed a bug that caused main memory in the range $00BCxxxx-$00BFFFFFFF to become the supervisor area when it was returned to main memory from the Xellent30's onboard SRAM. $00BCxxxx~$00BFFFFF を Xellent30 のオンボード SRAM からメインメモリに戻したときその範囲のメインメモリがスーパーバイザ領域になってしまうバグを修正しました。

You can select the Xellent30 I/O port address from $00EC0000/$00EC4000/$00EC8000/$00ECC000 in the Xellent30 menu or parameter xt3dipsw. The default value is $00ECC000. Xellent30 メニューまたはパラメータ xt3dipswで Xellent30 の I/O ポートのアドレスを $00EC0000/$00EC4000/$00EC8000/$00ECC000 から選べます。 初期値は $00ECC000 です。

In the Xellent30 menu or parameter xt3memorykb, you can choose between 256KB and 1MB for the size of Xellent30's onboard SRAM. The default value is 256KB. If you choose 1MB, not only IPLROM but also CGROM will be replaced by onboard SRAM. Note that if you replace the onboard SRAM with an empty one, the text will be unreadable. Xellent30 メニューまたはパラメータ xt3memorykbで Xellent30 のオンボード SRAM のサイズを 256KB と 1MB から選べます。 初期値は 256KB です。1MB にすると IPLROM だけでなく CGROM もオンボード SRAM に置き換わります。 オンボード SRAM が空のまま置き換えると文字が読めなくなってしまうので注意してください。

In the Xellent30 menu or parameter xt3memorysave, you can choose whether to save the contents of the onboard SRAM of the Xellent30 at exit. The default value is off. The contents of the onboard SRAM are converted to text using gzip+base64 and saved in the parameter xt3memorydata. Xellent30 メニューまたはパラメータ xt3memorysaveで Xellent30 のオンボード SRAM の内容を終了時に保存するかどうか選べます。 初期値は off です。 オンボード SRAM の内容は gzip+base64 でテキストに変換されてパラメータ xt3memorydataに保存されます。

0.23.01.21

Execution environment 実行環境

As of this writing, the latest OpenJDK is 19.0.2 2023-01-17. Older versions of JDK may not work. Please use the latest OpenJDK if possible. これを書いている時点で最新の OpenJDK は 19.0.2 2023-01-17 です。 これより古いバージョンの JDK では動作しないかも知れません。 可能な限り最新の OpenJDK を使用してください。

MC68000 and MC68010 MC68000 と MC68010

The execution time of the following instructions has been corrected. 以下の命令の実行時間を修正しました。

Video controller ビデオコントローラ

The zero-priority case between the sprite screen and the text screen, where the text screen is in the foreground, was not handled correctly. One variable name was misspelled in drawingmode.pl, a program that automatically generates DrawingMode.java, a program that overlays screens. スプライト画面とテキスト画面の間で発生するゼロプライオリティのうち、テキスト画面が手前にある場合が正しく処理されていませんでした。 画面の重ね合わせを行うプログラム DrawingMode.java を自動生成するプログラム drawingmode.pl に 1 箇所変数名の書き間違いがありました。

0.23.01.19

MC68000 and MC68010 MC68000 と MC68010

The execution time of the following instructions has been corrected. 以下の命令の実行時間を修正しました。

misc/* misc/*

Added optime.s, optime.x and optitest.bat. optime.soptime.x および optitest.bat を追加しました。

0.23.01.01

Extended graphic screen 拡張グラフィック画面

Fixed a bug that caused IOCS _G_CLR_ON to fail to erase graphic screens even in standard screen mode when extended graphic screen was enabled; CRTC storage mode operation was causing memory map inconsistencies. 拡張グラフィック画面を有効にすると標準の画面モードでも IOCS _G_CLR_ON がグラフィック画面の消去に失敗するようになるバグを修正しました。CRTC のストレージモードの操作でメモリマップに不整合が生じていました。

Supplement 1. IOCS _G_GLR_ON does not work as expected in memory mode 5,7. 補足 1。IOCS _G_GLR_ON はメモリモード 5,7 では期待通りに動作しません。

Supplement 2. 512KB GVRAM in memory modes 0,1,3,4 and 2MB GVRAM in memory modes 5 and 7 are different entities. Clearing all 2MB of GVRAM in memory mode 7 does not clear the 512KB of GVRAM in memory mode 3. 補足 2。メモリモード 0,1,3,4 の 512KB の GVRAM とメモリモード 5,7 の 2MB の GVRAM は実体が異なります。メモリモード 7 で 2MB の GVRAM をすべてクリアしてもメモリモード 3 の 512KB の GVRAM はクリアされません。

File menu ファイルメニュー

To make it easier to see long disk image file names, the file chooser does not open when a disk image file is already inserted, even if you click on the text field of the disk image file name. 長いディスクイメージファイル名を確認しやすくするために、ディスクイメージファイルが既に挿入されているときは、ディスクイメージファイル名のテキストフィールドをクリックしてもファイルチューザーが開かないようにしました。

When replacing an inserted disk image file, click the open icon to the left of the disk image file name text field, not the disk image file name text field. 挿入されているディスクイメージファイルを交換するときは、ディスクイメージファイル名のテキストフィールドではなく、その左側にある open アイコンをクリックしてください。

IPLROM 1.6 IPLROM 1.6

We changed some of the model codes written at the end of IPLROM 1.6. Some of ACE/EXPERT(II)/PRO(II) models whose CZ name ends with -GY, the colors of those models were similar to those of the first generation, so we had set their color codes to 0 (office gray), the same as the first generation. Since we received a suggestion that the color code should match the catalog description, we have changed those color codes to 1 (gray), the same as Compact. IPLROM 1.6 の末尾に書き込まれる 機種コード の一部を変更しました。ACE/EXPERT(II)/PRO(II) のうち CZ 名が -GY で終わる機種の色は初代に近いので、それらの色コードを初代と同じ 0(オフィスグレー) にしていました。色コードをカタログの表記に合わせるべきとのご意見をいただいたので、それらの色コードを Compact と同じ 1(グレー) に変更しました。

Key assignments キー割り当て

The design of the key assignments window has been changed. The input area, which was previously arranged in key code order, is now arranged in the shape of the X68000 keyboard, making it easier to understand the key correspondence. キー割り当てウインドウ のデザインを変更しました。キーコード順に並べていた入力エリアを X68000 のキーボードの形に並べることで、キーの対応を分かりやすくしました。

US layout can be selected when restoring key assignments to their default values; a parameter keymapus has been added to select US layout. キー割り当てを初期値に戻すとき、US レイアウトを選択できます。US レイアウトを選択する パラメータ keymapus を追加しました。

The US layout for macOS was created by tantan. The following is a comment written by tantan. macOS の US レイアウトは tantan さんに作成していただきました。以下は tantan さんに書いていただいたコメントです。

  KBD_DEFAULT_MAP_MAC_US
    macOS + USキーボード 用 XEiJ デフォルトキーマッピング

  macOS + USキーボード で XEiJ を使用する場合、KBD_DEFAULT_MAP_MAC のマッピングでは
  主要記号を含む一部の文字が入力できません。これは一部のキーが KeyEvent#getExtendedKeyCode() で
  JISキーボードとは異なる値を返すためです。

  このマッピングを使うことでUSキーボードでもすべての記号文字が入力可能となります。
  逆にこのマッピングを使うとJISキーボードでは正しく入力できなくなるので注意してください。

  また、M.Kamadaさん作 KeyWitch.X を使用して Human68K 側をUS(ASCII)配列にすると、
  SHIFTキーと組み合わせた記号入力も含め、XEiJ上で完全なUS配列となります。(推奨)

  KeyWitch.X を組み込まない場合は、XEiJ上でほぼJISキーボードの配列になります。

  KeyWitch.Xと68エミュレータについては以下を参考にさせて頂きました。
  https://yatte-mita.hateblo.jp/entry/2019/06/15/130053

  KeyWitch.X は CONFIG.SYS に以下のように追加してください。
  DEVICE=\path\to\KeyWitch.x -e \path\to\ascii.env

Fixed a bug that the keycode with the largest keycode disappears every time XEiJ is started up when key assignments are changed. キー割り当てを変更したとき、XEiJ を起動する度にキーコードが一番大きいキー割り当てが消えてゆくバグを修正しました。

Fixed a bug that 8 on the numeric keypad could not be input when NumLock was ON in Windows. Windows で NumLock ON のとき、テンキーの 8 が入力できないバグを修正しました。

PPI PPI

Fixed a bug that caused the output to be sent to joystick port 2 instead of joystick port 1 when writing $0C to $0F to $00E9A007. No actual harm was done since no device using this feature was connected. $00E9A007 に $0C~$0F を書き込んだとき、ジョイスティックポート 1 ではなくジョイスティックボート 2 に出力されていたバグを修正しました。この機能を使うデバイスが接続されていないので実害はありませんでした。

SRAM SRAM

When the model is changed, adjust the ROM boot handle so that errors do not occur due to a change in the presence or absence of SCSI or a change in the presence or absence of HFS. 機種を変更したとき、SCSI の有無の変化または HFS の有無の変化でエラーが発生しないように、ROM 起動ハンドルを調整します。

When the ROM boot handle points to internal SCSI but there is no internal SCSI, the ROM boot handle is changed to extended SCSI if there is extended SCSI, otherwise the ROM boot handle is erased and changed to STD boot. ROM 起動ハンドルが内蔵 SCSI を指しているのに内蔵 SCSI がないときは、拡張 SCSI があれば ROM 起動ハンドルを拡張 SCSI に変更し、なければ ROM 起動ハンドルが消去して STD 起動に変更します。

When the ROM boot handle points to extended SCSI but there is no extended SCSI, the ROM boot handle is changed to internal SCSI if there is internal SCSI, otherwise the ROM boot handle is erased and changed to STD boot. ROM 起動ハンドルが拡張 SCSI を指しているのに拡張 SCSI がないときは、内蔵 SCSI があれば ROM 起動ハンドルを内蔵 SCSI に変更し、なければ ROM 起動ハンドルを消去して STD 起動に変更します。

If the ROM boot handle points to HFS but the HFS directory is not set, erase the ROM boot handle and change to STD boot. ROM 起動ハンドルが HFS を指しているのに HFS のディレクトリが設定されていないときは、ROM 起動ハンドルを消去して STD 起動に変更します。

0.22.10.18

Execution Environment実行環境

As of this writing, the latest OpenJDK is 19 2022-09-20. Older versions of JDK may not work. Use the latest version of OpenJDK if possible. これを書いている時点で最新の OpenJDK は 19 2022-09-20 です。 これより古いバージョンの JDK では動作しないかも知れません。 可能な限り最新の OpenJDK を使用してください。

File menuファイルメニュー

In the File menu, when the path name of a disk image is long, the hidden part is displayed by tracing the letter. ファイルメニュー で、ディスクイメージのパス名が長いとき、文字をなぞると隠れている部分が表示されるようにしました。

Host File Systemホストファイルシステム

When setting the host directory name as the volume name of a drive in the host file system, if it does not fit in 21 bytes, assign a string consisting of the first 5 bytes and the last 15 bytes joined by "_". ホストファイルシステム のドライブのボリューム名としてホストのディレクトリ名を設定するとき、21 バイトに収まらなければ、先頭 5 バイトと末尾 15 バイトを「_」で繋いだ文字列を割り当てます。

When UTF-8 warning in the HFS menu or the parameter utf8warning is on, it is reported that the character encoding of the file you try to open in the host file system is UTF-8. HFS メニューUTF-8 警告 またはパラメータ utf8warning が on のとき、ホストファイルシステムで開こうとしたファイルの文字コードが UTF-8 であることが報告されます。

IPLROM 1.6

When the MPU is a 68040 or 68060, IPLROM 1.6 does not turn on the data cache even if it is configured to boot with the data cache ON. 060turbo.sys turns on the data cache after the MMU is enabled. Note that as of this writing, there is no way to enable the MMU with the combination of 040turbo and IPLROM 1.6, so the combination of 040turbo and IPLROM 1.6 is not recommended. MPU が 68040 または 68060 のとき、データキャッシュ ON で起動するように設定されていても、IPLROM 1.6 はデータキャッシュを ON にしません。060turbo.sys が、MMU を有効にした後にデータキャッシュを ON にします。 なお、これを書いている時点で 040turbo と IPLROM 1.6 の組み合わせで MMU を有効にする手立てがありませんので、040turbo と IPLROM 1.6 の組み合わせは推奨できません。

Paste貼り付け

If you paste a large amount of text by mistake, you can stop pasting by clicking the Stop paste button in the Paste settings menu. 間違って大量のテキストを 貼り付け てしまったとき、貼り付け設定メニュー貼り付け中止ボタン で貼り付けを中止できます。

On Windows, when the Paste pipe checkbox in the Paste settings menu or the parameter pastepipe is on, you can paste text from other processes via the Paste pipe "\\.\pipe\XEiJPaste". Put xeijwin.dll in the current directory or in a directory in your path. Windows で、貼り付け設定メニュー貼り付けパイプチェックボックス またはパラメータ pastepipe が on のとき、貼り付けパイプ 「\\.\pipe\XEiJPaste」を介して他のプロセスからテキストを貼り付けられます。xeijwin.dll をカレントディレクトリまたはパスの通っているディレクトリに置いてください。

echo memfree > \\.\pipe\XEiJPaste

Printerプリンタ

You can choose between Mincho and Gothic typefaces for the printer. The typeface selection at reset is stored in the parameter prndipsw. プリンタ の書体を明朝体とゴシック体から選択できます。 リセット時の書体の選択はパラメータ prndipsw に保存されます。

The paper size is stored in the parameter prnsize and the paper orientation in the parameter prnorientation. 用紙のサイズはパラメータ prnsize に、用紙の方向はパラメータ prnorientation に保存されます。

The paper margins are stored in the parameters prntopmargin, prnleftmargin, prnrightmargin and prnbottommargin. 用紙の余白はパラメータ prntopmarginprnleftmarginprnrightmargin および prnbottommargin に保存されます。

The paper can be rotated in 90°increments. Vertical writing mode should be rotated to the right, and SX-Window hardcopy should be rotated to the left for better viewing. The paper rotation is stored in the parameter prnrotation. 用紙を 90°単位で回転させることができます。 縦書きモードは右に、また、SX-Window のハードコピーは左に回転させると見やすいでしょう。 用紙の回転はパラメータ prnrotation に保存されます。

Dark mode can be selected. When dark mode is selected, black and white are switched. The other colors remain unchanged. The dark mode is stored in the parameter prndarkmode. ダークモードを選択できます。 ダークモードを選択すると白と黒が入れ替わります。 他の色は変わりません。 ダークモードはパラメータ prndarkmode に保存されます。

The printer can be taken offline. The choice between offline and online is stored in the parameter prnonline. プリンタをオフラインにできます。 オフラインとオンラインの選択はパラメータ prnonline に保存されます。

The color of the single-color ink ribbon is stored in the parameter prnsinglecolor. 単色インクリボンの色はパラメータ prnsinglecolor に保存されます。

The display scale factor is stored in the parameter prnscalefactor. 表示倍率はパラメータ prnscalefactor に保存されます。

Adjusted the position and orientation of punctuation, long vowels and wave dashes, and small hiragana and katakana in vertical writing mode. 縦書きモードのときの句読点、長音と波ダッシュ、小さいひらがな・カタカナの位置と向きを調整しました。

If SJIS code is used in Kanji mode, it is converted to JIS code and printed. Kanji mode ON and Kanji mode OFF are necessary even when SJIS code is used. 漢字モードのとき SJIS コードが使用されたら JIS コードに変換して印字します。SJIS コードを使用する場合も漢字モード ON と漢字モード OFF は必要です。

0.22.09.01

Display 画面

The 384x256 dot and its left and right sides shaved 256x256 dot screens with square pixels have been changed to 8:9 portrait pixels by default. You can select conventional square pixels in the menu and parameters. Added HRL square pixelsto the display menu. Added parameter hrlsquare. 384x256 ドットおよびその左右を削った 256x256 ドットの画面を正方形ピクセルにしていましたが、デフォルトを 8:9 の縦長ピクセルに変更しました。 メニューとパラメータで従来の正方形ピクセルを選択できます。 画面メニューHRL 正方形ピクセルを追加しました。 パラメータ hrlsquareを追加しました。

Host File System ホストファイルシステム

Fixed a bug that caused the volume name length limit to be 22 characters instead of 21 when setting the host directory name as the volume name for a drive in the host file system. ホストファイルシステムのドライブのボリューム名としてホストのディレクトリ名を設定するときのボリューム名の長さの上限が 21 文字ではなく 22 文字になっていたバグを修正しました。

0.22.08.25

Configuration File 設定ファイル

When creating a configuration file, the use of StringBuilder, which has a capacity limitation, could cause the creation of the configuration file to fail if the contents of local memory were saved. 設定ファイルを作成するとき容量制限のある StringBuilder を使用していたため、ローカルメモリの内容を保存すると設定ファイルを作成に失敗することがありました。

The method has been changed to one that does not use StringBuilder. StringBuilder を使用しない方法に変更しました。

Copyright 著作権

The copyright notice has been changed since YM2151 was moved to the YMFM-derived code. YM2151 を ymfm 由来のコードへ移行したので著作権の表示を変更しました。

The license terms have not changed. 使用許諾条件は変わっていません。

Creating ROM Files ROM ファイルの作成

Added Create EVENPRO.BIN and Create ODDPRO.BIN to the Create ROM File menu. ROM ファイルの作成メニューに EVENPRO.BIN の作成と ODDPRO.BIN の作成を追加しました。

Address range and file size were written in the menu for creating ROM files. ROM ファイルの作成メニューにアドレスの範囲とファイルサイズを書きました。

DMAC DMAC

If an address of $01000000 or more is written to MAR/DAR/BAR of DMAC at 68030 or more, this is reported. 68030 以上のとき DMAC の MAR/DAR/BAR に $01000000 以上のアドレスが書き込まれたらそのことを報告します。

Execution Environment 実行環境

As of this writing, the latest OpenJDK is 18.0.2.1 2022-08-18. これを書いている時点で最新の OpenJDK は 18.0.2.1 2022-08-18 です。

Older versions of JDK may not work. これより古いバージョンの JDK では動作しないかも知れません。

Use the latest version of OpenJDK if possible. 可能な限り最新の OpenJDK を使用してください。

Host File System ホストファイルシステム

The readonly attribute can now be set for files in the host file system. ホストファイルシステムにあるファイルに readonly 属性を設定できるようにしました。

Indicator インジケータ

The model name display has been moved from the indicator to the title bar. 機種名の表示をインジケータからタイトルバーへ移しました。

Indicator text has been enlarged. インジケータの文字を大きくしました。

IPLROM 1.6 IPLROM 1.6

Fixed a bug that caused the startup screen to display 2MB when the size of main memory was 1MB on the X68000 Shodai/ACE/PRO/PROII. X68000 初代 /ACE/PRO/PROII でメインメモリのサイズが 1MB のとき起動画面に 2MB と表示されるバグを修正しました。

Added a workaround for the problem that IOCS _B_VERIFY in IPLROM 1.2-derived SASI BIOS does not work correctly when the supervisor stack is in an area where DMA transfer is not possible. IPLROM 1.2 由来の SASI BIOS の IOCS _B_VERIFY がスーパーバイザスタックが DMA 転送できない領域にあると正常に動作しない問題の対策を追加しました。

The model name and model code are placed at the end of IPLROM 1.6. IPLROM 1.6 の末尾に 機種名と機種コード が入ります。

The model name is displayed on the startup screen. The model name displayed is not the model name determined at startup, but the model name written when XEiJ created the ROM data. 起動画面に機種名を表示します。表示されるのは起動時に判別された機種名ではなく XEiJ が ROM のデータを作成したときに書き込まれた機種名です。

The judgment of the machine with built-in SASI is now compatible with X68000_MiSTer. SASI 内蔵機の判定を X68000_MiSTer に対応しました。

The screen mode when starting up with the T key held down has been changed to CRT screen mode 3 (256x240 non-interlaced). T キーを押しながら起動したときの画面モードを CRT 向け画面モード 3(256x240 ノンインターレース) に変更しました。

I wrote How to use IPLROM 1.6 on real machines. 実機で IPLROM 1.6 を使う方法 を書きました。

Updated ROM Debugger 3.60. Fixed several bugs in DB.X 3.00. ROM Debugger 3.60 を更新しました。DB.X 3.00 の不具合を幾つか修正しました。

Joystick Port ジョイスティックポート

When XEiJ was started, the joystick port setting screen always showed port 1. XEiJ を起動したときジョイスティックポートの設定画面にはいつもポート 1 が表示されていました。

Now it shows port 2 when only port 2 is connected or only port 2 has a Shiromadokun. ポート 2 だけ接続されているまたはポート 2 だけ白窓君のときはポート 2 を表示するように変更しました。

Main Memory メインメモリ

When the size of main memory is 1MB on X68000 Shodai/ACE/PRO/PROII, access to $00100000-$001FFFFF does not cause bus error. X68000 初代 /ACE/PRO/PROII でメインメモリのサイズが 1MB のとき $00100000-$001FFFFF へのアクセスでバスエラーが発生しないようにしました。

Model 機種

The accelerator name 060turboPRO can be specified. 060turboPRO is a fictitious model combining X68000 PRO and MC68060. アクセラレータ名 060turboPRO を指定できます。060turboPRO は X68000 PRO と MC68060 を組み合わせた架空の機種です。

You can specify the CZ name in addition to the common name and the accelerator name in the parameter model. パラメータ model に通称とアクレラレータ名に加えて CZ 名を指定できます。

OPM Log OPM ログ

OPM log has been added. OPM ログ を追加しました。

Writes to YM2151 registers during operation can be recorded with the elapsed time in units of 1 μ s and the performance can be replayed. 動作中の YM2151 のレジスタへの書き込みを 1 μ s 単位の経過時間とともに記録して演奏を再生できます。

You can check the emulation of YM2151 and the operation of the sound source driver. YM2151 のエミュレーションや音源ドライバの動作を確認できます。

Shiromadokun 白窓君

Fixed a bug in which the Clear Display command of Shiromadokun was filling the screen with 0x00 when it should have been filled with 0x20. 白窓君の Clear Display コマンドは画面を 0x20 で埋めなければならないのに 0x00 で埋めていたバグを修正しました。

YM2151 YM2151

YM2151 has been migrated from the old MAME-derived code to the new YMFM-derived code. YM2151 を旧 MAME 由来のコードから新しい ymfm 由来のコードへ移行しました。

The code for the other parts of XEiJ except for YM2151 was originally developed by me, Makoto Kamada, and does not use any other emulator's code. なお、XEiJ の YM2151 以外の部分のコードは私 Makoto Kamada が独自に開発したものであり、他のエミュレータのコードは使用していません。

0.22.06.08

Stereoscopic viewing 立体視

Stereoscopic viewing using the STEREOSCOPIC connector on the back of the X68000 is now supported. X68000 の背面にある STEREOSCOPIC コネクタを用いる 立体視 に対応しました。

The stereoscopic viewing method can be selected from naked-eye crossing, naked-eye parallel, side-by-side, and top-and-bottom. Side-by-side and top-and-bottom are intended to be projected on a 3D monitor, but the operation has not been actually connected and confirmed. 立体視の方法を、裸眼交差法、裸眼平行法、サイドバイサイド、トップアンドボトムから選択できます。 サイドバイサイドとトップアンドボトムは 3D モニタに映すことを想定していますが、実際に接続して動作を確認していません。

The menu bar and keyboard will not be displayed when side-by-side or top-and-bottom is selected in full-screen mode and stereoscopic view is selected. You can exit full-screen mode with the F11 key. The Alt+Shift+T keys can be used to start or end stereoscopic viewing. 全画面表示かつ立体視のとき、サイドバイサイドまたはトップアンドボトムを選択すると、メニューバーとキーボードが表示されなくなります。F11 キーで全画面表示を終了できます。Alt+Shift+T キーで立体視を開始または終了できます。

The stereoscopic viewing item has been added to the display menu. 画面メニュー立体視の項目 を追加しました。

Added parameters stereoscopic and stereoscopicmethod. パラメータ stereoscopic および stereoscopicmethod を追加しました。

GIF animation recording GIF アニメーション録画

Added GIF animation recording feature. The X68000 screen can be captured frame by frame and saved as a GIF animation. GIF アニメーション録画機能 を追加しました。X68000 の画面をフレーム毎に取り込んで GIF アニメーションとして保存できます。

You can select the waiting time, recording time, magnification factor, and interpolation algorithm in the GIF animation recording settings menu in the display menu. The waiting time is the number of seconds between when you press start recording button and when the recording starts, from 0 to 10 seconds. If you want to record a shooter's battlefield and you are reaching for the start recording button, you might get hit. By setting a wait time, you can pause the game and press the start recording button before entering the fight. The recording time is the number of seconds between the start and end of the recording, from 1 to 30 seconds. Recording for 30 seconds may not be possible in some environments because it consumes a lot of memory. Magnification is the magnification of the screen, from 10% to 200% with 100% being 1x. Interpolation algorithm is the algorithm used to scale the screen. You can choose between nearest neighbor interpolation, linear interpolation, and bicubic interpolation. 画面メニュー の中の GIF アニメーション録画設定メニュー で待ち時間、録画時間、倍率および補間アルゴリズムを選択できます。 待ち時間は録画開始ボタンを押してから録画が始まるまでの秒数です。0 秒から 10 秒まで指定できます。シューティングゲームの修羅場を録画したいときに録画開始ボタンに手を伸ばしていたらやられてしまうかも知れません。待ち時間を設定すれば修羅場に入る前にゲームを一時停止させて録画開始ボタンを押しておけます。 録画時間は録画が始まってから終わるまでの秒数です。1 秒から 30 秒まで指定できます。大量のメモリを消費するので環境によっては 30 秒間録画することはできないかも知れません。 倍率は画面の拡大率です。100% が 1 倍で 10% から 200% まで指定できます。 補間アルゴリズムは画面を拡大縮小するときのアルゴリズムです。最近傍補間、線形補間および三次補間から選択できます。

Start recording with the start recording button in the display menu. If you select GIF animation recording in the F11 key menu in the input menu, you can start recording with the F11 key. Recording will automatically end at the specified time. Recording cannot be stopped. Do not change the screen mode or exit the emulator while recording. 画面メニュー の中の録画開始ボタンで録画を開始します。 入力メニュー の中の F11 キーメニュー で GIF アニメーション録画を選択すると F11 キーで録画を開始できます。 録画は指定された時間で自動的に終了します。 録画を中止することはできません。録画中に画面モードを変更したりエミュレータを終了させたりしないでください。

GIF files are saved in the same capture directory as screenshots. GIF ファイルはスクリーンショットと同じ capture ディレクトリに保存されます。

Added parameters gifwaitingtime, gifrecordingtime, gifmagnification and gifinterpolation. パラメータ gifwaitingtimegifrecordingtimegifmagnification および gifinterpolation を追加しました。

Model name 機種名

Shodai, ACE, PRO and 030Compact can be specified as model names. The model name is written at the end of IPLROM 1.6 ($00FFFFE4-). 機種名に Shodai、ACE、PRO および 030Compact を指定できます。 機種名は IPLROM 1.6 の末尾 ($00FFFFE4-) に書き込まれます。

DMAC

HLT is now supported. a_stop and a_cont will work. HLT に対応しました。a_stop と a_cont が機能します。

The number of cycles required for DMAC to transfer one word from SRAM to SRAM is 12 for PRO, 9 for Compact, and 10 for others. DMAC が SRAM から SRAM へ 1 ワード転送するときの所要サイクル数が、PRO は 12、Compact は 9、その他は 10 になります。

MC68000

When ABCD/NBCD/SBCD was executed, the undefined V flag was cleared. This was changed so that the V flag is set when overflow occurs due to addition or subtraction of correction values, otherwise the V flag is cleared. (Reference: K.i's tweet) ABCD/NBCD/SBCD が実行されたとき、未定義の V フラグをクリアしていました。 これを、補正値の加算または減算でオーバーフローしたとき V フラグをセット、さもなくば V フラグをクリアするように変更しました。(参考 : K.i さんのツイート)

MC68010

The undefined V flag change for ABCD/NBCD/SBCD are now the same as in MC68000. ABCD/NBCD/SBCD の未定義の V フラグの変化を MC68000 と同じにしました。

The number of MULU/MULS cycles is now the same as on the MC68000. MULU/MULS のサイクル数を MC68000 と同じにしました。

MC68060

When MOVE16 (Ar)+,(Ar)+ was executed, Ar was increased by 32. This has been corrected to increase Ar by 16. MOVE16 (Ar)+,(Ar)+ が実行されたとき、Ar を 32 増やしていました。 これを、Ar を 16 増やすように修正しました。

Screen mode test 表示モードテスト

Fixed a bug that prevented the screen from updating correctly when operating the screen mode test with the MPU stopped in low-resolution mode. 低解像度モードのとき MPU を停止させて表示モードテストを操作すると画面が正しく更新されないバグを修正しました。

IPLROM 1.6

Added startup device as a display item on the startup screen. 起動画面の表示項目に起動デバイスを追加しました。

The display position of the startup screen is no longer shifted to the right when starting up in VGA mode. VGA モードで起動したとき起動画面の表示位置が右にずれないようにしました。

When the T key is held down during startup, the startup screen mode is set to CRTMOD(1), i.e., 512x480 dots, 15.980 kHz horizontal, 61.463 Hz vertical (interlaced). When a CRT capable of displaying only 15 kHz is connected, you can perform the necessary operations to start up a game that supports 15 kHz, such as moving the current directory. T キーを押しながら起動すると、起動時の画面モードが CRTMOD(1)、すなわち、512x480 ドット、水平 15.980kHz、垂直 61.463Hz(インターレース)に設定されます。15kHz だけ表示できる CRT が接続されているとき、カレントディレクトリを移動することなどの、15kHz に対応しているゲームを起動するために必要な操作ができます。

IPLROM 1.6 has a function to automatically modify HD_MAX in SRAM to allow booting from both SASI- and SCSI-embedded machines. This has been changed to be done only when initializing SRAM. As with IPLROM 1.0, HD_MAX is set to 1 when SRAM is initialized on a machine with built-in SASI. If ID0 is SxSI, boot from a floppy disk or other device and use SWITCH HD_MAX=0 to reset HD_MAX to 0. IPLROM 1.6 には SASI 内蔵機と SCSI 内蔵機のどちらでも起動できるようにするために SRAM にある HD_MAX を自動修正する機能があります。 これを SRAM を初期化するときにだけ行うように変更しました。IPLROM 1.0 と同様に SASI 内蔵機で SRAM を初期化すると HD_MAX が 1 になります。ID0 が SxSI の場合はフロッピーディスクなどから起動して SWITCH HD_MAX=0 で HD_MAX を 0 に戻してください。

misc/crtmodtest.x

Displays help messages separated by pages. However, when condrv.sys is present, it is displayed normally. ヘルプメッセージをページ毎に区切って表示します。 ただし、condrv.sys があるときは普通に表示します。

misc/ppcon.x

Added misc/ppcon.x. A character display routine that supports proportional-pitch and right-justification used in the IPLROM 1.6 startup screen can be incorporated as a device driver or resident program. misc/ppcon.x を追加しました。IPLROM 1.6 の起動画面で使われているプロポーショナルピッチや右寄せに対応した文字表示ルーチンをデバイスドライバまたは常駐プログラムとして組み込めるようにしたものです。

0.22.02.21

Mouse マウス

No longer switches to seamless mouse mode when losing focus in exclusive mouse mode. When in exclusive mouse mode, clicking the wheel (or right-clicking while holding down the Alt key on a two-button mouse) or pressing the F12 key will switch to seamless mouse mode. エクスクルーシブマウスモード でフォーカスを失ったとき、シームレスマウスモード に切り替わらないようにしました。 エクスクルーシブマウスモードのとき、ホイールをクリックする (2 ボタンマウスのときは Alt キーを押しながら右クリックする) か F12 キーを押すとシームレスマウスモードに切り替わります。

Printer プリンタ

Fixed the generation of pica, elite, small, and script fonts for use with printer. プリンタ で使うパイカ、エリート、縮小、スクリプトのフォントの生成を修正しました。

MFP

Timer-B can now be controlled. You can use the keyboard only when TBCR is $01 and TBDR is $0D. Timer-B を操作できるようにしました。TBCR が $01 かつ TBDR が $0D のときだけキーボードが使えます。

IPLROM 1.6

When a machine with built-in SCSI also has an expansion SCSI, the internal SCSI is not initialized before branching to the boot device process. When there is an expansion SCSI, the SCSI bus reset for the internal SCSI is not performed, so the time the startup message is displayed is shortened. If you want to check the boot message, press the reset button while holding down the L, N, or V key. SCSI 内蔵機で拡張 SCSI もあるとき、起動デバイスの処理に分岐する前に内蔵 SCSI を初期化しないようにしました。 拡張 SCSI があるとき、内蔵 SCSI の SCSI バスリセットが行われないため、起動メッセージが表示されている時間が短くなります。 起動メッセージを確認したいときは、L キー、N キー、V キーのいずれかを押しながらリセットボタンを押してください。

When the startup message is finished, if any of the L, N, or V keys is pressed, wait until those keys are released, empty the key buffer, and then wait until a key is pressed. The L key is for switching to LCD mode, the N key is for switching to CRT mode, and the V key is for switching to VGA mode. The screen mode switching is over before the startup message is displayed. 起動メッセージの表示が終わったとき、L キー、N キー、V キーのいずれかが押されていたら、それらのキーが離されるまで待って、キーバッファを空にしてから、キーが押されるまで待ちます。L キーは LCD モード、N キーは CRT モード、V キーは VGA モードに切り替えるキーです。 起動メッセージが表示される前に画面モードの切り替えは終わっています。

The display of the DMAC operating frequency at startup has been changed to show the performance when the performance of the X68000 is 100%. X68030 and PRO will be displayed as 125% and 83%, respectively. 起動時の DMAC の動作周波数の表示を X68000 の性能を 100% としたときの性能の表示に変更しました。X68030 は 125%、PRO は 83% と表示されます。

Changed the height of CRTMOD modes 1, 5, 9, and 13 for LCD from 512 dots to 480 dots, and the height of modes 3, 7, 11, and 15 from 256 dots to 240 dots. CRTMOD の LCD 向けのモード 1、5、9、13 の縦を 512 ドットから 480 ドットに、モード 3、7、11、15 の縦を 256 ドットから 240 ドットに変更しました。

When an undefined screen mode is specified in CRTMOD, it only returns the current screen mode instead of switching to the screen mode at startup. However, when $43xx or $4Cxx is specified, it will set the switch for CRT and LCD. CRTMOD で未定義の画面モードが指定されたとき、起動時の画面モードに切り替えるのではなく、現在の画面モードを返すだけにしました。 ただし、$43xx または $4Cxx が指定されたときは、CRT 向けと LCD 向けのスイッチを設定します。

SCSIINROM 16 and SCSIEXROM 16 SCSIINROM 16 と SCSIEXROM 16

Changed the condition for initialization from when the vector of _SCSIDRV did not point to itself to when the vector of _SCSIDRV did not point to itself or the SCSI initialized flag was not set. 初期化を行う条件を、_SCSIDRV のベクタが自分を指していなかったときから、_SCSIDRV のベクタが自分を指していなかったまたは SCSI 初期化済みフラグがセットされていないときに変更しました。

Fixed processing when Service Required interrupt occurs in _S_DATAINI. _S_DATAINI で Service Required 割り込みが発生したときの処理を修正しました。

misc/*

Added crtmod16.x and crtmodtest.x to misc/*. misc/* に crtmod16.xcrtmodtest.x を追加しました。

0.22.02.10

CGROM

Fixed a bug that caused an out of bounds error when the parameter -cgrom specified CGROM.DAT without ANK 6x12. パラメータ -cgrom で ANK 6x12 が入っていない CGROM.DAT を指定したとき out of bounds エラーが発生するバグを修正しました。

0.22.02.06

IPLROM 1.6

Fixed the operating frequency of the X68000 DMAC displayed at startup. 起動時に表示される X68000 の DMAC の動作周波数を修正しました。

SRAM

The number of wait cycles when accessing SRAM has been adjusted. SRAM にアクセスするときのウェイトサイクル数を調整しました。

DMAC

The number of cycles required for access by DMAC has been adjusted. DMAC によるアクセスの所要サイクル数を調整しました。

System port システムポート

Fixed a bug that when writing a word-size value with a lower byte of $31 to $00E8E00C, writing to SRAM was not allowed unless the upper byte of the value was $00. $00E8E00C に下位バイトが $31 の値をワードサイズで書き込んだとき、その上位バイトが $00 でなければ SRAM への書き込みが許可されないバグを修正しました。

0.22.02.03

Keyboard キーボード

The key assignment of the numeric keypad when NumLock is enabled was missing. Also, the assignment of the ROLL UP key and the ROLL DOWN key was reversed. The key assignments are saved, so even if you upgrade XEiJ, the old assignments will be inherited. Open the key assignments window by clicking Key assignments in the Input menu, and click "Reset to default" to apply the default values of the new version. NumLock されているときのテンキーの数字のキー割り当てが欠落していました。 また、ROLL UP キーと ROLL DOWN キーの割り当てが逆でした。 キー割り当ては保存されているので、XEiJ をバージョンアップしても古い割り当てが引き継がれます。 入力メニューキー割り当て でキー割り当てウインドウを開き、「初期値に戻す」をクリックすると、新しいバージョンの初期値が適用されます。

SRAM

You can select whether to ignore or make a bus error when writing to SRAM in a write-protected state. Added the parameter -srambuserror. Added "Bus error when writing to SRAM" to the SRAM menu. 書き込みが禁止されている状態の SRAM への書き込みを無視するかバスエラーにするか選択できます。 パラメータ -srambuserror を追加しました。 SRAM メニュー に「SRAM への書き込み時のバスエラー」を追加しました。

0.22.02.01

IPLROM 1.6

At boot time, when the SRAM is initialized and the memory size setting in the SRAM does not match the actual memory size, IPLROM 1.6 asks if the setting should be corrected. There was a problem with this process and it sometimes failed to boot. On XEiJ, the emulator corrects the memory size setting in the SRAM, so this problem did not occur. 起動時、SRAM が初期化されていて SRAM にあるメモリサイズの設定値が実際のメモリサイズと合っていないとき、IPLROM 1.6 は設定値を修正するか問い合わせます。 この処理に不具合があって起動できないことがありました。XEiJ 上ではエミュレータが SRAM にあるメモリサイズの設定値を修正してしまうのでこの不具合は発生しませんでした。

At startup, IPLROM 1.6 displays an error message and stops if there is a SCSIINROM for a machine with SASI, or if there is no SCSIINROM 16 for a machine with SCSI. There was a problem with this process and it sometimes failed to boot. This problem did not occur on XEiJ because the wrong combination never occurs. 起動時、SASI 内蔵機なのに SCSIINROM があるときまたは SCSI 内蔵機なのに SCSIINROM 16 がないとき、IPLROM 1.6 はエラーメッセージを表示して停止します。 この処理に不具合があって起動できないことがありました。XEiJ 上では間違った組み合わせになることはないのでこの不具合は発生しませんでした。

Memory size メモリサイズ

When resetting, if the memory size setting in the SRAM is different from the actual memory size, you can now choose whether to correct the setting or not. Added parameter -modifymemorysize. Added "Modify the memory size in SRAM" to the main memory menu. リセットするとき、SRAM にあるメモリサイズの設定値が実際のメモリサイズと違っていたら、設定値を修正するかどうか選択できるようにしました。 パラメータ -modifymemorysize を追加しました。 メインメモリメニュー に「SRAM にあるメモリサイズを修正する」を追加しました。

ROM debugger startup flag ROM デバッガ起動フラグ

On X68030, when IPLROM 1.6 is not used and ROM30.DAT is not specified, i.e., when there is only the second half of IPLROM 1.3 but no ROM debugger that should be in the first half, the ROM debugger startup flag in SRAM is not turned on. X68030 で IPLROM 1.6 を使わず ROM30.DAT も指定しなかったとき、すなわち、IPLROM 1.3 の後半だけあって前半にあるはずの ROM デバッガがないとき、SRAM にある ROM デバッガ起動フラグを ON にしないようにしました。

IBM Super Floppy format IBM スーパーフロッピー形式

An image file in IBM Super Floppy format is considered a SCSI MO. It is not a boot disk, but you can use susie.x to access the files. It can be formatted with fim.x. IBM スーパーフロッピー形式のイメージファイルを SCSI MO とみなします。 起動ディスクにはなりませんが、susie.x を使ってファイルにアクセスできます。fim.x でフォーマットできます。

0.22.01.30

IPLROM 1.6

IPLROM 1.5 is obsolete and has been replaced by IPLROM 1.6. IPLROM modifications are now integrated into IPLROM 1.6, and no patch is applied when using IPLROM 1.0-1.3. Added parameter -iplrom16 to enable IPLROM 1.6 except for Hybrid and 060turbo, and parameter -iplrom256k to change the configuration of IPLROM 1.6. IPLROM 1.5 を廃止し、IPLROM 1.6 に移行しました。IPLROM の改造を IPLROM 1.6 に集約し、IPLROM 1.0~1.3 を使用する場合はパッチを当てないことにしました。Hybrid と 060turbo 以外で IPLROM 1.6 を有効にするパラメータ -iplrom16 と、IPLROM 1.6 の構成を変更するパラメータ -iplrom256k を追加しました。

Create ROM file ROM ファイルの作成

Added "Create XEIJROM30.DAT", "Create XEIJIPLROM30.DAT", "Create XEIJSCSIINROM.DAT" and "Create XEIJSCSIEXROM.DAT" to the menu Create ROM File. You may be able to use IPLROM 1.6 with other emulators. メニュー ROM ファイルの作成 に「XEIJROM30.DAT の作成」、「XEIJIPLROM30.DAT の作成」、「XEIJSCSIINROM.DAT の作成」および「XEIJSCSIEXROM.DAT の作成」を追加しました。IPLROM 1.6 を他のエミュレータで使えるかも知れません。

Keyboard キーボード

The initial value of the key assignment and the method of key identification are divided between Mac and Windows. (Thanks yuduki) キー割り当ての初期値とキーの判別方法を Mac のときと Windows のときで分けました。(Thanks yuduki)

The parameter keymap has been changed to reflect the change in the key identification method. キーの判別方法の変更に伴い、パラメータ keymap の内容が変更されました。

In Windows, NumLock becomes the CLR key, and although NumLock is switched when the CLR key is pressed, numbers on the numeric keypad can be input as numbers even if NumLock is off. Windows のとき NumLock が CLR キーになります。CLR キーを押すと NumLock が切り替わってしまいますが、NumLock が OFF でもテンキーの数字は数字のまま入力できます。

The F11 and F12 keys can be assigned. These key assignments take precedence over full screen display and exclusive mode switching. F11 キーと F12 キーを割り当てることができます。これらのキー割り当ては全画面表示やエクスクルーシブモードの切り替えよりも優先します。

Added "blank" and "reset to default" buttons to the key assignment window. キー割り当てウインドウに「白紙にする」ボタンと「初期値に戻す」ボタンを追加しました。

The parameter accessrawcode has been removed. パラメータ accessrawcode を廃止しました。

When the keyboard is disconnected, the key jack status in bit 3 of system port $00E8E007 will be set to 0. キーボードを切り離すとシステムポート $00E8E007 の ビット 3 のキージャックステータスが 0 になります。

Xellent30 mode Xellent30 モード

Added Xellent30 mode. Xellent30 モードを追加しました。

CRTMOD CRTMOD

Added 384x256, 512x512 (square), and 256x256 (square) modes to CRTMOD in IPLROM 1.6. This feature may be substantially changed or eliminated in a future release. IPLROM 1.6 の CRTMOD に 384x256、512x512 (正方形)、256x256 (正方形) モードを加えました。この機能は今後のリリースで大幅に変更されるか廃止される可能性があります。

screen mode画面モードscreen size画面サイズreal screen size実画面サイズnumber of colors色数number of pagesページ数
28384x2561024x1024161
29512x5124
302562
31655361
32512x512 (square正方形)1024x1024161
33512x5124
342562
35655361
36256x256 (square正方形)1024x1024161
37512x5124
382562
39655361

Clipboard クリップボード

Added IllegalStateException workaround to the clipboard flavor listener. Reference : Tweet by kata68k クリップボードのフレーバーリスナーに IllegalStateException のワークアラウンドを加えました。参考 : カタさんのツイート

CON device control CON デバイス制御

You can paste an escape sequence into the console. コンソールにエスケープシーケンスを貼り付けることができます。

DMAC DMAC

The MPU will not execute instructions while the DMAC is transferring at the auto-request maximum rate. DMAC がオートリクエスト最大速度で転送している間 MPU が命令を実行しないようにしました。

FPCP and FPU FPCP と FPU

When $FFFFFFFF is written to FPCR and FPSR and then read immediately, $0000FFF0 and $0FFFFFF8 are now read out. FPCR と FPSR に $FFFFFFFF を書き込んでそれをすぐに読み出したとき、$0000FFF0 と $0FFFFFF8 が読み出されるようにしました。

The condition code byte of FPSR is no longer cleared by FMOVE.* FPn,<ea>. FMOVE.* FPn,<ea> で FPSR のコンディションコードバイトがクリアされないようにしました。

Human68k patch Human68k のパッチ

Added Human68k patch for MC68010. When executing the MOVE from SR instruction in user mode, it works fine on the MC68000, but causes a privilege violation exception on the MC68EC030. This difference is one of the reasons why programs made for the X68000 do not work on the X68030. Therefore, the Human68k has a mechanism to rewrite the MOVE from SR instruction to MOVE from CCR instruction, clear the instruction cache, and re-execute the program when a privilege violation exception occurs. Since the instruction cache is cleared by directly manipulating CACR, there is a problem that it does not work as expected except for MC68EC030. In MC68010, there is no CACR, so an illegal instruction exception occurs. It is patched to use IOCS _SYS_STAT instead of directly manipulating CACR. MC68010 のための Human68k のパッチを追加しました。MOVE from SR 命令をユーザモードで実行したとき MC68000 では問題なく動きますが MC68EC030 では特権違反例外が発生します。この違いは X68000 用に作られたプログラムが X68030 で動かない原因のひとつになります。そのため Human68k には特権違反例外が発生したとき MOVE from SR 命令を MOVE from CCR 命令に書き換えて命令キャッシュをクリアして再実行する仕組みがあります。CACR を直接操作して命令キャッシュをクリアしているので MC68EC030 以外で期待通りに動作しないという問題があります。MC68010 では CACR がないので不当命令例外が発生してしまいます。CACR を直接操作せず IOCS _SYS_STAT を使うようにパッチが当たります。

SRAM SRAM

When accessing SRAM on the X68000, a wait of one cycle is applied. X68000 で SRAM にアクセスするときウェイトが 1 サイクル入ります。

Text storage and graphic storage テキストストレージとグラフィックストレージ

The CRTC's text storage and graphic storage (bits 12 and 11 of R20) can now be manipulated. This mode uses VRAM as storage when screen display is not needed. When text storage is turned on, nothing changes. When graphic storage is turned on, the memory mode is fixed to 3 (7 when the extended graphic screen is enabled). The display on the emulator does not change, but on the actual device, the screen will be distorted. It is recommended to turn off the screen display by operating the video controller before turning on the storage. CRTC のテキストストレージとグラフィックストレージ (R20 のビット 12 と 11) を操作できるようにしました。画面表示が不要なとき、VRAM をストレージとして用いるモードです。テキストストレージを ON にしても何も変わりません。グラフィックストレージを ON にするとメモリモードが 3 (拡張グラフィック画面が有効なときは 7) に固定されます。エミュレータの表示は変わりませんが、実機では画面が乱れます。ビデオコントローラを操作して画面表示を OFF にしてからストレージを ON にした方がよいでしょう。

Obsolete features 廃止された機能

Font editor and profiling have been discontinued. フォントエディタとプロファイリングを廃止しました。

0.21.01.11

SCSIINROM / SCSIEXROM

SCSI _S_DATAINI in ROM 1.5 was not being relocated correctly when automatically generating SCSIINROM and SCSIEXROM. SCSIINROM と SCSIEXROM を自動生成するとき ROM 1.5 の SCSI _S_DATAINI が正しくリロケートされていませんでした。

ROM 1.5 : IOCS _CRTMOD

When D1.W=$43xx is given, the sync frequency for CRT is selected, and when D1.W=$4Cxx is given, the sync frequency for LCD is selected. D1.W=$43xx を与えると CRT 向けの同期周波数が選択され、D1.W=$4Cxx を与えると LCD 向けの同期周波数が選択されます。

The screen sizes for screen modes 17/21/25 and 18/22/26 are as follows. 画面モード 17/21/25 と 18/22/26 の画面サイズは以下の通りです。

screen mode画面モードfor CRTCRT 向けfor LCDLCD 向けnote備考
17/21/251024x424768x600
18/22/261024x848768x1024interlaceインターレース

0.21.01.03

ROM 1.5 : IOCS _SP_INIT

When I switched the order of the code, I forgot to move the labels, so the sprites could not be displayed. コードの順序を入れ替えたときラベルを動かすのを忘れたためスプライトが表示できなくなっていました。

CRTC

Fixed a bug that fast clearing did not start when writing to the operating port with word size or long word size. 動作ポートにワードサイズまたはロングワードサイズで書き込むと高速クリアが始まらなかったバグを修正しました。

Fixed a bug that allowed the scrolling position in the Y direction of the text and graphic screens to be changed anywhere on the screen. テキスト画面とグラフィック画面の Y 方向のスクロール位置を画面のどこでも変更できたバグを修正しました。

Sprite screen スプライト画面

When writing to the Sprite Scroll Register, Sprite PCG, and Text Area in byte size, the same value is now written to the upper and lower bytes in word size. スプライトスクロールレジスタとスプライト PCG およびテキストエリアにバイトサイズで書き込んだとき、ワードサイズで上位バイトと下位バイトに同じ値が書き込まれるようにしました。

0.20.12.31

ROM 1.5 : Initialize the area set port ROM 1.5 : エリアセットポートの初期化

The IPLROM 1.3 of X68030 initializes the area set port with the CLR instruction. If you try to use this on the X68000 as is, you will get a bus error. This is because the area set port is write-only, and the MC68000's CLR instruction reads the effective address. This bug has been fixed. Reference : futtyt's series of thoughts X68030 の IPLROM 1.3 はエリアセットポートの初期化を CLR 命令で行います。 これをそのまま X68000 で使おうとするとバスエラーが発生してしまいます。 なぜなら、エリアセットポートはライトオンリーで、MC68000 の CLR 命令は実効アドレスをリードするからです。 このバグを修正しました。 参考 : ふってぃさんの一連の考察

ROM 1.5 : IOCS _SCSIDRV

If you try to operate a non-existent internal SPC on a machine with built-in SASI, it will dump meaningless data to the SASI port. For machines with built-in SASI, IOCS _SCSIDRV does nothing and returns the error code -1. SASI 内蔵機で存在しない内蔵 SPC を操作しようとすると SASI ポートに無意味なデータを垂れ流すことになります。SASI 内蔵機のとき IOCS _SCSIDRV は何もせずエラーコード -1 を返すようにしました。

ROM 1.5 : SCSI _S_DATAINI

SCSI _S_DATAINI writes data to memory in longword size when receiving more than 8 bytes, so when used with MC68000, an address error occurs when the address is an odd number. It has been modified to write data to memory in byte size when used with the MC68000. The same transfer routines are used in the following SCSI calls : _S_INQUIRY _S_MODESENSE _S_READ _S_READEXT _S_READCAP _S_REQUEST SCSI _S_DATAINI は 8 バイト以上受信するときデータをロングワードサイズでメモリに書き込むので、MC68000 で使うとアドレスが奇数のときにアドレスエラーが発生してしまいます。MC68000 のときはデータをバイトサイズでメモリに書き込むように、修正しました。 同じ転送ルーチンが以下の SCSI コールでも使われています : _S_INQUIRY _S_MODESENSE _S_READ _S_READEXT _S_READCAP _S_REQUEST

It seems that some hard disks do not wait for the ACK to become False when transitioning from the data-in phase to the status phase. If such a hard disk is connected, a Service Required interrupt may occur due to a phase mismatch. If a Service Required interrupt occurs in SCSI _S_DATAINI, the transfer will be interrupted and the data remaining in the FIFO will not be received. As a countermeasure, even if a Service Required interrupt occurs during transfer, the transfer will be continued if the FIFO is not empty. In addition, even if a Service Required interrupt occurs when the transfer is completed, it is not considered an error. Reference : Tweet by 52429 データインフェーズからステータスフェーズに移行するとき ACK が False になるのを待たないハードディスクがあるようです。 そのようなハードディスクを接続するとフェーズの不一致のために Service Required 割り込みが発生する可能性があります。SCSI _S_DATAINI で Service Required 割り込みが発生すると転送が中断して FIFO に残っていたデータを受け取り損ねてしまいます。 対策として、転送中に Service Required 割り込みが発生しても FIFO が空でなければ転送を継続するように変更しました。 また、転送が終了したときに Service Required 割り込みが発生していてもエラーとみなさないようにしました。 参考 : 52429 さんのツイート

ROM 1.5 : IOCS _CRTMOD

The X68030 screen is normally output at the CRT sync frequency, but the LCD sync frequency can also be selected. When bit 0 of $00ED0095 in SRAM is set to 0, the output is for CRT, and when it is set to 1, the output is for LCD. This bit is set when the L or V key is pressed while booting, and cleared when the N key is pressed while booting. By using the ROM with this patch applied on the actual device, you may be able to avoid the sad situation where the boot screen is stretched vertically and the bottom edge protrudes when the X68030 is connected to an ordinary LCD monitor. When you select the sync frequency for LCD, games that use sync signals may not run or may run at a speed different from the original speed. X68030 の画面は通常は CRT 向けの同期周波数で出力されますが、LCD 向けの同期周波数も選べるようにしました。SRAM の $00ED0095 のビット 0 が 0 のときは CRT 向け、1 のときは LCD 向けになります。 このビットは L または V キーを押しながら起動するとセットされ、N キーを押しながら起動するとクリアされます。 このパッチを当てた ROM を実機で使用することで、X68030 を一般的な液晶モニタに接続したときに起動画面が縦に伸びて下端がはみ出すという悲しい状況を回避できるかも知れません。LCD 向けの同期周波数を選んだとき、同期信号を使うゲームが動作しなかったり、本来の速度と異なる速度で動作する可能性があります。

screen mode画面モードfor CRTCRT 向けfor LCDLCD 向け
horizontal sync frequency水平同期周波数vertical sync frequency垂直同期周波数horizontal sync frequency水平同期周波数vertical sync frequency垂直同期周波数
768x512high resolution高解像度31.500kHz55.458Hz35.056kHz56.090Hz
512x512high resolution高解像度31.500kHz55.458Hz35.341kHz56.546Hz
low resolution低解像度15.980kHz61.462Hz
256x256high resolution高解像度31.500kHz55.458Hz34.500kHz55.200Hz
low resolution低解像度15.980kHz61.462Hz47.250kHz75.600Hz
SVGA 800x600 for reference参考値35.156kHz56.250Hz
46.875kHz75.000Hz

ROM 1.5 : IOCS _SP_INIT

In screen mode 16 (768x512), the sprite cannot be displayed, so IOCS _SP_INIT returns the error code -1. In screen mode 19 (640x480), the sprite cannot be displayed either, but IOCS _SP_INIT stops with a bus error. This is because IOCS _SP_INIT does not correctly identify the screen mode in which the sprite can be displayed. This bug has been fixed. The same identification routine is used in the following IOCS calls : _SP_ON _SP_CGCLR _SP_DEFCG _SP_GTPCG _SP_REGST _SP_REGGT _BGSCRLST _BGSCRLGT _BGCTRLST _BGCTRLGT _BGTEXTCL _ BGTEXTST _BGTEXTGT 画面モード 16 (768x512) のときはスプライトを表示できないので IOCS _SP_INIT はエラーコード -1 を返します。 画面モード 19 (640x480) のときもスプライトを表示できませんが IOCS _SP_INIT はバスエラーで止まってしまいます。 これは IOCS _SP_INIT がスプライトを表示できる画面モードを正しく判別していないためです。 このバグを修正しました。 同じ判別ルーチンが 以下の IOCS コールでも使われています : _SP_ON _SP_CGCLR _SP_DEFCG _SP_GTPCG _SP_REGST _SP_REGGT _BGSCRLST _BGSCRLGT _BGCTRLST _BGCTRLGT _BGTEXTCL _BGTEXTST _BGTEXTGT

ROM 1.5 : 6x12 ANK font ROM 1.5 : 6x12 ANK フォント

The 6x12 ANK font is located in IPLROM on the X68000 and in CGROM on the X68030. Therefore, if you combine the CGROM of X68000 with the IPLROM of X68030, the 6x12 ANK font is not displayed in SX-WINDOW and so on. If you are using an emulator, you can solve this problem by simply replacing CGROM.DAT with CGROM30.DAT, but if the CGROM and IPLROM of the actual machine are not integrated, you cannot easily replace the CGROM. To solve this problem, we placed 6x12 ANK fonts at $00FEF400~$00FEFFFF of IPLROM and adjusted IOCS _FNTADR to display 6x12 ANK fonts without using CGROM. 6x12 ANK フォントは X68000 では IPLROM にあり X68030 では CGROM にあります。 そのため、X68000 の CGROM と X68030 の IPLROM を組み合わせると SX-WINDOW などで 6x12 ANK フォントが表示されません。 エミュレータならば CGROM.DAT を CGROM30.DAT に差し替えるだけで解決しますが、実機の CGROM と IPLROM が一体になっていない機種では CGROM を簡単に差し替えることができません。 そこで、6x12 ANK フォントを IPLROM の $00FEF400~$00FEFFFF に配置した上で IOCS _FNTADR を調整することで、CGROM を使わずに 6x12 ANK フォントを表示できるようにしました。

Create ROM file ROM ファイルの作成

Added Create ROM file to the Config menu. XEiJ uses ROM 1.5 by applying a patch to X68030 ROM 1.3. When you want to use this patched ROM with other emulators or actual devices, you need to create the necessary files. If you read the contents of the ROM from the X68030, have XEiJ patch it, and then return it to the X68030, you will have a ROM that can boot the 060turbo. 設定メニューROM ファイルの作成 を追加しました。XEiJ は X68030 の ROM 1.3 にパッチを当てて ROM 1.5 として使います。 このパッチが当たった ROM を他のエミュレータまたは実機で使いたいとき必要になるファイルを作ります。X68030 実機から ROM の内容を読み出してそれに XEiJ にパッチをあてさせてそれを再び X68030 実機に戻すと、060turbo を起動できる ROM ができます。

MC68000

Extra reads of the following instructions are executed. 以下の命令の余分なリードを実行します。

Sprite screen スプライト画面

Accessing the sprite scroll register and sprite PCG and text area causes a bus error when the lower 5 bits of the R20 register in the CRTC are %1??1?. CRTC の R20 レジスタの下位 5 ビットが %1??1? のとき、スプライトスクロールレジスタとスプライト PCG およびテキストエリアにアクセスするとバスエラーが発生します。

CRTC

The lengths of the horizontal back porch and horizontal front porch were corrected. 水平バックポーチと水平フロントポーチの長さを修正しました。

FDC

When resetting the system, the boot sequence could be stopped because the CB was not cleared. システムをリセットするとき CB をクリアしていなかったため起動シーケンスが止まることがありました。

ROM 1.0

IPLROM 1.0 ($10870318) taken from the first X68000 (Shodai) is recognized. X68000 初代から吸い出された IPLROM 1.0 ($10870318) が認識されます。

0.19.12.15

Execution environment 実行環境

Use JDK 13.0.1 GA Release to complile and run XEiJ. XEiJ のコンパイルと実行に JDK 13.0.1 GA Release を使います。

ROM

TOMO confirmed that the ROM patched by XEiJ can be used with real 060turbo machines. XEiJ がパッチを当てた ROM が 060turbo の実機で使えることを TOMO さんに確認していただきました。

The operating frequency of real 040turbo machines will be displayed correctly on the startup screen. But the ROM patched by XEiJ is not able to be used with 040turbo because the patches collide. Use not-patched ROM of X68030 for 040turbo. 040turbo の実機で起動画面に動作周波数が正しく表示されます。しかし、XEiJ がパッチを当てた ROM はパッチが衝突するので 040turbo では使用できません。040turbo ではパッチを当てていない X68030 の ROM を使用してください。

NetBSD/x68k

"Try to run the NetBSD/x68k" was updated to try NetBSD-8.1. NetBSD/x68k を動かしてみる」を NetBSD-8.1 に更新しました。

Menu メニュー

Mouse speed could not be changed. マウスカーソルの速度 が変更できなくなっていました。

Parameter パラメータ

When the parameter boot was specified with a hard disk image file, an out-of-memory error had occurred. パラメータ boot にハードディスクのイメージファイルを指定したときメモリ不足のエラーが出ることがありました。

The parameter clock could not accept a decimal number. パラメータ clock が 10 進数を受け付けなくなっていました。

When the parameter rom was specified, font data that was saved in the configuration file was wrongly restored. パラメータ rom が指定されたとき設定ファイルに保存されたフォントデータが誤って復元されていました。

MC68060

In MC68060, if the branch destination address is odd, Bcc/DBcc/FBcc cause an address error even if a branch is not taken. MC68060 の Bcc/DBcc/FBcc は分岐先のアドレスが奇数のとき分岐しなくてもアドレスエラーになります。

Displacement of FDBcc had been read from not the code space but the data space. FDBcc のディスプレースメントをコード空間ではなくデータ空間から読んでいました。

MC68000

The number of clock cycles of ADDA.L, SUBA.L, MULU.W and MULS.W were corrected. ADDA.L、SUBA.L、MULU.W および MULS.W のクロックサイクル数を修正しました。

0.19.01.24

Website ウェブサイト

The website of XEiJ had been moved to https://stdkmd.net/xeij/. Remove http://stdkmd.com/ from the Exception Site List in the Java control panel, if any. XEiJ のウェブサイトは https://stdkmd.net/xeij/ に引っ越しました。Java コントロールパネルの例外サイトリストに http://stdkmd.com/ があれば取り除いてください。

Execution environment 実行環境

Use JDK 11.0.2 GA Release to complile and run XEiJ. XEiJ のコンパイルと実行に JDK 11.0.2 GA Release を使います。

How to start 起動方法

The Java applet mode to launch XEiJ on web browsers and the JNLP mode to launch XEiJ via Java Web Start had been abolished. XEiJ only works in the command line mode from now on. ウェブブラウザ上で XEiJ を起動する Java アプレットモードと Java Web Start を介して XEiJ を起動する JNLP モードを廃止しました。今後、XEiJ はコマンドラインモードでのみ動作します。

Log messages ログメッセージ

Output destination of log messages was changed from the terminal to standard output. ログメッセージの出力先を ターミナル から標準出力に変更しました。

Key assignments キー割り当て

You can change key assignments as to which key of X68000 is to be pressed when a key of the host machine is pressed. The assignment of the escape key can not be changed because the escape key is used to cancel assignments. ホストマシンのキーを押したとき X68000 のどのキーが押されたことにするか、キー割り当てを変更できます。エスケープキーは割り当てを取り消すときに使うので割り当てを変更できません。

Key assignments are stored in the parameter keymap. キー割り当てはパラメータ keymap に保存されます。

Key input キー入力

To distinguish between IntlYen to the left of Backspace and IntlRo to the left of ShiftRight on Japanese 106 keyboard accurately, access to KeyEvent.rawCode is attempted. Therefore, the following warning message will appear on the console at startup. 日本語 106 キーボードで Backspace の左隣にある IntlYen と ShiftRight の左隣にある IntlRo を正確に見分けるために、KeyEvent.rawCode にアクセスを試みます。そのため、起動時にコンソールに以下の警告メッセージが表示されます。

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by xeij.Keyboard (.../XEiJ.jar) to field java.awt.event.KeyEvent.rawCode
WARNING: Please consider reporting this to the maintainers of xeij.Keyboard
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

If the parameter accessrawcode is off, KeyEvent.rawCode is not accessed. When KeyEvent.rawCode can not be accessed, rawCode= is extracted from the result of KeyEvent.toString (). パラメータ accessrawcode が off のときは KeyEvent.rawCode にアクセスしません。KeyEvent.rawCode にアクセスできないときは KeyEvent.toString () の結果から rawCode=~ の部分を切り出します。

The key code attribute values such as IntlYen are written at UI Events KeyboardEvent code Values . IntlYen などの key code attribute value は UI Events KeyboardEvent code Values に書かれています。

MC68010 MC68010

In X68000 Hybrid mode, you can select MC68010 with the parameter mpu or the MPU menu. Differences between MC68000 and MC68010 of XEiJ are as follows. X68000 Hybrid モードのとき、パラメータ mpu または MPU メニュー で MC68010 を選択できます。XEiJ の MC68000 と MC68010 の違いは以下の通りです。

Operation execution time is the same as MC68000. Loop mode has not been implemented. 命令の所要時間は MC68000 と同じです。ループモードは実装されていません。

060turbo mode 060turbo モード

Default operation frequency of 060turbo mode was reduced to 33.3MHz. 060turbo モードのデフォルトの動作周波数を 33.3MHz に下げました。

Trace machine instructions with mouse マウスによる機械語命令のトレース

You can stop and resume emulation by clicking button 4 on a 5 button mouse. When emulation is stopped, you can trace an instruction by forward rotating the mouse wheel and step an instruction by backward rotating the mouse wheel. Usually one instruction is executed per one notch. 10 instructions are executed if you hold down the Shift key. 100 instructions are executed if you hold down the Ctrl key. You can execute step-until-return by backward rotating the mouse wheel with holding down the Alt key. 5 ボタンマウスのボタン 4 でエミュレーションの停止と再開ができます。エミュレーションが停止しているとき、マウスホイールの正回転でトレース実行、負回転でステップ実行できます。通常は 1 ノッチにつき 1 命令、Shift キーを押しているときは 10 命令、Ctrl キーを押しているときは 100 命令が実行されます。Alt キーを押しながらマウスホイールを負回転させるとステップアンティルリターンが実行されます。

Extended click 延長クリック

The state that the button is pressed will be kept until the port B of SCC is read to detect mouse clicks without missing when a mouse button is pressed. Normally, the state of the mouse of X68000 is scanned at 1/100 second intervals, so clicks manipulated by humans are rarely missed. However, there was a possibility that clicks could be lost when the scan interval was longer than 1/100 second due to the heavy operation of the emulator or when the mechanically generated click was extremely short. マウスのボタンが押されてから SCC のポート B が読み出されるまでボタンが押されたままの状態にしておくことで、クリックを取りこぼさないようにしました。通常、X68000 のマウスの状態は 1/100 秒間隔でスキャンされるので、人間が操作したクリックが取りこぼされることはほとんどありません。しかし、エミュレータの動作が重くてスキャンの間隔が 1/100 秒よりも長くなったり、機械的に生成されたクリックが極端に短いと、クリックを取りこぼす可能性がありました。

Joystick port ジョイスティックポート

You can select devices connected to the joystick ports on the joystick port window. Corresponding parameter is joystickN. ジョイスティックポートウインドウでジョイスティックポートに接続するデバイスを選択できます。対応するパラメータは joystickN です。

Normal 2 button pad ノーマル 2 ボタンパッド

You can connect normal 2 button pads to joystick ports. It is a normal joy pad. No special joystick driver is required to use them. ジョイスティックポートに ノーマル 2 ボタンパッド を接続できます。普通のジョイパッドです。特別なジョイスティックドライバは不要です。

Settings of normal 2 button pads are stored in the parameter normal2buttonN. ノーマル 2 ボタンパッドの設定はパラメータ normal2buttonN に保存されます。

MEGA DRIVE 3 button pad メガドラ 3 ボタンパッド

You can connect MEGA DRIVE 3 button pads to joystick ports. Joystick driver that supports the Chelnov adapter is required to use them. ジョイスティックポートに メガドラ 3 ボタンパッド を接続できます。メガドラパッド変換アダプタに対応しているジョイスティックドライバが必要です。

Settings of MEGA DRIVE 3 button pads are stored in the parameter megadrive3buttonN. メガドラ 3 ボタンパッドの設定はパラメータ megadrive3buttonN に保存されます。

MEGA DRIVE 6 button pad メガドラ 6 ボタンパッド

You can connect MEGA DRIVE 6 button pads to joystick ports. Joystick driver that supports the Chelnov adapter is required to use them. ジョイスティックポートに メガドラ 6 ボタンパッド を接続できます。メガドラパッド変換アダプタに対応しているジョイスティックドライバが必要です。

Settings of MEGA DRIVE 6 button pads are stored in the parameter megadrive6buttonN. メガドラ 6 ボタンパッドの設定はパラメータ megadrive6buttonN に保存されます。

Shiromadokun 白窓君

You can connect the LCD device Shiromadokun to joystick ports. Shiromadokun device driver JLCDDRV.x is included in Gekikou Dennou Club Volume 3 and Gekkan Dennou Club Volume 147. LCD デバイス 白窓君 をジョイスティックポートに接続できます。白窓君デバイスドライバ JLCDDRV.x は激光電脳倶楽部 3 号と月刊電脳倶楽部 147 号に収録されています。

You can select Japanese specification or European specification with the parameter shiromadokunN. パラメータ shiromadokunN で日本仕様と欧州仕様を選択できます。

Font data フォントデータ

Font data is stored in the parameter f___data. フォントデータがパラメータ f___data に保存されます。

Font files フォントファイル

You can specify font files with the parameter f___. パラメータ f___ でフォントファイルを指定できます。

0.17.06.17

Execution environment 実行環境

Required version of Java SE has been updated to 8u131 (1.8.0_131) or later. 要求する Java SE のバージョンを 8u131 (1.8.0_131) 以上に更新しました。

*.DIM files *.DIM ファイル

*.DIM files are floppy disk image files converted by DIFC.X developed by GUN. XEiJ supports them now on not only reading but also writing and formatting. There are five acceptable media types: 2HD, 2HS, 2HC, 2HDE and 2HQ. The over track mode is not supported. On reading, unsaved tracks are filled by 0xe5. On writing and formatting, all tracks that include data other than 0xe5 are saved regardless of FAT. You can change the media type of *.DIM files by formatting with FORMAT.X or other tools. Note that formatting in an unsupported media type makes data unable to be written back to image files. *.DIM は GUN さんの DIFC.X で変換されたフロッピーディスクのイメージファイルです。XEiJ では読み込みだけ対応していましたが、書き出しと新規作成もできるようにしました。対応しているメディアタイプは 2HD、2HS、2HC、2HDE、2HQ の 5 種類です。オーバートラックには対応していません。読み込むときは保存されていないトラックを 0xe5 で充填し、書き出すときと新規作成するときは FAT に関係なく 0xe5 以外のデータを含むトラックをすべて保存します。*.DIM から読み込んだディスクを FORMAT.X などでフォーマットするとメディアタイプを変更できますが、対応していないメディアタイプに変更すると書き出せなくなるので注意してください。

Mouse マウス

Menu "Ctrl-key + left-button = right-button" and parameter ctrlright were added. Operations of left-button are treated as operations of right-button while Ctrl-key is pressed. 入力メニューの Ctrl キー+左ボタン=右ボタン とパラメータの ctrlright を追加しました。ON にすると Ctrl (control) キーが押されている間マウスの左ボタンの操作を右ボタンの操作とみなします。

Usually, right-button of mouse is assigned to the button 3 of a commonplace three button mouse. When a two button mouse is connected, right-button of mouse is assigned to the button 2. ありふれた 3 ボタンマウスが接続されていることを想定して右ボタンをボタン 3 に割り当てていましたが、2 ボタンマウスのときは右ボタンをボタン 2 に割り当てるようにしました。

When a two button mouse is connected, you can change the mouse mode by Alt-right click. Use conventional wheel click in case of a three button mouse. 2 ボタンマウスのときは Alt (option) + 右クリック でシームレス / エクスクルーシブを切り替えられるようにしました。3 ボタンマウスのときは従来通り中ボタンで切り替わります。

To check what kind of event occurs when mouse button is operated, menu item "Mouse button status" was added to the menu "Miscellaneous". When a mouse button is pressed or released, a message such as "mouse button 1/5 was pressed (0x00000010, 0x00000400)" appears on the terminal. マウスのボタンが操作されたときどのようなイベントが発生しているか確認するために、メニュー『その他』にメニューアイテム『マウスのボタンの状態』を追加しました。マウスのボタンを押したときまたは離したとき「mouse button 1/5 was pressed (0x00000010, 0x00000400)」のようなメッセージが ターミナル に表示されます。

CGROM

When XEiJ generates CGROM automatically with fonts of the host machine, characters defined in Shift_JIS-2004 (JIS X 0213) are drawn at unused blank codes. " か゚き゚く゚け゚こ゚" seems not drawn beautifully with MS Gothic and MS Mincho. ホストマシンのフォントを使って CGROM を自動生成するとき、使われていない空白のコードに Shift_JIS-2004 (JIS X 0213) で定義されている文字を展開します。MS ゴシックや MS 明朝は「か゚き゚く゚け゚こ゚」が綺麗に書けないようです。

Character code table is available. 文字コード表 を作りました。

RTC

RTC was corrected to avoid ArrayIndexOutOfBoundsException. RTC の操作で ArrayIndexOutOfBoundsException が発生することがありました。

TEST register of RTC was implemented. winner2.x that was developed by jinson runs. RTC の TEST レジスタを実装しました。じんそんさんの winner2.x が動きます。

References 参考

Menu "RTC" was added. When the clock of the X68000 is not on time with the clock of the host machine, use menu item "Adjust clock to host". RTC メニュー を追加しました。X68000 の時計とホストの時計がずれてしまったとき「時計をホストマシンに合わせる」で元に戻せます。

0.17.01.30

Floating point instructions 浮動小数点命令

Set UNFL in FDIV, FMUL and FSCALE when a result changed from a denormalized number to a normalized number, FDIV、FMUL、FSCALE で拡張精度の結果が切り上げられて非正規化数から正規化数になったとき、UNFL がセットされていませんでした。

Clear OPERR in FMOVE.P FPn,<ea> when FPn is±0 or±Inf or NaN and k-factor is 18 or upper. FMOVE.P FPn,<ea> で FPn が ±0 または ±Inf または NaN で k-factor が 18 以上のとき OPERR がセットされていました。

References 参考

fputest.x

fputest.x was updated. fputest.x を更新しました。

0.17.01.28

FPU、MC68882

FSGLDIV、FSGLMUL の変則的な動作が他の命令の動作に影響を与えていました。

FCOSH、FSINH で FPCR の丸めモードがゼロへの丸めまたは負の無限大への丸めでオーバーフローしたとき、結果が正規化数の最大値ではなく無限大になってしまうことがありました。

FTENTOX で ArrayIndexOutOfBoundsException が発生することがありました。

fputest.x

fputest.x を更新しました。およそ 29MB のデータを 7MB 弱に圧縮して抱えており、テスト毎に展開して比較する仕組みになっています。実行するにはフリーエリアが 10MB くらい必要です。

0.17.01.24

実行環境

要求する Java SE のバージョンを 8u121 (1.8.0_121) 以上に更新しました。

CRTC

垂直映像期間のすべてのラスタについて、水平映像期間の開始時から終了時までの間に、全画面再描画に相当する画面およびプレーンの表示の有無、重ね合わせの順序、半透明または特殊プライオリティ、パレット、スクロール位置などの変更があったとき、水平映像期間の終了時にデータの後半 (右半分) を再描画します。グラフィック画面で 768×512 ドット 256 色表示 (テキスト画面と混ぜて 4096 色表示) を行う画像ローダー (Arimac さんの BMPL.X/LPICL.X、CUL. さんの COPIX.r など) の画面を再現できます。

参考

FPU、MC68882

FATAN の引数が大きすぎて ±π /2 を返すとき、丸め処理が行われていませんでした。

FCOSH で FPCR の丸めモードがゼロへの丸めまたは負の無限大への丸めでオーバーフローしたとき、結果が正規化数の最大値ではなく無限大になっていました。

FDBcc、FScc、FTRAPcc で FPSR の BSUN をセットするとき、IOP をセットしていませんでした。

MC68060 の FDBcc で未実装浮動小数点命令例外が発生したとき、スタックに積まれた PC が次の命令ではなくディスプレースメントを指していました。

FMOVE.B FPn,<ea>、FMOVE.W FPn,<ea>、FMOVE.L FPn,<ea> が NaN を -1 ではなく 0 に変換していました。

FMOVE.L FPn,<ea> で FPCR の丸め桁数がシングルのとき、シングルで表現できないがロングで表現できる値の変換に失敗していました。ロングに変換する前に誤ってシングルに丸めていました。

FMOVE.S FPn,<ea> と FMOVE.D FPn,<ea> で FPCR の丸めモードがゼロへの丸めでオーバーフローしたとき、結果が正規化数の最大値ではなく無限大になっていました。

FSGLDIV、FSGLMUL の動作を実機に近付けました。MC68882 のバグは再現していません。

FSUB で 2127 から 264-1 を引いたとき、FPSR の INEX2 と INEX がセットされていませんでした。指数をずらした組み合わせや FADD で符号が異なる場合も同様でした。

演算結果の仮数部に誤差がない状態で指数部がオーバーフローして無限大または正規化数の最大値を返すとき、FPSR の INEX2 と INEX がセットされていませんでした。

演算結果が丸め処理で切り上げられて非正規化数から正規化数になったとき、FPSR の UNFL がセットされていました。

平方根と超越関数の誤差を減らしました。

実験的に FLGAMMA と FTGAMMA を追加しました。

実験的に追加された浮動小数点命令
OPMODE文法機能
1110000FLGAMMA.[BWLSDXP] <ea>,FPnログガンマ関数
1110001FTGAMMA.[BWLSDXP] <ea>,FPnガンマ関数

MC68EC030

CHK2、CMP2 の未定義のビットを含むコンディションコードの作り方を U - D、L - D、D - L のいずれかに帰着させる方法に変更しました。引数をすべて 32 ビットに符号拡張してから符号なし比較で以下のように分岐させます。

if (L < D && L ≤ U || D == U) {
  U - D
} else if (D < U && U < L) {
  L - D
} else {
  D - L
}

参考

DIVS、DIVSL、DIVU、DIVUL でゼロ除算が発生したときコンディションコードの未定義のビットで引数以外の要因で変化する Z と V のうち、V を作るコードを加えました。

参考

SRAM

SRAM メニューsramsize パラメータ で SRAM の容量を 16KB/32KB/64KB から選べるようにしました。メモリマップはリセットしたときに変更されます。なお、XEiJ は SRAM の内容を設定ファイルに保存するので通常は SRAM.DAT ファイルを使いません。他のエミュレータで作成した SRAM.DAT ファイルをインポートするときは SRAM メニュー で SRAM の容量を指定してから読み込ませてください。

プリンタ

24 ドットビットイメージの改行ピッチを修正しました。

ホストファイルシステム

ホストファイルシステム でファイルをオープンした直後に先頭から 16KB 未満の位置をシークしてすぐに書き込むと先頭からシークした位置までのデータが消えてしまうバグを修正しました。また、シークコマンドで負のオフセットを指定するとエラーになるバグを修正しました。

fputest.x

fputest.x を作り直しました。

instructiontest.x

instructiontest.x を更新しました。easy モードで CHK 命令のコンディションコードの未定義の Z、V、C がテストされていました。また、兼用になっていたコンディションコードの X と例外発生フラグを分けました。

0.16.11.17

実行環境

要求する Java SE のバージョンを 8u111 (1.8.0_111) 以上に、推奨する Java SE のバージョンを 8u112 (1.8.0_112) 以上に更新しました。

プリンタ

プリンタ を追加しました。

CRTC

CRTC の未公開のメモリモード 2 の処理を追加しました。060turbo と 060turbo 以外で動作が少し違います。

crtcmmtest.x

crtcmmtest.x を追加しました。

デバッガ

逆アセンブルリスト などにボタンを追加しました。

instructiontest.x

instructiontest.x を更新しました。コマンドラインに空白で区切って複数の命令を書けるようにしました。また、デフォルトでコンディションコードの未定義のビットを無視するようにしました。コンディションコードの未定義のビットもテストするときは hard と書いてから命令を書きます。

B:\>instructiontest easy all hard all

と書くとすべてのテストが実行されます。所要時間は 060turbo (実機) で 15 分、X68030 (実機) で 102 分でした。テストデータを増やしたので時間が長くなりましたが、以前は見逃されていたエラーが見つかることがあります。なお、ほとんどの命令は未定義のビットがないので、all を 2 回書いても 1 回しかテストされません。

MC68030

DIVS.L <ea>,Dh:Dl でオーバーフローしたときのコンディションコードの未定義の N の変化を実機に近付けました。

ゼロ除算、CHK 命令、TRAPV 命令の例外スタックフレームのフォーマットを修正しました。

MC68060

CAS.W Dc,Du,<ea> (misaligned <ea>)、CAS.L Dc,Du,<ea> (misaligned <ea>)、DIVS.L Dr,Dh:Dl、DIVU.L Dr,Dh:Dl、MULS.L Dr,Dh:Dl、MULU.L Dr,Dh:Dl で未実装整数命令例外が発生するようにしました。

アクセスフォルトの例外スタックフレームのフォルトステータスロングワードのサイズを修正しました。

MC68882

MC68882 の restore CIR にはフォーマットワード書き込んだらそれを必ず (must) 読み出さなければならないという決まりがありますが、この決まりを守らなくてもコプロセッサプロトコル違反にならないようにしました。libc の __fpuinit がこの決まりを守っていませんでした。

拡張グラフィック画面

拡張グラフィック画面 をメニューとパラメータで ON/OFF できるようにしました。デフォルトは OFF です。変更はリセットしたとき反映されます。

フロッピーディスク

FDC は工事中です。NetBSD/x68k でフロッピーディスクをマウントしようとしないでください。ハングアップしてしまいます。

vcntest.x

vcntest.x で 512 X 65536 X 1 を選択したとき CRTC とビデオコントローラに設定されるメモリモードを修正しました。

0.16.08.17

重要

FDC は工事中です。NetBSD/x68k でフロッピーディスクをマウントしようとしないでください。ハングアップしてしまいます。

実行環境

要求する Java SE のバージョンを 8u101 (1.8.0_101) 以上に、推奨する Java SE のバージョンを 8u102 (1.8.0_102) 以上に更新しました。

アドレス変換キャッシュモニタ

アドレス変換キャッシュモニタ を追加しました。MMU のアドレス変換キャッシュの内容を表示します。

MPU

ABCD と NBCD と SBCD で引数が BCD の範囲外のときの演算結果と未定義の N と V の変化を実機に近付けました。

ABCD と NBCD と SBCD のコンディションコード
コンディションコードMC68030MC68060
Xキャリーまたはボローがあるときセット、さもなくばクリア
N未定義 (結果の最上位ビット)未定義 (変化しない)
Z結果が 0 でないときクリア、さもなくば変化しない
V未定義 (クリア)未定義 (変化しない)
Cキャリーまたはボローがあるときセット、さもなくばクリア

ASR.W <mem> と ROXR.W <mem> で X をクリアしなければならないときにクリアしていませんでした。

BFxxx のビットフィールドのオフセットがデータレジスタで指定されたとき、オフセットが 0 未満または 32 以上のときの動作が間違っていました。

CAS.B と CAS.W と CAS2.W でオーバーフローしたときの動作が間違っていました。

CHK.W と CHK.L で例外が発生しなかったときコンディションコードが設定されていませんでした。また、未定義の Z と V と C の変化を実機に近付けました。

CHK.* <ea>,Dq のコンディションコード
コンディションコードMC68030MC68060
X変化しない
NDq の最上位ビット
Z未定義 (Dq が 0 のときセット、さもなくばクリア)未定義 (変化しない)
V未定義 (<ea>-Dq がオーバーフローしたときセット、さもなくばクリア)
C未定義 (<ea>-Dq でキャリーがあるときセット、さもなくばクリア)

CHK2 と CMP2 の未定義の N と V の変化を実機に近付けました。

DIVS/DIVSL/DIVU/DIVUL でゼロ除算のとき未定義の N と Z と V およびオーバーフローしたとき未定義の N と Z の変化を実機に近付けました。

DIVU.L Dr,Dh:Dl で $8000000000000000/$FFFFFFFE などの計算が間違っていました。

NEG.B <mem> と NEG.W <mem> でオーバーフローしたとき (引数が $80 と $8000 のとき) のコンディションコードが間違っていました。

SCSI ROM

IOCS _SCSIDRV で D5 レジスタに 3 以上が指定されたとき 2048 バイト / ブロックとみなすパッチを追加しました。

その他

misc/* の説明 を書きました。

instructiontest.x を追加しました。MPU のユーザモードで使用できる整数命令の動作をテストするプログラムです。

vcntest2.x を追加しました。ビデオコントローラの注釈に書いた例を実際に試すプログラムです。

旧版 をダウンロードできるようにしました。

0.16.07.17

重要

FDC は工事中です。NetBSD/x68k でフロッピーディスクをマウントしようとしないでください。ハングアップしてしまいます。

ビデオコントローラ

ビデオコントローラのスプライト画面とテキスト画面とグラフィック画面を重ね合わせるコードを大幅に増やしました (手作業 2.3 万行 → 自動生成 48 万行)。

グラフィック画面

実画面サイズが 1024×1024 ドットのグラフィック画面に実機にない 256 色モードと 65536 色モードを追加しました。

メモリモード実画面サイズ色数ページ数GVRAM サイズ
0512×512 ドット16 色4 ページ512KB
1256 色2 ページ
365536 色1 ページ
41024×1024 ドット16 色
5256 色1MB
765536 色2MB

実画面サイズが 1024×1024 ドットのグラフィック画面を 512×512 ドットずつ 4 分割して組み換えられるようにしました。

表示モードテスト

表示モードテスト に画面の解像度、ラスタ 2 度読みとインターレースの有無、オシレータと水平同期信号と垂直同期信号の周波数などの表示を追加しました。

PCM8A.X のパッチ

PCM8A.X v1.02 がローカルメモリを 256MB 積んだ 060turbo で動かない問題を回避するパッチを追加しました。I/O ポートのアドレスの上位 8 ビットが $FF になっているところを $00 に修正します。なお、LZX 圧縮されたデバイスドライバや実行ファイルには対応していません。

音声出力速度制御

音声出力速度制御 を廃止しました。代わりに音声出力が ON のとき負荷率 90% を上限としてそれ以上動作周波数が上がらないようにしました。

データブレークポイント

バイトサイズまたはワードサイズの データブレークポイント が仕掛けられたアドレスをそれより大きいワードサイズまたはロングワードサイズでアクセスしたときも停止するようにしました。

スプライト画面

スプライトプレーンとバックグラウンドプレーンのパレットの下位 4 ビットがすべて 0 でバックグラウンドプレーン 1 のパレットブロックが 0 のときバックグラウンドプレーン 0 のパレットブロックが出力されなくなっていたバグを修正しました。

CRTC

インターレースのとき画面に縞模様ができるようになっていたバグを修正しました。

フォントエディタ

フォントエディタ でズームアウトすると表示が乱れるようになっていたバグを修正しました。

その他

動作確認環境を Windows 7 Professional (64 ビット) から Windows 10 Pro (64 ビット) に更新しました。

0.16.05.12

フロッピーディスク、SASI ハードディスク、SCSI ハードディスクと CD-ROM

レスポンスの遅い FD メディアを挿入するとメディアの判別が終わる前に FDC が READ DATA コマンドを受け付けてしまい NullPointerException が発生することがあるバグを修正しました (Thanks: 星型ピノ @delikea さん)。メディアの判別が終わるまでメディアが挿入されていないように見えるようにしました。SASI ハードディスク と SCSI ハードディスクと CD-ROM も同様の調整を行いました。

0.16.05.07

スプライト画面

スプライト画面を作り直しました。スプライトは表示ラスタの 2 ラスタ手前で、バックグラウンドは 1 ラスタ手前で並べて、表示ラスタで重ね合わせます。変化していないラスタの描画を省く処理は行わず、スプライトを表示できる画面モードのときは常にすべてのラスタを描画します。そのため、768×512 ドット以外の画面モードのときの動作が重くなっています。

スプライトパターンビュア

スプライトパターンビュア を追加しました。

IOCS _DEFCHR

IPLROM 1.3 のとき IOCS _DEFCHR が X68030 の ハイメモリ や 060turbo の ローカルメモリ を ROM と誤認してフォントパターンの設定に失敗する問題を修正するパッチを追加しました。

0.16.04.30

シームレスマウスモード

IOCS だけでなく SX-WINDOW (FSX.X version 3.10) も シームレスマウスモード で操作できるようにしました。縁部加速 を ON にすると実画面モードもシームレスのまま操作できます。

エクスクルーシブマウスモード

エクスクルーシブマウスモード に入るときと出るときに X68000 のマウスカーソルが動かないようにしました。

スプライト画面

XEiJ は画面の描画処理を水平映像期間の先頭で 1 ラスタ分まとめて行いますが、このときスプライトを並べる処理も同時に行っていました。スプライトを並べる処理だけ 1 ラスタ手前にずらしました。スプライトダブラ (画面を上下に分割するラスタに走査線が差し掛かったとき上で使われたスプライトを定義し直して下で再び使うことで 1 画面あたりのスプライトの表示可能枚数を増やす技術) を用いているゲームなどで横線ノイズが表示される症状が改善される場合があります。

SCSI ROM

X68000 EXPERT/SUPER/XVI/Compact モードのとき IPLROM30.DAT から自動生成した SCSI ROM がうまく動かないバグを修正しました。060turbo モード用に追加した IPLROM 1.3 のパッチと衝突していました。

逆アセンブルリスト

CPUSHL/CPUSHP/CPUSHA 命令を逆アセンブルすると CINVL/CINVP/CINVA 命令が表示されるバグを修正しました。

0.16.04.26

グラフィック画面

65536 色モードのときパレットコードの上位バイトをバイトサイズでリードすると 0 に見えるバグを修正しました。

データブレークポイント

X68000 モードのとき MOVEM 命令でメインメモリを読み書きすると データブレークポイント で検出されないバグを修正しました。

0.16.04.22

MC68060

060turbo モードのとき CTRL+OPT.1+DEL や kt reset などでソフトウェアリセットをかけようとすると「バスエラーが発生しました」という白帯が表示されて結局リセットボタンを押さなければならなくなるバグを修正しました。MC68060 の MOVES 命令でファンクションコードに 3 が指定されたときユーザモードのメモリマップが選択されてスーパーバイザ領域のアクセスに失敗していました。

メインメモリ

設定メニューでメインメモリのサイズを変更したとき直後のリセットで反映されない不具合を修正しました。

0.16.04.21

実行環境

要求する Java SE のバージョンを 8u91 (1.8.0_91) 以上に、推奨する Java SE のバージョンを 8u92 (1.8.0_92) 以上に更新しました。

ホストファイルシステム

ホストファイルシステム でホストマシンのファイルを操作するスレッドをコアから分離しました。また、先読み・遅延書き込みバッファを介してファイルにアクセスするようにしました。ファイルアクセスが軽くなり、バッファの充填や排出を待っている間も割り込み処理を続けることができます。例 : CD-ROM 版の電脳倶楽部を起動する に書いたように XEiJ は DVD スーパーマルチドライブ (以下は E: の場合) などに CD-ROM 版の電脳倶楽部 (月刊電脳倶楽部 140 号以降や激光電脳倶楽部など) を入れて

>java -jar XEiJ.jar -boot=E:

とするだけで電脳倶楽部を起動できますが、このとき「◎」をクリックして新しいページに移る度にオープニング曲の演奏が途切れる症状が改善されました。

SCSI ハードディスク

XEiJ は SCSI ハードディスクのイメージファイルの新規作成で必ず装置初期化を行い、正しく装置初期化されていないファイルを SCSI ハードディスクのイメージファイルと認識しない仕様になっています。この条件が厳しすぎて、装置初期化を行わない他のエミュレータで FORMAT.X を使って装置初期化されたファイルは FORMAT.X のバグでファイルサイズと容量が一致していないため XEiJ で使用することができませんでした (Thanks: TANE さん)。ファイルサイズに対して容量が 1 セクタ少ないファイルも SCSI ハードディスクのイメージファイルとみなすようにしました。

FORMAT.X の動作に合わせて SCSI ハードディスクの Read Capacity コマンドが最終論理ブロックアドレスの代わりに論理ブロック数を返していました。これを常に最終論理ブロックアドレスを返すように変更してしまうと XEiJ でも FORMAT.X で正しく装置初期化することができなくなってしまうので、Read Capacity コマンドが FORMAT.X から呼び出されたときだけ従来通り論理ブロック数を返し、それ以外は最終論理ブロックアドレスを返すようにしました。

060turbo.sys の SCSI コールでバスエラーが出ることがあるバグを修正するパッチを追加しました。

MC68882

MC68882 の浮動小数点コンディションコード OR、NE、GLE、SNE の動作を修正しました。

ccMC68882MC68060
OR / GLEZ|~NAN~NAN
NE / SNENAN|~Z~Z

ハイメモリ

ハイメモリが存在するだけで正常に動作しなくなるプログラムがあるので X68030 のハイメモリのデフォルトを OFF にしました。

0.16.04.12

実行環境

要求する Java SE のバージョンを 8u77 (1.8.0_77) 以上に、推奨する Java SE のバージョンを 8u77 (1.8.0_77) 以上に更新しました。

Google Chrome はバージョン 45 から Java アプレットに対応しなくなりました。実行サンプルJava Web Start で起動できます。

060turbo

機種に 060turbo を追加しました。

MPU は MC68060 と命令互換のプロセッサです。命令キャッシュ、データキャッシュ、分岐キャッシュ、ストアバッファおよびスーパースカラはありません。CACR や PCR の該当ビットを 1 にしても何も変わりません。0 サイクルの命令はありません。

FPU は未実装浮動小数点命令を FPSP に任せる通常版と MC68882 と MC68060 のすべての浮動小数点命令を実行できるフルスペック版を選択できます。

MMU のアドレス変換キャッシュは独自仕様です。1-way にする代わりにハッシュ関数を工夫してアドレス変換のオーバーヘッドを減らしています。

FC2 ピンをカットできます。NetBSD/x68k で X Window System が動きます。NetBSD/x68k を動かしてみる を書きました。

ローカルメモリ $10000000-$1FFFFFFF (16MB~256MB) を利用できます。設定ファイルにローカルメモリの内容を保存することができます。

リソースから読み込んだ IPLROM30.DAT に新しく作ったパッチを当てて使います。060turbo の実機の ROM は不要です。

ハイメモリ

X68030 モードのとき九十九電気 (ツクモ) の TS-6BE16 相当のハイメモリ $01000000-$01FFFFFF (16MB) を利用できます。設定ファイルにハイメモリの内容を保存することができます。

浮動小数点プロセッサボード

浮動小数点プロセッサボード CZ-6BP1 を 2 枚挿してあります。FPCP は MC68882 と命令互換のコプロセッサです。FLOAT3.X を利用できます。GCC(真里子版) または GCC2 でコンパイルして libc をリンクしたプログラムは FLOAT3.X を経由せずコプロセッサを直接操作します。

マザーボードコプロセッサ

ドーターボードにある MC68060 から見てマザーボードにある MC68882 をマザーボードコプロセッサと呼んでいます。実機と同様に MC68060 から MC68882 にアクセスできます。起動メッセージなどでマザーボードコプロセッサの有無と種類が表示されます。

SCSI CD-ROM

SCSI 機器の種類に CD-ROM を追加しました。*.ISO ファイルを SCSI CD-ROM とみなします。ブートセクタがあるときは「ここから再起動」で CD-ROM から直接起動できます。Human68k からは susie.x でアクセスできます。

IPLROM

IPLROM 1.3 を 1.5 に更新するパッチを追加しました。MC68000、MC68EC030 および MC68060 のいずれでも起動できます。SCSI CD-ROM から起動できます。起動メッセージにマザーボードコプロセッサや浮動小数点プロセッサボードの有無と種類を表示します。

IOCS _CRTMOD が指定された画面モードと異なる色数でグラフィックパレットを初期化するバグを修正するパッチを追加しました。

デバッグコンソール

コマンド入力で停止、実行、逆アセンブル、ダンプなどの処理を行います。

論理空間モニタ

論理アドレスに割り当てられている物理アドレスを表示します。

物理空間モニタ

物理アドレスに割り当てられているデバイスを表示します。

ルートポインタリスト

マルチタスク環境で停止させるタスクを選択できます。

レジスタリスト

レジスタリスト に浮動小数点レジスタを追加しました。

逆アセンブルリスト

逆アセンブルリスト でスーパーバイザモードとユーザモードを切り替えられるようにしました。

メモリダンプリスト

メモリダンプリスト でスーパーバイザモードとユーザモードを切り替えられるようにしました。

周波数固定モード

周波数固定モード のときも負荷率が 100% を超えると動作周波数を抑えて負荷率を 100% まで下げます。

音声出力速度制御

音声出力速度制御 のデフォルトを ON にしました。

ホストファイルシステム

LHA.x の誤動作を避けるため、DOS _DSKFRE が返す HFS の空き容量の上限を 2GB にしました。

DOS _FILES が属性の条件にボリューム名が含まれているときファイル名の条件を無視してボリューム名を返していました。これが原因で FORMAT.X が領域確保後のシステム転送に失敗していました。HFS の DOS _FILES がボリューム名を返すのはファイル名の条件が *.* のときだけにしました。

ディスクのイメージファイルの新規作成

フロッピーディスク、SASI ハードディスク、SCSI ハードディスクのイメージファイルを新規作成するとき、適切な拡張子が指定されていなければ拡張子を追加するようにしました。

ラスタコピー

ラスタコピーを実機と同様に水平フロントポーチで行います。

FPU

「80 ビット拡張精度」と「96 ビット拡張精度」の呼び方を「拡張精度」と「三倍精度」に変更しました。

例外発生時に FPIAR またはスタックフレームの実効アドレスが正しく設定されていない場合がありました。

FTST がソースオペランドではなくデスティネーションオペランドをテストしていました。これが原因で xeyes の目玉が崩れていました。

FBGE と FBLE で FPSR の Z と NAN が同時にセットされていた場合 (通常は起こらない) の動作が実機と違いました。

MC68EC030

BFINS Dn,<mem>{offset:width} で 5 バイトに跨るとき 1 バイト目の範囲外のビットが破壊されていました。

BFFFO <mem>{offset:width},Dn で オフセットが 8 以上のときの計算が間違っていました。

ソースコード

ソースコード を分割しました。

0.15.08.31

推奨する Java SE のバージョンを 8u60 (1.8.0_60) 以上に更新しました。

0.15.08.12

MOVEM.wl <list>,-(Ar) で <list> に Ar が含まれているときの動作を再修正しました。

0.15.08.09

MOVEM.wl <list>,-(Ar) で <list> に Ar が含まれているときの動作を修正しました。

0.15.07.19

ビデオコントローラの 0x00e82500 の上位バイト (スプライト画面・テキスト画面・グラフィック画面間の優先順位) に不正な値が設定されたときの動作を X68030 の実機に合わせました。参考 : GIMONS さん

0.15.07.15

逆アセンブラ を更新しました。

要求する Java SE のバージョンを 8u51 (1.8.0_51) 以上に更新しました。

0.15.07.01

機能と特徴 の文章を更新しました。また、メニューパラメータ設定ファイル の説明を書きました。

コマンドラインから起動したとき「メインメモリの内容を保存する」が ON になっていると終了時にメインメモリの内容が 設定ファイル に保存されます。RAM ディスクで作業中にうっかりエミュレータを終了してしまっても大丈夫です。

メモリ上の Human68k にもパッチを当てます。といっても大したものは入っていません。

FE ファンクション命令 を更新しました。「FLOATn.X を組み込まない」を ON にすると CONFIG.SYS に FLOATn.X が書かれていても組み込まれなくなります。

FPCR (Floating Point Control Register) と FPSR (Floating Point Status Register) の処理を更新しました。

コアの負荷が大きいときキーを押した途端に何文字も入力されてしまうことがある問題を修正しました。

MPU が MC68EC030 のとき DIVS.L <ea>,Dq 命令で -231/-1 の計算を間違えるバグを修正しました。

MPU が MC68EC030 のとき上位 8 ビットが 0 でない奇数アドレスにワードサイズでアクセスしようとするとコアが止まるバグを修正しました。

0.15.06.08

推奨ブラウザ から Google Chrome を外し、代わりに Mozilla Firefox と Waterfox を復活させました。

9SCDRV.X を組み込むと Human68k と FDDEVICE.X の 2HD/2HC/2DD8/2DD9/2HQ に加えて 2DD10/2HDE/2HS のフロッピーディスクのイメージファイルにアクセスできます。2HD/2HC/2HDE/2HS のイメージから起動できます。

DIFC.X で変換された 2HD/2HC/2HQ/2HDE/2HS の DIM ファイル (オーバートラックなし) にリードオンリーでアクセスできます。2HD/2HC/2HDE/2HS の DIM ファイルから起動できます。

0.15.04.22

ROM デバッガの実効アドレスの計算に関係する不具合を修正するパッチを追加しました。

キーボードをマウスで操作したときマウス受信データのボタンの状態が変化しないようにしました。

ファンクションキーの表示がなくてカーソルが最下行にあるとき OPT.1+OPT.2 を押すと電卓が画面の外に表示されて見えない問題を修正するパッチを加えました。060turbo と同様にカーソルが最下行にあるときは電卓がカーソルの上の行に表示されます。

LEA.L 4.W,A0;MOVEM.L D0-D1,-(A0) を実行すると ArrayIndexOutOfBoundsException が出てコアが止まるバグを修正しました。

0.15.04.15

音声出力速度制御 をデフォルトで OFF にしました。

ROM デバッガ 2.32 で FSINCOS.X FPm,FPc:FPs をアセンブルしようとすると bus error in debugger が発生するバグを修正するパッチを加えました。

要求する Java SE のバージョンを 8u45 (1.8.0_45) 以上に更新しました。Java™ SE Development Kit 8, Update 45 Release Notes

0.15.03.30

スタイルシートをサイトに合わせました。

FFT を更新しました。

推奨する Java SE のバージョンを 8u40 (1.8.0_40) 以上に更新しました。Java™ SE Development Kit 8, Update 40 Release Notes

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

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 Development Kit 8, Update 25 Release Notes (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(210000) を計算できるようにしました。

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

拡張精度浮動小数点数 (19 桁) または三倍精度浮動小数点数 (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 でも全画面表示が使えるようになりました。