Table of contents目次

  1. Makefile
    1. Makefile.host
    2. Makefile.x68k
  2. Files to be used in making XEiJXEiJ を作るときに使うファイル
    1. adotr*.r
    2. drawingmode.pl
    3. efp.gp
    4. favicon.pl
    5. ftob.pl
    6. Graph.pm
    7. hermite.gp
    8. hu260pat.s
    9. hu260pat.x
    10. include/*
    11. itob.pl
    12. itob.pl
    13. keymap/*
    14. omusubifont.r
    15. omusubifont.s
    16. opcode.pl
    17. optdiv.pl
    18. pattobytes.pl
    19. rom16pat.s
    20. rom16pat.x
    21. scsi16.s
    22. scsi16ex.r
    23. scsi16in.r
    24. sjdump.pl
    25. two_pi.pl
  3. Test programsテストプログラム
    1. cir.s
    2. cir.x
    3. crtcmmtest.s
    4. crtcmmtest.x
    5. crtmodtest.s
    6. crtmodtest.x
    7. fefunctest.bas
    8. fputest.s
    9. fputest.x
    10. instructiontest.s
    11. instructiontest.x
    12. optime.s
    13. optime.x
    14. optitest.bat
    15. spr256test.s
    16. spr256test.x
    17. vcntest.s
    18. vcntest.x
    19. vcntest2.s
    20. vcntest2.x
    21. zkeytest.s
    22. zkeytest.x
  4. Other programs その他のプログラム
    1. crtmod16.s
    2. crtmod16.x
    3. ppcon.s
    4. ppcon.x
    5. 060tsys/*

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.x68k is used to create the following files on the X68000. Makefile.x68k は X68000 で以下のファイルを作るときに使います。

B:\>make -f Makefile.x68k

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

2.1. adotr*.r

Used for the "Send file" button under "Transfer" in the "RS232C and terminal" window. 「RS232C とターミナル」ウインドウの「転送」の「ファイル送信」ボタンで使います。

2.2. 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.3. efp.gp

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

2.4. favicon.pl

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

2.5. ftob.pl

A Perl script that converts binary files into strings. バイナリファイルを文字列に変換する Perl スクリプトです。

2.6. Graph.pm

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

2.7. hermite.gp

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

2.8. hu260pat.s

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

2.9. hu260pat.x

This is a patch to change Human 3.02 to ROM Human 2.60. It is not an executable program. Human 3.02 を ROM Human 2.60 にするパッチです。実行プログラムではありません。

2.10. include/*

These include files are used in Makefile.x68k. これらのインクルードファイルは Makefile.x68k で使います。

2.11. itob.pl

This is a Perl script that converts an array of byte's into a string to avoid the initialization code from becoming too large to compile. 初期化コードが巨大化してコンパイルできなくなるのを避けるために byte の配列を文字列に変換する Perl スクリプトです。

2.12. itob.pl

This is a Perl script that converts an array of char's into a string to avoid the initialization code from becoming too large to compile. 初期化コードが巨大化してコンパイルできなくなるのを避けるために char の配列を文字列に変換する Perl スクリプトです。

2.13. keymap/*

This is a tool that collects KeyEvent data when a key assigned to an X68000 key is pressed. X68000 のキーに割り当てるキーを押したときの KeyEvent のデータを収集するツールです。

2.14. omusubifont.r

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.15. omusubifont.s

This is the source code for the Omusubi font. おむすびフォントのソースコードです。

2.16. 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.17. 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.18. pattobytes.pl

Perl script to convert patch data for making ROM Human 2.60 and patch data for making IPL/BIOS 1.6 into character strings. ROM Human 2.60 を作るためのパッチデータと IPL/BIOS 1.6 を作るためのパッチデータを文字列に変換するための Perl スクリプトです。

2.19. rom16pat.s

This is the source code for the patch data to make IPL/BIOS 1.6. IPL/BIOS 1.6 を作るためのパッチデータのソースコードです。

2.20. rom16pat.x

This is the patch data for making IPL/BIOS 1.6. IPL/BIOS 1.6 を作るためのパッチデータです。

2.21. scsi16.s

Source code for SCSIEXROM 16 and SCSIINROM 16. SCSIEXROM 16 と SCSIINROM 16 のソースコードです。

2.22. scsi16ex.r

SCSIEXROM 16. SCSIEXROM 16 です。

2.23. scsi16in.r

SCSIINROM 16. SCSIINROM 16 です。

2.24. 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.25. 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 graphic screen should be turned off before the test. CRTC のメモリモード (R20 のビット 10-8) の動作を確認するプログラムです。未公開のメモリモード 2 と、メモリモード 4 と同じ 5、6、7 もテストします。拡張グラフィック画面 が ON のときは OFF にしてリセットしてからテストしてください。

3.5. crtmodtest.s

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

3.6. crtmodtest.x

crtmodtest.png

This program is used to test the screen mode of IOCS _CRTMOD in IPLROM 1.6. IPLROM 1.6 の IOCS _CRTMOD の画面モードをテストするためのプログラムです。

B:\>crtmodtest.x
CRTMODTEST for IPLROM 1.6 (2023-01-10)
オプション
  -l 0-1   0=CRT,1=LCD
  -m 0-39  画面モード
  ┌───┬───────────┬───────────────────────────┐
  │CRTMOD│実画面サイズ 色 ページ│        水平同期  垂直同期  画面サイズ      備考      │
  ├───┼───────────┼───────────────────────────┤
  │   0  │ 1024x1024     16  1  │                                                      │
  │   4  │  512x512      16  4  │  CRT  31.500kHz  55.458Hz   512x512                  │
  │   8  │  512x512     256  2  │  LCD  35.341kHz  56.546Hz   512x512                  │
  │  12  │  512x512   65536  1  │                                                      │
  ├───┼───────────┼───────────────────────────┤
  │   1  │ 1024x1024     16  1  │                                                      │
  │   5  │  512x512      16  4  │  CRT  15.980kHz  61.463Hz   512x480   インターレース │
  │   9  │  512x512     256  2  │  LCD  35.341kHz  56.546Hz   512x480                  │
  │  13  │  512x512   65536  1  │                                                      │
  ├───┼───────────┼───────────────────────────┤
  │   2  │ 1024x1024     16  1  │                                                      │
  │   6  │  512x512      16  4  │  CRT  31.500kHz  55.458Hz   256x256   ラスタ二度読み │
  │  10  │  512x512     256  2  │  LCD  34.500kHz  55.200Hz   256x256   ラスタ二度読み │
  │  14  │  512x512   65536  1  │                                                      │
  ├───┼───────────┼───────────────────────────┤
  │   3  │ 1024x1024     16  1  │                                                      │
  │   7  │  512x512      16  4  │  CRT  15.980kHz  61.463Hz   256x240                  │
  │  11  │  512x512     256  2  │  LCD  34.500kHz  55.200Hz   256x240   ラスタ二度読み │
  │  15  │  512x512   65536  1  │                                                      │
  ├───┼───────────┼───────────────────────────┤
  │  16  │ 1024x1024     16  1  │  CRT  31.500kHz  55.458Hz   768x512                  │
  │  20  │  512x512     256  2  │  LCD  35.056kHz  56.090Hz   768x512                  │
  │  24  │  512x512   65536  1  │                                                      │
  ├───┼───────────┼───────────────────────────┤
  │  17  │ 1024x1024     16  1  │  CRT  24.699kHz  53.116Hz  1024x424                  │
  │  21  │  512x512     256  2  │  LCD  35.056kHz  56.090Hz   768x600                  │
  │  25  │  512x512   65536  1  │                               変形                   │
  ├───┼───────────┼───────────────────────────┤
  │  18  │ 1024x1024     16  1  │  CRT  24.699kHz  53.116Hz  1024x848   インターレース │
  │  22  │  512x512     256  2  │  LCD  35.056kHz  56.090Hz   768x1024  インターレース │
  │  26  │  512x512   65536  1  │                               変形                   │
  ├───┼───────────┼───────────────────────────┤
  │  19  │ 1024x1024     16  1  │  CRT  31.500kHz  55.458Hz   640x480   VGAではない    │
  │  23  │  512x512     256  2  │  LCD  31.469kHz  59.940Hz   640x480   VGA            │
  │  27  │  512x512   65536  1  │                                                      │
  ├───┼───────────┼───────────────────────────┤
  │  28  │ 1024x1024     16  1  │                                                      │
  │  29  │  512x512      16  4  │  CRT  31.963kHz  56.273Hz   384x256   ラスタ二度読み │
  │  30  │  512x512     256  2  │  LCD  31.963kHz  51.141Hz   384x256   ラスタ二度読み │
  │  31  │  512x512   65536  1  │                                                      │
  ├───┼───────────┼───────────────────────────┤
  │  32  │ 1024x1024     16  1  │                                                      │
  │  33  │  512x512      16  4  │  CRT  31.500kHz  55.458Hz   512x512                  │
  │  34  │  512x512     256  2  │  LCD  35.056kHz  56.090Hz   512x512                  │
  │  35  │  512x512   65536  1  │                              正方形                  │
  ├───┼───────────┼───────────────────────────┤
  │  36  │ 1024x1024     16  1  │                                                      │
  │  37  │  512x512      16  4  │  CRT  31.963kHz  56.273Hz   256x256   ラスタ二度読み │
  │  38  │  512x512     256  2  │  LCD  31.963kHz  51.141Hz   256x256   ラスタ二度読み │
  │  39  │  512x512   65536  1  │                              正方形                  │
  └───┴───────────┴───────────────────────────┘
B:\>

3.7. fefunctest.bas

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

3.8. 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.9. 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.10. instructiontest.s

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

3.11. 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.12. optime.s

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

3.13. optime.x

Measure the execution time of instructions. 命令の実行時間を計ります。

B:\>optime.x
optime.x (2023-01-21)
Measure the execution time of instructions
  -a has060  Assembler
  -f nop.s   File containing instructions
  -i "nop"   Semicolon-delimited instructions
  -s         Measure in SRAM. Ask when SRAM in use
  -sn        Same as -s but not measure when SRAM in use
  -sy        Same as -s but measure even when SRAM in use
  -t %temp%  Temporary directory
  -v         Output verbose messages
B:\>optime.x -i "nop"
"nop"	0.400 us
B:\>

3.14. optitest.bat

A batch file that measures instruction execution time using optime.x and outputs the results to optitest.log. It is recommended to copy HAS060.X, optime.x and optitest.bat to the RAM disk and run them on the RAM disk. optime.x を使って命令の実行時間を計測し、結果を optitest.log へ出力するバッチファイルです。HAS060.X と optime.x と optitest.bat を RAM ディスクにコピーして、RAM ディスクで実行することをお勧めします。

3.15. spr256test.s

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

3.16. spr256test.x

spr256test.png

Test the simultaneous display of 256 sprites. スプライト 256 枚同時表示をテストします。

3.17. vcntest.s

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

3.18. vcntest.x

vcntest.png

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

Command コマンド

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

Priority of graphic 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 graphic planes グラフィックプレーンのパレット

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

3.19. vcntest2.s

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

3.20. vcntest2.x

vcntest2.png

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. ビデオコントローラのソースコードの注釈に書いた例を実際に試すプログラムです。『黄』は黄色で、『赤』は赤で、すべての漢字はその意味の色で塗られなければなりません。キーを押すと次のテストに進みます。

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 graphic screen and the text screen. The pallet code of the sprite screen is $10 and its color is yellow. The color of the graphic 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 graphic screen and the text screen. The pallet code of the sprite screen is $10 and its color is yellow. The color of the graphic 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 graphic screen. 3 枚の画面が表示されます。画面の順序は手前からスプライト画面、グラフィック画面、テキスト画面です。スプライト画面のパレットコードは $10、色は黄色です。グラフィック画面の色は赤です。テキスト画面のパレットコードは $1、色は灰色です。スプライト画面の 4bit パレットコードが 0 でテキスト画面の 4bit パレットコードが 0 ではないので、テキスト画面を残してスプライト画面を取り除きます。一番手前の 0 でないカラーコードの色はグラフィック画面の赤です。

E2_XHPG

B1 赤 (red) B1 赤 (赤)

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

B2 赤 (red) B2 赤 (赤)

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

B3 紫 (fuchsia) B3 紫 (赤紫)

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

B4 紫 (fuchsia) B4 紫 (赤紫)

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

C2 赤 (red) C2 赤 (赤)

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

C3 赤 (red) C3 赤 (赤)

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

C4 赤 (red) C4 赤 (赤)

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

C5 青 (blue) C5 青 (青)

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

C6 青 (blue) C6 青 (青)

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

C7 水 (aqua) C7 水 (水色)

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

C8 水 (aqua) C8 水 (水色)

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

D2 紫 (fuchsia) D2 紫 (赤紫)

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

D3 灰 (gray) D3 灰 (灰色)

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

D4 灰 (gray) D4 灰 (灰色)

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

D5 紫 (fuchsia) D5 紫 (赤紫)

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

D6 紫 (fuchsia) D6 紫 (赤紫)

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

D7 灰 (gray) D7 灰 (灰色)

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

D8 灰 (gray) D8 灰 (灰色)

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

3.21. zkeytest.s

zkeytest.s is the source code of zkeytest.x. zkeytest.s はzkeytest.xのソースコードです。

3.22. zkeytest.x

zkeytest.x tests the Z keyboard LED control. zkeytest.x は Z キーボード LED 制御をテストします。

4. Other programs その他のプログラム

4.1. crtmod16.s

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

4.2. crtmod16.x

This is a resident program of IOCS _CRTMOD and IOCS _G_CLR_ON included in IPLROM 1.6. IPLROM 1.6 に含まれる IOCS _CRTMOD と IOCS _G_CLR_ON を常駐プログラムにしたものです。

B:\>crtmod16.x
CRTMOD16 from IPLROM 1.6 (2023-01-10)
オプション
  -e       CRTMODを拡張する
  -l 0-1   0=CRT,1=LCD
  -m 0-39  画面モード
  -r       CRTMODの拡張を解除する
B:\>

4.3. ppcon.s

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

4.4. 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. IPLROM 1.6 の起動画面で使われているプロポーショナルピッチや右寄せに対応した文字表示ルーチンをデバイスドライバまたは常駐プログラムとして組み込めるようにしたものです。

B:\>ppcon.x
Proportional-Pitch CONsole version 0.10

オプション
  -f        固定ピッチに切り替える
  -k        常駐する
  -p        プロポーショナルピッチに切り替える
  -q        表示を減らす
  -r        解除する
  -s        サンプルを表示する
  -v        表示を増やす

制御文字
  ^G        $07 BL ベルを鳴らす
  ^H        $08 BS カーソルを1桁左へ。左端では1行上の右端へ。上端では何もしない
  ^I        $09 HT カーソルを次のタブ桁へ。なければ1行下の左端へ。下端ではスクロールアップして左端へ
  ^J        $0A LF カーソルを1行下へ。下端ではスクロールアップ
  ^K        $0B VT カーソルを1行上へ。上端では何もしない
  ^L        $0C FF カーソルを1桁右へ。右端では1行下の左端へ。下端ではスクロールアップして左端へ
  ^M        $0D CR カーソルを左端へ
  ^Z        $1A SB 左上から右下まで消去。カーソルを左上へ
  ^[        $1B EC エスケープシーケンス開始
  ^^        $1E RS カーソルを左上へ

エスケープシーケンス
  ^[*       左上から右下まで消去。カーソルを左上へ
  ^[=rc     カーソルをr-$20行,c-$20桁へ。rとcは文字
  ^[D       カーソルを1行下へ。下端ではスクロールアップ
  ^[E       カーソルを1行下の左端へ。下端ではスクロールアップ
  ^[M       カーソルを1行上へ。上端ではスクロールダウン
  ^[[>5l    カーソルON
  ^[[>5h    カーソルOFF
  ^[[?4l    ジャンプスクロール
  ^[[?4h    8ドットスムーススクロール
  ^[[n@     カーソルから右にn桁挿入
  ^[[nA     カーソルをn行上へ。上端を超えるときは動かない
  ^[[nB     カーソルをn行下へ。下端で止まる
  ^[[nC     カーソルをn桁右へ。右端で止まる
  ^[[nD     カーソルをn桁左へ。左端で止まる
  ^[[r;cH   カーソルをr-1行,c-1桁へ。下端で止まる。右端で止まる
  ^[[r;cf   カーソルをr-1行,c-1桁へ。下端で止まる。右端で止まる
  ^[[0J     カーソルから右下まで消去する
  ^[[1J     左上からカーソルまで消去する
  ^[[2J     左上から右下まで消去する。カーソルを左上へ
  ^[[0K     カーソルから右端まで消去する
  ^[[1K     左端からカーソルまで消去する
  ^[[2K     左端から右端まで消去する
  ^[[nL     カーソルから下にn行挿入。カーソルを左端へ
  ^[[nM     カーソルから下をn行削除。カーソルを左端へ
  ^[[nP     カーソルから右をn桁削除
  ^[[nX     カーソルから右をn桁消去
  ^[[nc     中央寄せ
  ^[[nl     左寄せ
  ^[[0m     リセット
  ^[[1m     太字
  ^[[2m     細字
  ^[[3m     斜体
  ^[[4m     下線
  ^[[7m     反転
  ^[[9m     取り消し線
  ^[[21m    波線
  ^[[22m    太字、細字解除
  ^[[23m    斜体解除
  ^[[24m    下線、波線解除
  ^[[26m    プロポーショナル
  ^[[27m    反転解除
  ^[[29m    取り消し線解除
  ^[[30m    黒
  ^[[31m    水色
  ^[[32m    黄色
  ^[[33m    白
  ^[[34m    太字、黒
  ^[[35m    太字、水色
  ^[[36m    太字、黄色
  ^[[37m    太字、白
  ^[[40m    反転、黒
  ^[[41m    反転、水色
  ^[[42m    反転、黄色
  ^[[43m    反転、白
  ^[[44m    反転、太字、黒
  ^[[45m    反転、太字、水色
  ^[[46m    反転、太字、黄色
  ^[[47m    反転、太字、白
  ^[[50m    プロポーショナル解除
  ^[[51m    四角囲み
  ^[[52m    丸囲み
  ^[[53m    上線
  ^[[54m    四角囲み、丸囲み解除
  ^[[55m    上線解除
  ^[[73m    上付き
  ^[[74m    下付き
  ^[[75m    上付き、下付き解除
  ^[[6n     カーソル位置報告。^[[r;cRを入力
  ^[[nr     右寄せ
  ^[[s      カーソルの座標と文字属性を保存する
  ^[[u      カーソルの座標と文字属性を復元する
B:\>

4.5. 060tsys/*

The latest version of 060turbo.sys. 060turbo.sys の最新版です。