Table of contents目次

  1. Makefile
    1. Makefile.host
    2. Makefile.x68k
  2. Files to be used in making XEiJXEiJ を作るときに使うファイル
    1. crc32.mac
    2. def_M.equ
    3. doscall.mac
    4. drawingmode.pl
    5. efp.gp
    6. favicon.pl
    7. Graph.pm
    8. hermite.gp
    9. iocscall.mac
    10. itob.pl
    11. itoc.pl
    12. omusubi.fon
    13. opcode.pl
    14. optdiv.pl
    15. rompat.mac
    16. rompat13.s
    17. rompat13.x
    18. rompattobytes.pl
    19. sjdump.pl
    20. stresc.mac
    21. two_pi.pl
  3. Test programsテストプログラム
    1. cir.s
    2. cir.x
    3. crtcmmtest.s
    4. crtcmmtest.x
    5. fefunctest.bas
    6. fputest.s
    7. fputest.x
    8. instructiontest.s
    9. instructiontest.x
    10. vcntest.s
    11. vcntest.x
    12. vcntest2.s
    13. vcntest2.x

1. Makefile

Execute "make" in both environments of the host machine and X68000 in the directory "misc" by using the host file system. ホストファイルシステム を使い、同じ misc ディレクトリでホストマシンと X68000 の両方で make します。

1.1. Makefile.host

Makefile to be used on the host machine. It generates fputest.s from efp.gp. ホストマシンで使う Makefile です。efp.gp を使って fputest.s を作ります。

$ make -f Makefile.host

1.2. Makefile.x68k

Makefile to be used on X68000. It generates rompat13.x, cir.x, fputest.x, vcntest.x, vcntest2.x, instructiontest.x and crtcmmtest.x. The shell is command, the assembler is has060, the linker is lk, the compressor is lzx and the "make" is make. Edit them for your environment. X68000 で使う Makefile です。rompat13.xcir.xfputest.xvcntest.xvcntest2.xinstructiontest.xcrtcmmtest.x を作ります。シェルは command、アセンブラは has060、リンカは lk、コンプレッサは lzx、make は make になっています。環境に応じて編集してください。

B:\>make -f Makefile.x68k

2. Files to be used in making XEiJ XEiJ を作るときに使うファイル

2.1. crc32.mac

Definitions of macros that calculate CRC32. CRC32 を計算するマクロです。

2.2. def_M.equ

Definitions of symbols that make bitmap data easier to read. ビットマップを読みやすくする定数です。

2.3. doscall.mac

Definitions of macros for DOS calls. DOS コールのマクロです。

2.4. drawingmode.pl

A Perl script that generates DrawingMode.java automatically. It does everything from making Japanese comments to formatting the Java code. DrawingMode.java を自動生成する Perl スクリプトです。日本語の注釈を作るところから Java のコードを整形するところまで全部やっています。

2.5. efp.gp

A GP script that calculates constant data for the floating point arithmetic routines and generates fputest.s automatically. 浮動小数点演算ルーチンの定数データと fputest.s を自動生成する GP スクリプトです。

2.6. favicon.pl

A Perl script that generates favicon data of the Look and Feel automatically. ルックアンドフィールのファビコンのデータを自動生成する Perl スクリプトです。

2.7. Graph.pm

A Perl subroutine that draws graphs for comments of floating point arithmetic routines. 浮動小数点演算ルーチンの注釈の関数のグラフを描くライブラリです。

2.8. hermite.gp

A GP script that generates code of the Hermite interpolation for ADPCM automatically. ADPCM のエルミート補間のコードを自動生成する GP スクリプトです。

2.9. iocscall.mac

Definitions of macros for IOCS calls. IOCS コールのマクロです。

2.10. itob.pl

A Perl script that converts the right hand side of ~ = { … } to "…".getBytes (XEiJ.ISO_8859_1) to prevent the grown code becoming uncompilable. ~= {…} の右辺を "…".getBytes (XEiJ.ISO_8859_1) に変換する Perl スクリプトです。初期化コードが巨大化してコンパイルできなくなるのを避けます。

2.11. itoc.pl

A Perl script that converts the right hand side of ~ = { … } to "…".toCharArray () to prevent the grown code becoming uncompilable. ~= {…} の右辺を "…".toCharArray () に変換する Perl スクリプトです。初期化コードが巨大化してコンパイルできなくなるのを避けます。

2.12. omusubi.fon

Omusubi font which was created to characterize screenshots of XEiJ. O, the first letter of Omusubi, is wrapped in seaweed to be distinguished from 0. XEiJ のスクリーンショットに特徴を付けるために作ったおむすびフォントです。Omusubi の O に海苔を巻いて 0 と見分けられるようにしました。

2.13. opcode.pl

A Perl script that makes a list of instructions of M68000 family. It also outputs switch ~ case in the core and the disassembler. M68000 ファミリの命令の一覧表を作る Perl スクリプトです。コアや逆アセンブラの switch~case も出力します。

2.14. optdiv.pl

A Perl script that displays a method to replace an integer division with a multiplication and a shift operation. It is used to make the program faster. 整数除算を乗算とシフトに変換する方法を表示する Perl スクリプトです。高速化のために多用しています。

$ perl misc/optdiv.pl 99999999 10000
  x/10000==x*109951163>>>40 (0<=x<=494389998) [99999999*109951163==10995116190048837]

It means that x/10000 and x*109951163>>>40 are identical in the range of 0≤x≤494389998. You have to write the latter expression like (int)(x*109951163L>>>40) because 99999999*109951163 is not in the range of int in the Java language. これは 0≤x≤494389998 の範囲で整数除算の x/10000 と乗算とシフトの x*109951163>>>40 の結果が一致するという意味です。99999999/10000 は 32 ビット整数で計算できますが 99999999*109951163>>>40 は 64 ビット整数で計算する必要があるので Java のコードでは (int)(x*109951163L>>>40) のような書き方になります。

2.15. rompat.mac

A macro that is used in rompat13.s. rompat13.s で使うマクロです。

2.16. rompat13.s

The source code of rompat13.x. rompat13.x のソースです。

2.17. rompat13.x

A patch data of ROM 1.3. Not a executable program. ROM 1.3 のパッチです。実行プログラムではありません。

2.18. rompattobytes.pl

A Perl script that convert rompat13.x to a Java source code. rompat13.x を Java のソースに変換する Perl スクリプトです。

2.19. sjdump.pl

A Perl script that dumps contents of specified files. It can output data as a Java source code. It is used to insert binary data into codes. 指定されたファイルの内容をダンプする Perl スクリプトです。Java のソースの形で出力できます。コードにバイナリデータを埋め込むときに使います。

2.20. stresc.mac

A macro that write a string while processing escape sequences. Strings that have the same CRC32 are written only once. エスケープシーケンスを処理しながら文字列を展開するマクロです。CRC32 が同じ文字列は 1 回だけ展開します。

2.21. two_pi.pl

A Perl script that calculate multiple precision 2/ π automatically for using in floating point arithmetic routines. This script uses the GMP. 浮動小数点演算ルーチンで使う 2/ π のデータを自動生成する Perl スクリプトです。GMP を使います。sin 関数は実数全体で定義されます。sin(x) を計算するとき通常は x を π /2 で割った余りを - π /4~+ π /4 の範囲で求めて多項式近似を行います。2n を π /2 で割った余りを正確に求めるにはおよそ n ビットの π の値が必要です。浮動小数点数で指数部の範囲は限られているので必要な桁数の 2/ π の値を定数として抱えておきます。使うときは n ビットの多倍長計算を行う必要はなくて 2/ π のデータの一部分だけを使います。

3. Test programs テストプログラム

3.1. cir.s

The source code of cir.x. cir.x のソースです。

3.2. cir.x

A program that reads and writes the CIR of the mother board coprocessor in 060turbo mode. To check the emulator is working correctly or not, execute this program in both environment of a real machine and an emulator. There are some examples of this program as comments in the source code of the coprocessor. 060turbo モードのとき マザーボードコプロセッサ の CIR を読み書きするプログラムです。実機とエミュレータの両方で動かしてエミュレータのコプロセッサの動作を確認します。コプロセッサの注釈に実行例があります。

3.3. crtcmmtest.s

The source code of crtcmmtest.x. crtcmmtest.x のソースです。

3.4. crtcmmtest.x

A program that tests memory modes of CRTC (R20 bit10-8). Memory mode 2 (undocumented) and memory mode 5-7 (same as 4) are also tested. The extended graphics screen should be turned off before the test. CRTC のメモリモード (R20 のビット 10-8) の動作を確認するプログラムです。未公開のメモリモード 2 と、メモリモード 4 と同じ 5、6、7 もテストします。拡張グラフィックス画面 が ON のときは OFF にしてリセットしてからテストしてください。

3.5. fefunctest.bas

A sample program of the FE function instruction. FE ファンクション命令 のサンプルプログラムです。

3.6. fputest.s

The source code of fputest.x that was automatically generated by efp.gp. efp.gp で自動生成された fputest.x のソースです。

$ make -f Makefile.host fputest.s

3.7. fputest.x

A program that tests operations of floating point instructions except privilege instructions. It compares the actual results with the expected results. The expected results are not equivalent to the results of real machines. 特権命令を除く浮動小数点命令の動作を確認するテストプログラムです。演算結果を期待された結果 (実機の結果ではない) と比較します。

Usage 使い方

About 10MB of free area is required. 実行するにはフリーエリアが 10MB くらい必要です。

Specify an empty command line to read how to use. コマンドラインに何も書かないと使い方が表示されます。

B:\>fputest.x
usage: fputest.x <mnemonic or option> ...
  FABS FACOS FADD ... -- Run tests selected by the first few letters of a mnemonic.
  all -- Run all tests.
  destination=0..[1] -- Check the destination operand.
  easy -- It's the same as margin=1 nans=0.
  failed=0..[1] -- Output the results of failed tests.
  fpsp=[0]..1 -- Test the instructions processed by the software package.
  hard -- It's the same as margin=0 nans=1.
  logging=0..[1] -- Output the results to "fputest.log".
  margin=0..[1]..11 -- The acceptable margin of error in transcendental functions.
  maximum=0..[100]..1000000 -- The maximum number of results outputted for each test.
  nans=[0]..1 -- Check the mantissa of NaNs.
  status=0..[1] -- Check the status register.
  stdout=0..[1] -- Output the results to the standard output.
  successful=[0]..1 -- Output the results of successful tests.

Specify all to run all tests. Results are outputted to both of the standard output and the log file fputest.log. すべてのテストを実行するときは all を指定します。結果は標準出力とログファイル fputest.log の両方に出力されます。

B:\>fputest.x all
begin: 2017-01-30T04:39:15+09:00
fpu: MC68882
option: destination easy failed fpsp=0 margin=1 maximum=100 nans=0 status successful=0
test: FABS.X FPm,FPn
score: tested=38136 failed=0(0.00%) successful=38136(100.00%)
―― Omission ――
―― 中略 ――
test: FTWOTOX.X FPm,FPn
score: tested=39576 failed=0(0.00%) successful=39576(100.00%)
total: tested=3028872 failed=0(0.00%) successful=3028872(100.00%)
end: 2017-01-30T04:40:11+09:00

For transcendental functions, differences from the expected results are allowed up to the least significant bit (1ulp). When you do not allow any errors, specify hard or margin=0. 超越関数は期待された結果と比較して末尾の 1 ビット (1ulp) までの誤差が許容されます。1 ビットの誤差も許さないときは hard または margin=0 を指定します。

B:\>fputest.x hard all
begin: 2017-01-30T04:40:12+09:00
fpu: MC68882
option: destination failed fpsp=0 hard margin=0 maximum=100 nans status successful=0
test: FABS.X FPm,FPn
score: tested=38136 failed=0(0.00%) successful=38136(100.00%)
―― Omission ――
―― 中略 ――
test: FTWOTOX.X FPm,FPn
score: tested=39576 failed=0(0.00%) successful=39576(100.00%)
total: tested=3028872 failed=368(0.02%) successful=3028504(99.98%)
end: 2017-01-30T04:41:13+09:00

If you want to test a certain instruction, write the first few letters of a mnemonic instead of 'all'. For example, FSIN, FSINCOS and FSINH will be tested if you specify 'fsin'. 特定の命令だけテストするときは all の代わりにニモニックの先頭の数文字を書きます。例えば fsin を指定すると FSIN、FSINCOS、FSINH がテストされます。

B:\>fputest.x fsin
begin: 2017-01-30T04:41:15+09:00
fpu: MC68882
option: destination easy failed fpsp=0 margin=1 maximum=100 nans=0 status successful=0
test: FSIN.X FPm,FPn
score: tested=46872 failed=0(0.00%) successful=46872(100.00%)
test: FSINCOS.X FPm,FPc:FPs
score: tested=46872 failed=0(0.00%) successful=46872(100.00%)
test: FSINH.X FPm,FPn
score: tested=39576 failed=0(0.00%) successful=39576(100.00%)
total: tested=133320 failed=0(0.00%) successful=133320(100.00%)
end: 2017-01-30T04:41:22+09:00

Write until the dot of the operation size to test FSIN only. FSIN だけテストしたいときはオペレーションサイズのドットまで書きます。

B:\>fputest.x fsin.
begin: 2017-01-30T04:41:24+09:00
fpu: MC68882
option: destination easy failed fpsp=0 margin=1 maximum=100 nans=0 status successful=0
test: FSIN.X FPm,FPn
score: tested=46872 failed=0(0.00%) successful=46872(100.00%)
total: tested=46872 failed=0(0.00%) successful=46872(100.00%)
end: 2017-01-30T04:41:30+09:00

Legends 凡例

備考

XEiJ の浮動小数点数の内部表現は MC68882 と異なり、拡張精度で言うところの「指数部が 0 でない非正規化数」や「小数部が 1 の並びでない NaN」をそのままの状態でレジスタに格納することができません。そのため、FMOVECR の一部がエラーになります。

MC68882 (実機) の FCOS、FSIN、FSINCOS、FTAN は引数の絶対値が大きくなるにつれて結果が意味をなさなくなります。このことはマニュアルに書かれていて開発当時の制約では諦めるしかなかったのだと思いますが、期待された結果ではないのでエラーになります。

MC68882 (実機) の FMOVECR で読み出される ROM の値はあちこち間違っているように見えますが、実機と同じ値を返さないとエラーになります。

MC68882 (実機) の FSGLDIV、FSGLMUL はアンダーフローしたとき、不正確な結果なのに FPSR の INEX2 と INEX をセットしなかったり、0 から遠ざかる方向に丸めなければならないのに切り捨てて 0 にしてしまうことがあります。これらは期待された結果ではないのでエラーになります。

3.8. instructiontest.s

instructiontest.x のソースです。HAS060.X version 3.09+89 以上でアセンブルできます。

3.9. instructiontest.x

A program that tests integer instructions except for privilege instructions. It compares operand registers, memories, condition codes and the presence of an exception occurrence with real X68030 and 060turbo, and outputs OK or ERROR according to the result. The comparison is performed not for every value of operands but for every format of operands. So this program does not show which value brings wrong results. OK does not mean the implementation of the instruction is always exact. Because not all combination of operands are tested. MPU の特権命令を除く整数命令の動作をテストします。オペランドに書かれたレジスタまたはメモリとコンディションコードの変化およびゼロ除算などの例外発生の有無が実機 (X68030 または 060turbo) と一致しているときは OK、異なるときは ERROR と表示されます。比較は引数の形式毎に行われます。内容毎ではないので、どの引数を与えたときに実機と異なる結果になったのかこのプログラムではわかりません。もちろん、あらゆる引数の組み合わせをテストしているわけではないので、OK と表示されたからといって命令の動作が間違っていないとは限りません。

Write the first few letters of a mnemonic to be tested on the command line. You can specify multiple instructions separated by commas. Write all to run all tests. Change the level of the test by inserting easy or hard before a mnemonic. Undefined bits in condition codes are ignored on easy and compared on hard. The default is easy. In addition, when a divide-by-zero occurs, Z and V are always ignored because these undefined condition codes are modified by causes other than operands in X68030. テストする命令のニモニックの先頭の文字をコマンドラインで指定します。命令は空白で区切って複数指定できます。all を指定するとすべてのテストが実行されます。ニモニックの手前に easy または hard と書くことでテストのレベルを選択できます。easy はコンディションコードの未定義のビットを無視します。hard はコンディションコードの未定義のビットまで一致していなければエラーになります。デフォルトは easy です。なお、ゼロ除算が発生したときの Z と V は MC68030 で引数以外の要因で変化することがあるので hard でも無視されます。

B:\>instructiontest easy all hard all
processor:MC68060, level:easy
           instruction               expected     actual
abcd.b Dr,Dq                        $59d7dfd3   $59d7dfd3   OK      1.72s
abcd.b -(Ar),-(Aq)                  $d4e484fa   $d4e484fa   OK      3.81s
add.b Dr,Dq                         $ba2388e4   $ba2388e4   OK      5.31s
add.w Dr,Dq                         $e7fbc8a3   $e7fbc8a3   OK      2.76s
―― Omission ――
―― 中略 ――
tst.l #<data>                       $80995333   $80995333   OK      0.00s
unlk Ar                             $0b6076c4   $0b6076c4   OK      0.35s
unpk Dr,Dq,#<data>                  $4359d714   $4359d714   OK      0.67s
unpk -(Ar),-(Aq),#<data>            $5316c1a7   $5316c1a7   OK      1.18s
processor:MC68060, level:hard
           instruction               expected     actual
abcd.b Dr,Dq                        $fddca661   $fddca661   OK      1.99s
abcd.b -(Ar),-(Aq)                  $116c5546   $116c5546   OK      3.49s
chk.w (Ar),Dq                       $18ad244c   $18ad244c   OK      3.17s
chk.l (Ar),Dq                       $10d41b6b   $10d41b6b   OK      3.50s
―― Omission ――
―― 中略 ――
nbcd.b Dr                           $60ea153e   $60ea153e   OK      0.06s
nbcd.b (Ar)                         $3d33357d   $3d33357d   OK      0.06s
sbcd.b Dr,Dq                        $acce4f74   $acce4f74   OK      1.83s
sbcd.b -(Ar),-(Aq)                  $d290f440   $d290f440   OK      3.55s
tested:542, passed:542(100.00%), failed:0(0.00%)
1005.15s
B:\>

3.10. vcntest.s

The source code of vcntest.x. vcntest.x のソースです。

3.11. vcntest.x

vcntest.pngA tool to check the action of the video controller. Operate it with a mouse. ビデオコントローラの動作を確認するためのツールです。マウスで操作します。

Command コマンド

Priority of sprite, text and graphics スプライトとテキストとグラフィックスの優先順位

Priority of graphics planes グラフィックスプレーンの優先順位

Turn screens on and off 画面の ON/OFF

Memory mode メモリモード

Zero translucence ゼロ半透明

Special priority and trancelucence 特殊プライオリティと半透明

Region designation 領域指定

Translucence 半透明

Text pallet テキストのパレット

Pallet and priority of sprites スプライトのパレットと優先順位

Pallet of background planes バックグラウンドのパレット

Color of text pallets テキストパレットのカラー

Color of sprite pallets スプライトパレットのカラー

Turn background planes on and off バックグラウンドの ON/OFF

Pallet of graphics planes グラフィックスプレーンのパレット

Color of graphics pallets グラフィックスパレットのカラー

3.12. vcntest2.s

The source code of vcntest2.x vcntest2.x のソースコードです。

3.13. vcntest2.x

A program that actually tests examples written as comments in the source code of the video controller. The kanji " 黄 ", which means yellow, should be painted yellow. The kanji " 赤 ", which means red, should be painted red. All kanji should be painted by the color of its meaning. Hit a key to go to the next test. vcntest2.pngビデオコントローラのソースコードの注釈に書いた例を実際に試すプログラムです。『黄』は黄色で、『赤』は赤で、すべての漢字はその意味の色で塗られなければなりません。キーを押すと次のテストに進みます。

Below, the verb "evenize" denotes "clear the least significant bit" and the verb "oddize" denotes "set the least significant bit". These bit operations are equivalent to x&-2 and x|1. 以下では、偶数化は最下位ビットをクリアすることを意味し、奇数化は最下位ビットをセットすることを意味します。これらのビット演算は x&-2 および x|1 と等価です。

SE1T

A1 黄 (yellow) A1 黄 (黄色)

Three screens are displayed. The order of screens from the near side are the sprite screen, the graphics screen and the text screen. The pallet code of the sprite screen is $10 and its color is yellow. The color of the graphics screen is red. The pallet code of the text screen is $0 and its color is black. Because all 4bit pallet code of the sprite screen and the text screen is zero and the 8bit pallet code of the sprite screen is not zero, the sprite screen is retained and the text screen is removed. The color of the nearest non-zero color code is yellow, which is the color of the sprite screen. 3 枚の画面が表示されます。画面の順序は手前からスプライト画面、グラフィックス画面、テキスト画面です。スプライト画面のパレットコードは $10、色は黄色です。グラフィックス画面の色は赤です。テキスト画面のパレットコードは $0、色は黒です。スプライト画面とテキスト画面の 4bit パレットコードがすべて 0 でスプライト画面の 8bit パレットコードが 0 ではないので、スプライト画面を残してテキスト画面を取り除きます。一番手前の 0 でないカラーコードの色はスプライト画面の黄色です。

A2 赤 (red) A2 赤 (赤)

Three screens are displayed. The order of screens from the near side are the sprite screen, the graphics screen and the text screen. The pallet code of the sprite screen is $10 and its color is yellow. The color of the graphics screen is red. The pallet code of the text screen is $1 and its color is gray. Because the 4bit pallet code of the sprite screen is zero and the 4bit pallet code of the text screen is not zero, the text screen is retained and the sprite screen is removed. The color of the nearest non-zero color code is red, which is the color of the graphics screen. 3 枚の画面が表示されます。画面の順序は手前からスプライト画面、グラフィックス画面、テキスト画面です。スプライト画面のパレットコードは $10、色は黄色です。グラフィックス画面の色は赤です。テキスト画面のパレットコードは $1、色は灰色です。スプライト画面の 4bit パレットコードが 0 でテキスト画面の 4bit パレットコードが 0 ではないので、テキスト画面を残してスプライト画面を取り除きます。一番手前の 0 でないカラーコードの色はグラフィックス画面の赤です。

E2_XHPG

B1 赤 (red) B1 赤 (赤)

Two graphics planes are displayed. The pallet code of the first graphics plane is 2 and it is red. The pallet code of the second graphics plane is 2 and it is red. The first graphics plane and the second graphics plane are not blended because the pallet code of the first graphics plane is an even number. Red, which is the color of the first graphics plane, is outputted because the pallet code of the first graphics plane is not zero. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 2、色は赤です。2 番目のグラフィックスプレーンのパレットコードは 2、色は赤です。1 番目のグラフィックスプレーンのパレットコードが偶数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンは混ざりません。1 番目のグラフィックスプレーンのパレットコードが 0 ではないので 1 番目のグラフィックスプレーンの色の赤が出力されます。

B2 赤 (red) B2 赤 (赤)

Two graphics planes are displayed. The pallet code of the first graphics plane is 2 and it is red. The pallet code of the second graphics plane is 3 and it is blue. The first graphics plane and the second graphics plane are not blended because the pallet code of the first graphics plane is an even number. Red, which is the color of the first graphics plane, is outputted because the pallet code of the first graphics plane is not zero. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 2、色は赤です。2 番目のグラフィックスプレーンのパレットコードは 3、色は青です。1 番目のグラフィックスプレーンのパレットコードが偶数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンは混ざりません。1 番目のグラフィックスプレーンのパレットコードが 0 ではないので 1 番目のグラフィックスプレーンの色の赤が出力されます。

B3 紫 (fuchsia) B3 紫 (赤紫)

Two graphics planes are displayed. The pallet code of the first graphics plane is 3 and it is blue. The pallet code of the second graphics plane is 2 and it is red. The first graphics plane and the second graphics plane are blended because the pallet code of the first graphics plane is an odd number. The evenized pallet code of the first graphics plane is 2 and it is red. The oddized pallet code of the second graphics plane is 3 and it is blue. Red, which is the color of the evenized pallet code of the first graphics plane, and blue, which is the color of the oddized pallet code of the second graphics plane, are blended and become fuchsia. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 3、色は青です。2 番目のグラフィックスプレーンのパレットコードは 2、色は赤です。1 番目のグラフィックスプレーンのパレットコードが奇数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンが混ざります。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤です。2 番目のグラフィックスプレーンの奇数化したパレットコードは 3、色は青です。1 番目のグラフィックスプレーンの偶数化したパレットコードの色の赤と 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の青が混ざって赤紫になります。

B4 紫 (fuchsia) B4 紫 (赤紫)

Two graphics planes are displayed. The pallet code of the first graphics plane is 3 and it is blue. The pallet code of the second graphics plane is 3 and it is blue. The first graphics plane and the second graphics plane are blended because the pallet code of the first graphics plane is an odd number. The evenized pallet code of the first graphics plane is 2 and it is red. The oddized pallet code of the second graphics plane is 3 and it is blue. Red, which is the color of the evenized pallet code of the first graphics plane, and blue, which is the color of the oddized pallet code of the second graphics plane, are blended and become fuchsia. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 3、色は青です。2 番目のグラフィックスプレーンのパレットコードは 3、色は青です。1 番目のグラフィックスプレーンのパレットコードが奇数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンが混ざります。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤です。2 番目のグラフィックスプレーンの奇数化したパレットコードは 3、色は青です。1 番目のグラフィックスプレーンの偶数化したパレットコードの色の赤と 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の青が混ざって赤紫になります。

E2_XHCG

In the following tests, the color of the pallet code 2 is red, its color code is an even number, the color of the pallet code 3 is blue, the color of the pallet code 4 is fuchsia and the color of the pallet code 5 is aqua. 以下のテストでは、パレットコード 2 の色は赤、カラーコードは偶数、パレットコード 3 の色は青、パレットコード 4 の色は赤紫、パレットコード 5 の色は水色です。

C1 赤 (red) C1 赤 (赤)

Two graphics planes are displayed. The pallet code of the first graphics plane is 2, it is red and its color code is an even number. The pallet code of the second graphics plane is 2 and it is red. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an even number. The first graphics plane and the second graphics plane are not blended because the color code of the evenized pallet code of the first graphics plane is an even number. Red, which is the color of the first graphics plane, is outputted because the pallet code of the first graphics plane is an even number. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 2、色は赤、カラーコードは偶数です。2 番目のグラフィックスプレーンのパレットコードは 2、色は赤です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは偶数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが偶数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンは混ざりません。1 番目のグラフィックスプレーンのパレットコードが偶数なので 1 番目のグラフィックスプレーンの色の赤が出力されます。

C2 赤 (red) C2 赤 (赤)

Two graphics planes are displayed. The pallet code of the first graphics plane is 2, it is red and its color code is an even number. The pallet code of the second graphics plane is 3 and it is blue. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an even number. The first graphics plane and the second graphics plane are not blended because the color code of the evenized pallet code of the first graphics plane is an even number. Red, which is the color of the first graphics plane, is outputted because the pallet code of the first graphics plane is an even number. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 2、色は赤、カラーコードは偶数です。2 番目のグラフィックスプレーンのパレットコードは 3、色は青です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは偶数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが偶数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンは混ざりません。1 番目のグラフィックスプレーンのパレットコードが偶数なので 1 番目のグラフィックスプレーンの色の赤が出力されます。

C3 赤 (red) C3 赤 (赤)

Two graphics planes are displayed. The pallet code of the first graphics plane is 2, it is red and its color code is an even number. The pallet code of the second graphics plane is 4 and it is fuchsia. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an even number. The first graphics plane and the second graphics plane are not blended because the color code of the evenized pallet code of the first graphics plane is an even number. Red, which is the color of the first graphics plane, is outputted because the pallet code of the first graphics plane is an even number. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 2、色は赤、カラーコードは偶数です。2 番目のグラフィックスプレーンのパレットコードは 4、色は赤紫です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは偶数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが偶数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンは混ざりません。1 番目のグラフィックスプレーンのパレットコードが偶数なので 1 番目のグラフィックスプレーンの色の赤が出力されます。

C4 赤 (red) C4 赤 (赤)

Two graphics planes are displayed. The pallet code of the first graphics plane is 2, it is red and its color code is an even number. The pallet code of the second graphics plane is 5 and it is aqua. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an even number. The first graphics plane and the second graphics plane are not blended because the color code of the evenized pallet code of the first graphics plane is an even number. Red, which is the color of the first graphics plane, is outputted because the pallet code of the first graphics plane is an even number. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 2、色は赤、カラーコードは偶数です。2 番目のグラフィックスプレーンのパレットコードは 5、色は水色です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは偶数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが偶数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンは混ざりません。1 番目のグラフィックスプレーンのパレットコードが偶数なので 1 番目のグラフィックスプレーンの色の赤が出力されます。

C5 青 (blue) C5 青 (青)

Two graphics planes are displayed. The pallet code of the first graphics plane is 3 and it is blue. The pallet code of the second graphics plane is 2 and it is red. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an even number. The first graphics plane and the second graphics plane are not blended because the color code of the evenized pallet code of the first graphics plane is an even number. The oddized pallet code of the second graphics plane is 3 and it is blue. Blue, which is the color of the oddized pallet code of the second graphics plane, is outputted because the pallet code of the first graphics plane is an odd number. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 3、色は青です。2 番目のグラフィックスプレーンのパレットコードは 2、色は赤です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは偶数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが偶数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンは混ざりません。2 番目のグラフィックスプレーンの奇数化したパレットコードは 3、色は青です。1 番目のグラフィックスプレーンのパレットコードが奇数なので 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の青が出力されます。

C6 青 (blue) C6 青 (青)

Two graphics planes are displayed. The pallet code of the first graphics plane is 3 and it is blue. The pallet code of the second graphics plane is 3 and it is blue. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an even number. The first graphics plane and the second graphics plane are not blended because the color code of the evenized pallet code of the first graphics plane is an even number. The oddized pallet code of the second graphics plane is 3 and it is blue. Blue, which is the color of the oddized pallet code of the second graphics plane, is outputted because the pallet code of the first graphics plane is an odd number. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 3、色は青です。2 番目のグラフィックスプレーンのパレットコードは 3、色は青です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは偶数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが偶数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンは混ざりません。2 番目のグラフィックスプレーンの奇数化したパレットコードは 3、色は青です。1 番目のグラフィックスプレーンのパレットコードが奇数なので 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の青が出力されます。

C7 水 (aqua) C7 水 (水色)

Two graphics planes are displayed. The pallet code of the first graphics plane is 3 and it is blue. The pallet code of the second graphics plane is 4 and it is fuchsia. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an even number. The first graphics plane and the second graphics plane are not blended because the color code of the evenized pallet code of the first graphics plane is an even number. The oddized pallet code of the second graphics plane is 5 and it is aqua. Aqua, which is the color of the oddized pallet code of the second graphics plane, is outputted because the pallet code of the first graphics plane is an odd number. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 3、色は青です。2 番目のグラフィックスプレーンのパレットコードは 4、色は赤紫です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは偶数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが偶数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンは混ざりません。2 番目のグラフィックスプレーンの奇数化したパレットコードは 5、色は水色です。1 番目のグラフィックスプレーンのパレットコードが奇数なので 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の水色が出力されます。

C8 水 (aqua) C8 水 (水色)

Two graphics planes are displayed. The pallet code of the first graphics plane is 3 and it is blue. The pallet code of the second graphics plane is 5 and it is aqua. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an even number. The first graphics plane and the second graphics plane are not blended because the color code of the evenized pallet code of the first graphics plane is an even number. The oddized pallet code of the second graphics plane is 5 and it is aqua. Aqua, which is the color of the oddized pallet code of the second graphics plane, is outputted because the pallet code of the first graphics plane is an odd number. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 3、色は青です。2 番目のグラフィックスプレーンのパレットコードは 5、色は水色です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは偶数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが偶数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンは混ざりません。2 番目のグラフィックスプレーンの奇数化したパレットコードは 5、色は水色です。1 番目のグラフィックスプレーンのパレットコードが奇数なので 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の水色が出力されます。

In the following tests, the color of the pallet code 2 is red, its color code is an odd number, the color of the pallet code 3 is blue, the color of the pallet code 4 is fuchsia and the color of the pallet code 5 is aqua. 以下のテストでは、パレットコード 2 の色は赤、カラーコードは奇数、パレットコード 3 の色は青、パレットコード 4 の色は赤紫、パレットコード 5 の色は水色です。

D1 紫 (fuchsia) D1 紫 (赤紫)

Two graphics planes are displayed. The pallet code of the first graphics plane is 2, it is red and its color code is an odd number. The pallet code of the second graphics plane is 2 and it is red. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an odd number. The first graphics plane and the second graphics plane are blended because the color code of the evenized pallet code of the first graphics plane is an odd number. The oddized pallet code of the second graphics plane is 3 and it is blue. Red, which is the color of the evenized pallet code of the first graphics plane, and blue, which is the color of the oddized pallet code of the second graphics plane, are blended and become fuchsia. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 2、色は赤、カラーコードは奇数です。2 番目のグラフィックスプレーンのパレットコードは 2、色は赤です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは奇数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが奇数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンが混ざります。2 番目のグラフィックスプレーンの奇数化したパレットコードは 3、色は青です。1 番目のグラフィックスプレーンの偶数化したパレットコードの色の赤と 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の青が混ざって赤紫になります。

D2 紫 (fuchsia) D2 紫 (赤紫)

Two graphics planes are displayed. The pallet code of the first graphics plane is 2, it is red and its color code is an odd number. The pallet code of the second graphics plane is 3 and it is blue. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an odd number. The first graphics plane and the second graphics plane are blended because the color code of the evenized pallet code of the first graphics plane is an odd number. The oddized pallet code of the second graphics plane is 3 and it is blue. Red, which is the color of the evenized pallet code of the first graphics plane, and blue, which is the color of the oddized pallet code of the second graphics plane, are blended and become fuchsia. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 2、色は赤、カラーコードは奇数です。2 番目のグラフィックスプレーンのパレットコードは 3、色は青です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは奇数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが奇数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンが混ざります。2 番目のグラフィックスプレーンの奇数化したパレットコードは 3、色は青です。1 番目のグラフィックスプレーンの偶数化したパレットコードの色の赤と 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の青が混ざって赤紫になります。

D3 灰 (gray) D3 灰 (灰色)

Two graphics planes are displayed. The pallet code of the first graphics plane is 2, it is red and its color code is an odd number. The pallet code of the second graphics plane is 4 and it is fuchsia. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an odd number. The first graphics plane and the second graphics plane are blended because the color code of the evenized pallet code of the first graphics plane is an odd number. The oddized pallet code of the second graphics plane is 5 and it is aqua. Red, which is the color of the evenized pallet code of the first graphics plane, and aqua, which is the color of the oddized pallet code of the second graphics plane, are blended and become gray. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 2、色は赤、カラーコードは奇数です。2 番目のグラフィックスプレーンのパレットコードは 4、色は赤紫です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは奇数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが奇数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンが混ざります。2 番目のグラフィックスプレーンの奇数化したパレットコードは 5、色は水色です。1 番目のグラフィックスプレーンの偶数化したパレットコードの色の赤と 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の水色が混ざって灰色になります。

D4 灰 (gray) D4 灰 (灰色)

Two graphics planes are displayed. The pallet code of the first graphics plane is 2, it is red and its color code is an odd number. The pallet code of the second graphics plane is 5 and it is aqua. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an odd number. The first graphics plane and the second graphics plane are blended because the color code of the evenized pallet code of the first graphics plane is an odd number. The oddized pallet code of the second graphics plane is 5 and it is aqua. Red, which is the color of the evenized pallet code of the first graphics plane, and aqua, which is the color of the oddized pallet code of the second graphics plane, are blended and become gray. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 2、色は赤、カラーコードは奇数です。2 番目のグラフィックスプレーンのパレットコードは 5、色は水色です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは奇数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが奇数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンが混ざります。2 番目のグラフィックスプレーンの奇数化したパレットコードは 5、色は水色です。1 番目のグラフィックスプレーンの偶数化したパレットコードの色の赤と 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の水色が混ざって灰色になります。

D5 紫 (fuchsia) D5 紫 (赤紫)

Two graphics planes are displayed. The pallet code of the first graphics plane is 3 and it is blue. The pallet code of the second graphics plane is 2 and it is red. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an odd number. The first graphics plane and the second graphics plane are blended because the color code of the evenized pallet code of the first graphics plane is an odd number. The oddized pallet code of the second graphics plane is 3 and it is blue. Red, which is the color of the evenized pallet code of the first graphics plane, and blue, which is the color of the oddized pallet code of the second graphics plane, are blended and become fuchsia. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 3、色は青です。2 番目のグラフィックスプレーンのパレットコードは 2、色は赤です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは奇数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが奇数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンが混ざります。2 番目のグラフィックスプレーンの奇数化したパレットコードは 3、色は青です。1 番目のグラフィックスプレーンの偶数化したパレットコードの色の赤と 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の青が混ざって赤紫になります。

D6 紫 (fuchsia) D6 紫 (赤紫)

Two graphics planes are displayed. The pallet code of the first graphics plane is 3 and it is blue. The pallet code of the second graphics plane is 3 and it is blue. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an odd number. The first graphics plane and the second graphics plane are blended because the color code of the evenized pallet code of the first graphics plane is an odd number. The oddized pallet code of the second graphics plane is 3 and it is blue. Red, which is the color of the evenized pallet code of the first graphics plane, and blue, which is the color of the oddized pallet code of the second graphics plane, are blended and become fuchsia. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 3、色は青です。2 番目のグラフィックスプレーンのパレットコードは 3、色は青です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは奇数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが奇数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンが混ざります。2 番目のグラフィックスプレーンの奇数化したパレットコードは 3、色は青です。1 番目のグラフィックスプレーンの偶数化したパレットコードの色の赤と 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の青が混ざって赤紫になります。

D7 灰 (gray) D7 灰 (灰色)

Two graphics planes are displayed. The pallet code of the first graphics plane is 3 and it is blue. The pallet code of the second graphics plane is 4 and it is fuchsia. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an odd number. The first graphics plane and the second graphics plane are blended because the color code of the evenized pallet code of the first graphics plane is an odd number. The oddized pallet code of the second graphics plane is 5 and it is aqua. Red, which is the color of the evenized pallet code of the first graphics plane, and aqua, which is the color of the oddized pallet code of the second graphics plane, are blended and become gray. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 3、色は青です。2 番目のグラフィックスプレーンのパレットコードは 4、色は赤紫です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは奇数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが奇数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンが混ざります。2 番目のグラフィックスプレーンの奇数化したパレットコードは 5、色は水色です。1 番目のグラフィックスプレーンの偶数化したパレットコードの色の赤と 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の水色が混ざって灰色になります。

D8 灰 (gray) D8 灰 (灰色)

Two graphics planes are displayed. The pallet code of the first graphics plane is 3 and it is blue. The pallet code of the second graphics plane is 5 and it is aqua. The evenized pallet code of the first graphics plane is 2, it is red and its color code is an odd number. The first graphics plane and the second graphics plane are blended because the color code of the evenized pallet code of the first graphics plane is an odd number. The oddized pallet code of the second graphics plane is 5 and it is aqua. Red, which is the color of the evenized pallet code of the first graphics plane, and aqua, which is the color of the oddized pallet code of the second graphics plane, are blended and become gray. 2 枚のグラフィックスプレーンが表示されます。1 番目のグラフィックスプレーンのパレットコードは 3、色は青です。2 番目のグラフィックスプレーンのパレットコードは 5、色は水色です。1 番目のグラフィックスプレーンの偶数化したパレットコードは 2、色は赤、カラーコードは奇数です。1 番目のグラフィックスプレーンの偶数化したパレットコードのカラーコードが奇数なので 1 番目のグラフィックスプレーンと 2 番目のグラフィックスプレーンが混ざります。2 番目のグラフィックスプレーンの奇数化したパレットコードは 5、色は水色です。1 番目のグラフィックスプレーンの偶数化したパレットコードの色の赤と 2 番目のグラフィックスプレーンの奇数化したパレットコードの色の水色が混ざって灰色になります。