Explanation of misc/*misc/* の説明- XEiJ - STUDIO KAMADA

### Table of contents 目次

1. Makefile
   1. Makefile.host
   2. Makefile.x68k
2. Files to be used in making XEiJ XEiJ を作るときに使うファイル
   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. mu4sim.pl and mu4sim.c mu4sim.plとmu4sim.c
   15. omusubifont.r
   16. omusubifont.s
   17. opcode.pl
   18. optdiv.pl
   19. pattobytes.pl
   20. rom16pat.s
   21. rom16pat.x
   22. scsi16.s
   23. scsi16ex.r
   24. scsi16in.r
   25. sjdump.pl
   26. two_pi.pl
3. Test programs テストプログラム
   1. bgcstest.s
   2. bgcstest.x
   3. cir.s
   4. cir.x
   5. crtcmmtest.s
   6. crtcmmtest.x
   7. crtmodtest.s
   8. crtmodtest.x
   9. cylindertest.s
   10. cylindertest.x
   11. fefunctest.bas
   12. flinebuserror.s
   13. flinebuserror.x
   14. flineprivilege.s
   15. flineprivilege.x
   16. fputest.s
   17. fputest.x
   18. fullpat.fnc
   19. fullpat.x
   20. hypotrochoid.s
   21. hypotrochoid.x
   22. instructiontest.s
   23. instructiontest.x
   24. m256test.s
   25. m256test.x
   26. optime.s
   27. optime.x
   28. optitest.bat
   29. pat4096test.s
   30. pat4096test.x
   31. prwbit2.s
   32. prwbit2.x
   33. r00bit0test.s
   34. r00bit0test.x
   35. rapidcleartest.s
   36. rapidcleartest.x
   37. smktest.s
   38. smktest.x
   39. spr1016test.s
   40. spr1016test.x
   41. spr256test.s
   42. spr256test.x
   43. spr768x512.s
   44. spr768x512.x
   45. sprdrv.s
   46. sprdrv.x
   47. vcntest.s
   48. vcntest.x
   49. vcntest2.s
   50. vcntest2.x
   51. zkeytest.s
   52. zkeytest.x
4. Other programs その他のプログラム
   1. 060tsys/*
   2. 38400bps.s
   3. 38400bps.x
   4. 51200bps.s
   5. 51200bps.x
   6. crtmodfnc.s
   7. crtmod.fnc
   8. crtmod16.s
   9. crtmod16.x
   10. crtmrb16.x
   11. db350.bfd
   12. isHFS.s
   13. isHFS.x
   14. isXEiJ.s
   15. isXEiJ.x
   16. ppcon.s
   17. ppcon.x
   18. set232c.s
   19. set232c.x
   20. stupsnd.s
   21. stupsnd.x
   22. vperiod.s
   23. vperiod.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.x68k is used to create the following files on the X68000. Makefile.x68k は X68000 で以下のファイルを作るときに使います。

- 38400bps.x
- 51200bps.x
- adotr*.r
- cir.x
- crtcmmtest.x
- crtmod.fnc
- crtmod16.x
- crtmodtest.x
- crtmrb16.x
- flinebuserror.x
- flineprivilege.x
- fputest.x
- fullpat.fnc
- fullpat.x
- hu260pat.x
- hypotrochoid.x
- instructiontest.x
- isHFS.x
- isXEiJ.x
- omusubifont.r
- optime.x,
- pat4096test.x
- ppcon.x,
- prwbit2.x,
- r00bit0test.x,
- rapidcleartest.x,
- rom16pat.x
- scsi16ex.r
- scsi16in.r
- set232c.x,
- smktest.x
- spr256test.x
- spr768x512.x
- sprdrv.x,
- stupsnd.x
- vcntest.x
- vcntest2.x
- vperiod.x
- zkeytest.x

    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 スクリプトです。

- PARI/GP Development Headquarters

### 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. mu4sim.pl and mu4sim.c mu4sim.pl と mu4sim.c

mu4sim.pl and mu4sim.c are programs for obtaining the EXPCL and EXREQ timing information necessary for emulating the Mercury-Unit V4. mu4sim.pl converts ABEL source code into C language, while mu4sim.c acts as a simple circuit simulator to observe signals. This was included as an answer to the question:“How did the author, who doesn't own a Mercury-Unit V4, create its emulator?” mu4sim.pl と mu4sim.c は、Mercury-Unit V4 のエミュレーションに必要な EXPCL と EXREQ のタイミングの情報を得るためのプログラムです。mu4sim.pl が ABEL ソースコードを C 言語に変換し、mu4sim.c が簡易的な回路シミュレータとなって信号を観測します。 「Mercury-Unit V4 を持っていない作者がどうやってそのエミュレータを作ったのか」という疑問に対する回答として収録しました。

I have the ABEL source code for the ispLSI on the Mercury-Unit V4, but I couldn't directly decipher the list of circuits described there. So, I devised and implemented a method:“Create a simple circuit simulator and observe the signals it outputs.”Someone familiar with HDL might think,“Even for a simple one, that's a terrible circuit simulator.”However, since the goal of enabling PCM output and 768x512 dot 256-color mode was achieved, I hope you'll overlook its shortcomings. Mercury-Unit V4 に載っている ispLSI の ABEL ソースコードがあるのですが、私にはそこに書かれている回路の羅列を直接読み解くことができませんでした。 そこで、「簡易的な回路シミュレータを作り、それが出す信号を観測する」という方法を考え、実行しました。HDL に慣れた人が見たら「簡易的だとしても酷い回路シミュレータだ」と思われてしまうかも知れません。PCM 出力と 768x512 ドット 256 色モードが使えるようにするという目的は達成されたということで、大目に見ていただきたいと思います。

### 2.15. 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.16. omusubifont.s

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

### 2.17. 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.18. 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.19. 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.20. rom16pat.s

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

### 2.21. rom16pat.x

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

### 2.22. scsi16.s

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

### 2.23. scsi16ex.r

SCSIEXROM 16. SCSIEXROM 16 です。

### 2.24. scsi16in.r

SCSIINROM 16. SCSIINROM 16 です。

### 2.25. 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.26. 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/ π のデータの一部分だけを使います。

- The GNU MP Bignum Library
- GMP の使い方

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

### 3.1. bgcstest.s

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

### 3.2. bgcstest.x

Tests the operation of the chip select in the text used by the BG. BG が使うテキストのチップセレクトの動作をテストします。

    B:\>bgcstest.x
    BG chip select test
    usage: bgcstest.x size b1cs b1tx b1on b0cs b0tx b0on
      size  0=8x8    1=16x16  pattern size
      b1cs  0=PCS0   1=PCS1   chip select for text used by BG1
      b1tx  0=TEXT0  1=TEXT1  text used by BG1
      b1on  0=OFF    1=ON     whether to display BG1
      b0cs  0=PCS0   1=PCS1   chip select for text used by BG0
      b0tx  0=TEXT0  1=TEXT1  text used by BG0
      b0on  0=OFF    1=ON     whether to display BG0
    colors:
      blue    PCS0 TEXT0
      cyan    PCS0 TEXT1
      green   PCS1 TEXT0
      yellow  PCS1 TEXT1
      red     full pattern memory is not available
    B:\>

### 3.3. cir.s

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

### 3.4. 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.5. crtcmmtest.s

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

### 3.6. 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.7. crtmodtest.s

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

### 3.8. crtmodtest.x

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

    B:\>crtmodtest
    crtmodtest.x (2025-06-29)

    説明
      crtmodtest.xはCRTMODの実装とモニタの性能を確認するための画面を表示します。
      ESCキーを押すと画面モードを変更したまま終了、他のキーを押すと元に戻して終了します。

    オプション
      -l 0～1    0でCRT向けの同期周波数、1でLCD向けの同期周波数を選択します。
      -m 0～73   画面モードを選択します。
      -s         -lの選択をSRAMに保存します。

    画面モードの一覧
      ┌────┬─────┬────┬───┬─────────┬─────────┐
      │  画面  │  実画面  │色数    │ 画面 │      CRT向け     │      LCD向け     │
      │ サイズ │  サイズ  │ページ数│モード│水平同期  垂直同期│水平同期  垂直同期│
      ├────┼─────┼────┼───┼─────────┼─────────┤
      │ 256x256│  512x512 │   16  4│   6  │31.500kHz 55.458Hz│34.500kHz 55.200Hz│
      │        │    〃    │  256  2│  10  │   ラスタ2度読み  │   ラスタ2度読み  │
      │        │    〃    │65536  1│  14  │                  │                  │
      │        │ 1024x1024│   16  1│   2  │                  │                  │
      │        │    〃    │  256* 1│  50* │                  │                  │
      │        │    〃    │65536* 1│  63* │                  │                  │
      ├────┼─────┼────┼───┼─────────┼─────────┤
      │ 256x256│  512x512 │   16  4│  37* │31.963kHz 56.273Hz│31.963kHz 51.141Hz│
      │ 正方形 │    〃    │  256  2│  38* │   ラスタ2度読み  │   ラスタ2度読み  │
      │        │    〃    │65536  1│  39* │                  │                  │
      │        │ 1024x1024│   16  1│  36* │                  │                  │
      │        │    〃    │  256* 1│  58* │                  │                  │
      │        │    〃    │65536* 1│  71* │                  │                  │
      ├────┼─────┼────┼───┤                  │                  │
      │ 384x256│  512x512 │   16  4│  29* │                  │                  │
      │        │    〃    │  256  2│  30* │                  │                  │
      │        │    〃    │65536  1│  31* │                  │                  │
      │        │ 1024x1024│   16  1│  28* │                  │                  │
      │        │    〃    │  256* 1│  56* │                  │                  │
      │        │    〃    │65536* 1│  69* │                  │                  │
      ├────┼─────┼────┼───┼─────────┼─────────┤
      │ 512x256│  512x512 │   16  4│  41* │31.500kHz 55.458Hz│35.341kHz 56.546Hz│
      │        │    〃    │  256  2│  42* │   ラスタ2度読み  │   ラスタ2度読み  │
      │        │    〃    │65536  1│  43* │                  │                  │
      │        │ 1024x1024│   16  1│  40* │                  │                  │
      │        │    〃    │  256* 1│  59* │                  │                  │
      │        │    〃    │65536* 1│  72* │                  │                  │
      ├────┼─────┼────┼───┤                  │                  │
      │ 512x256│  512x512 │   16  4│  45* │                  │                  │
      │SP:     │    〃    │  256  2│  46* │                  │                  │
      │ 512x512│    〃    │65536  1│  47* │                  │                  │
      │        │ 1024x1024│   16  1│  44* │                  │                  │
      │        │    〃    │  256* 1│  60* │                  │                  │
      │        │    〃    │65536* 1│  73* │                  │                  │
      ├────┼─────┼────┼───┼─────────┼─────────┤
      │ 512x512│  512x512 │   16  4│   4  │31.500kHz 55.458Hz│35.341kHz 56.546Hz│
      │        │    〃    │  256  2│   8  │                  │                  │
      │        │    〃    │65536  1│  12  │                  │                  │
      │        │ 1024x1024│   16  1│   0  │                  │                  │
      │        │    〃    │  256* 1│  48* │                  │                  │
      │        │    〃    │65536* 1│  61* │                  │                  │
      ├────┼─────┼────┼───┤                  ├─────────┤
      │ 512x512│  512x512 │   16  4│  33* │                  │35.056kHz 56.090Hz│
      │ 正方形 │    〃    │  256  2│  34* │                  │                  │
      │        │    〃    │65536  1│  35* │                  │                  │
      │        │ 1024x1024│   16  1│  32* │                  │                  │
      │        │    〃    │  256* 1│  57* │                  │                  │
      │        │    〃    │65536* 1│  70* │                  │                  │
      ├────┼─────┼────┼───┤                  │                  │
      │ 768x512│  512x512 │  256  2│  20  │                  │                  │
      │        │    〃    │65536  1│  24  │                  │                  │
      │        │ 1024x1024│   16  1│  16  │                  │                  │
      │        │    〃    │  256* 1│  52* │                  │                  │
      │        │    〃    │65536* 1│  65* │                  │                  │
      ├────┼─────┼────┼───┤                  ├─────────┤
      │ 640x480│  512x512 │  256  2│  23  │                  │31.469kHz 59.940Hz│
      │        │    〃    │65536  1│  27  │                  │        VGA       │
      │        │ 1024x1024│   16  1│  19  │                  │                  │
      │        │    〃    │  256* 1│  55* │                  │                  │
      │        │    〃    │65536* 1│  68* │                  │                  │
      ├────┼─────┼────┼───┼─────────┼─────────┤
      │ 256x240│  512x512 │   16  4│   7  │15.980kHz 61.463Hz│34.500kHz 55.200Hz│
      │        │    〃    │  256  2│  11  │                  │   ラスタ2度読み  │
      │        │    〃    │65536  1│  15  │                  │                  │
      │        │ 1024x1024│   16  1│   3  │                  │                  │
      │        │    〃    │  256* 1│  51* │                  │                  │
      │        │    〃    │65536* 1│  64* │                  │                  │
      ├────┼─────┼────┼───┼─────────┼─────────┤
      │ 512x480│  512x512 │   16  4│   5  │15.980kHz 61.463Hz│35.341kHz 56.546Hz│
      │        │    〃    │  256  2│   9  │  インターレース  │                  │
      │        │    〃    │65536  1│  13  │                  │                  │
      │        │ 1024x1024│   16  1│   1  │                  │                  │
      │        │    〃    │  256* 1│  49* │                  │                  │
      │        │    〃    │65536* 1│  62* │                  │                  │
      ├────┼─────┼────┼───┼─────────┼─────────┤
      │CRT:    │  512x512 │  256  2│  21  │24.699kHz 53.116Hz│35.056kHz 56.090Hz│
      │1024x424│    〃    │65536  1│  25  │                  │                  │
      │LCD:    │ 1024x1024│   16  1│  17  │                  │                  │
      │ 768x600│    〃    │  256* 1│  53* │                  │                  │
      │        │    〃    │65536* 1│  66* │                  │                  │
      ├────┼─────┼────┼───┼─────────┼─────────┤
      │CRT:    │  512x512 │  256  2│  22  │24.699kHz 53.116Hz│35.056kHz 56.090Hz│
      │1024x848│    〃    │65536  1│  26  │  インターレース  │  インターレース  │
      │LCD:    │ 1024x1024│   16  1│  18  │                  │                  │
      │768x1024│    〃    │  256* 1│  54* │                  │                  │
      │        │    〃    │65536* 1│  67* │                  │                  │
      └────┴─────┴────┴───┴─────────┴─────────┘
    B:\>

### 3.9. cylindertest.s

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

### 3.10. cylindertest.x

Test the cylindrical scrolling of the text screen. Use the cursor keys to move, the CTRL key to move fast, and the ESC key to exit. テキスト画面の円筒スクロールをテストします。 カーソルキーで移動、CTRL キーで高速移動、ESC キーで終了します。

### 3.11. fefunctest.bas

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

### 3.12. flinebuserror.s

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

### 3.13. flinebuserror.x

This is an experiment to call the DOS call _GETENV with the old number $FF53 on the MC68030 to generate a bus error. If a bus error occurs, a bus error is displayed, otherwise the contents of the environment variable path are displayed. Since $FF53 is cpRESTORE (a3) on the MC68030, executing $FF53 will read (a3), and depending on the contents of a3, a bus error will occur. This problem is likely why _GETENV had to be moved to a new number, $FF83. MC68030 で DOS コールの _GETENV を古い番号 $FF53 で呼び出してバスエラーを発生させる実験です。 バスエラーが発生したときは bus error と、さもなくば環境変数 path の内容が表示されます。MC68030 では $FF53 が cpRESTORE (a3) なので、$FF53 を実行すると (a3) がリードされ、a3 の内容によってはバスエラーが発生します。 この問題が、_GETENV を新しい番号 $FF83 に移動させなければならなかった理由であると考えられます。

    C:\>flinebuserror.x
    bus error
    C:\>

### 3.14. flineprivilege.s

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

### 3.15. flineprivilege.x

Check which of $FE00 to $FFFF raises a privilege violation exception when the MC68030 is in user mode. "." indicates an F-line exception occurred, and "!" indicates a privilege violation exception occurred. Only if the addressing mode is correct for cpSAVE or cpRESTORE will a privilege violation exception be raised instead of an F-line exception. MC68030 でユーザモードのとき $FE00～$FFFF のどれで特権違反例外が発生するか調べます。 「.」は F ライン例外が発生したものを示しており、「!」は特権違反例外が発生したものを示しています。cpSAVE または cpRESTORE でアドレッシングモードが正しい場合に限り、F ライン例外ではなく特権違反例外が発生します。

    C:\>flineprivilege.x
    ................ ................ ................ ................
    ................ ................ ................ ................
    ................ ................ ................ ................
    ................ ................ ................ ................
    ................ !!!!!!!!........ !!!!!!!!!!!!!!!! !!!!!!!!!!......
    ................ !!!!!!!!!!!!!!!! ........!!!!!!!! !!!!!!!!!!!!....
    ................ ................ ................ ................
    ................ ................ ................ ................
    C:\>

### 3.16. 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.17. 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.

- FABS FACOS FADD ... -- Run tests selected by the first few letters of a mnemonic. FABS FACOS FADD ...― ニモニックの先頭の数文字で選択されたテストを実行します。
- all -- Run all tests. all― すべてのテストを実行します。
- destination=0..[1] -- Check the destination operand. destination=0..[1]― デスティネーションオペランドを調べます。
- easy -- It's the same as margin=1 nans=0. easy―margin=1 nans=0 と同じです。
- failed=0..[1] -- Output the results of failed tests. failed=0..[1]― 失敗したテストの結果を出力します。
- fpsp=[0]..1 -- Test the instructions processed by the software package. fpsp=[0]..1― ソフトウェアパッケージで処理される命令をテストします。
- hard -- It's the same as margin=0 nans=1. hard―margin=0 nans=1 と同じです。
- logging=0..[1] -- Output the results to "fputest.log". logging=0..[1]― 結果を "fputest.log" に出力します。
- margin=0..[1]..11 -- The acceptable margin of error in transcendental functions. margin=0..[1]..11― 超越関数の誤差の許容範囲。
- maximum=0..[100]..1000000 -- The maximum number of results outputted for each test. maximum=0..[100]..1000000― テスト毎の出力される結果の最大数。
- nans=[0]..1 -- Check the mantissa of NaNs. nans=[0]..1―NaN の仮数部を調べます。
- status=0..[1] -- Check the status register. status=0..[1]― ステータスレジスタを調べます。
- stdout=0..[1] -- Output the results to the standard output. stdout=0..[1]― 結果を標準出力に出力します。
- successful=[0]..1 -- Output the results of successful tests. successful=[0]..1― 成功したテストの結果を出力します。

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 凡例

- expected…expected results expected… 期待された結果
- actual…actual results actual… 実際の結果

- X…extended precision X… 拡張精度
- S…single precision S… 単精度
- D…double precision D… 倍精度

- RN…round to nearest RN… 最近接偶数への丸め
- RZ…round toward zero RZ… ゼロへの丸め
- RM…round toward minus infinity RM… 負の無限大への丸め
- RP…round toward plus infinity RP… 正の無限大への丸め

- MI…negative (N) MI… 負数 (N)
- ZE…zero (Z) ZE… ゼロ (Z)
- IN…infinity (INF) IN… 無限大 (INF)
- NA…not a number or unordered (NAN) NA… 非数または比較不能 (NAN)
- BS…branch/set on unordered (BSUN) BS… 比較不能状態での分岐またはセット (BSUN)
- SN…signaling not a number (SNAN) SN… シグナリング NaN (SNAN)
- OE…operand error (OPERR) OE… オペランドエラー (OPERR)
- OF…overflow (OVFL) OF… オーバーフロー (OVFL)
- UF…underflow (UNFL) UF… アンダーフロー (UNFL)
- DZ…divide by zero (DZ) DZ… ゼロによる除算 (DZ)
- X2…inexact operation (INEX2) X2… 不正確な計算 (INEX2)
- X1…inexact decimal input (INEX1) X1… 不正確な 10 進数の入力 (INEX1)
- AV…invalid operation (IOP) AV… 不正な計算 (IOP)
- AO…overflow (OVFL) AO… オーバーフロー (OVFL)
- AU…underflow (UNFL) AU… アンダーフロー (UNFL)
- AZ…divide by zero (DZ) AZ… ゼロによる除算 (DZ)
- AX…inexact (INEX) AX… 不正確な結果 (INEX)

#### 備考

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

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

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

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

### 3.18. fullpat.fnc

This is an external function that enables the use of full pattern memory in X-BASIC. It is backward compatible with SPRITE.FNC and includes several additional features. For details, please refer to fullpatfnc.txt. The source code is in fullpatfnc.s. X-BASIC でフルパターンメモリを使えるようにする外部関数です。SPRITE.FNC の上位互換となっており、いくつかの機能が追加されています。 詳しくは fullpatfnc.txt を参照してください。 ソースコードは fullpatfnc.s です。

### 3.19. fullpat.x

This is a driver that enables full pattern memory support for sprite-related IOCS calls. For details, please refer to fullpat.txt. The source code is in fullpat.s. スプライト関連の IOCS コールをフルパターンメモリに対応させるドライバです。 詳しくは fullpat.txt を参照してください。 ソースコードは fullpat.s です。

### 3.20. hypotrochoid.s

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

### 3.21. hypotrochoid.x

Draw a hypotrochoid on the pseudo graphic screen (background with 4096 patterns laid out). Blue (S) and purple (S) are sprite screens (BG0 and BG1), red (T) is a text screen, and green (G) is a graphic screen. 疑似グラフィック画面 (4096 個のパターンを敷き詰めたバックグラウンド) にハイポトロコイドを描きます。青 (S) と紫 (S) はスプライト画面 (BG0 と BG1)、赤 (T) はテキスト画面、緑 (G) はグラフィック画面です。

Turn on the the 4096 patterns checkbox, the sprites displayed in 768x512 checkbox, and the BG1 displayed in 512x512 checkbox in the modification menu, and reset before executing. 改造メニューの4096 個のパターンチェックボックスと768x512 でスプライトを表示チェックボックスと512x512 で BG1 を表示チェックボックスを ON にしてリセットしてから実行します。

Press BREAK/CTRL+C/ESC key to exit, other keys to stop during operation. While stopped, press ENTER key to resume and other keys to advance frame. BREAK/CTRL+C/ESC キーで終了、動作中はその他のキーで停止。停止中は ENTER キーで再開、その他のキーでコマ送りします。

It does not work on the actual X68000 machine. X68000 実機では動きません。

### 3.22. instructiontest.s

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

### 3.23. 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.24. m256test.s

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

### 3.25. m256test.x

Using the Mercury-Unit V4 (MK-MU1), draw an image on a 768x512 dot, 256-color mode screen. Run after keeping m256.x resident. Mercury-Unit V4 (MK-MU1) を使い、768x512 ドット 256 色モードの画面に画像を描きます。 m256.xを常駐させてから実行します。

    >m256.x -e11
    >m256test.x

### 3.26. optime.s

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

### 3.27. optime.x

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

    B:\>optime.x
    optime.x (2023-09-17)
    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.412 us
    B:\>

### 3.28. 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.29. pat4096test.s

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

### 3.30. pat4096test.x

Test 256 sprites and 4096 patterns. 256 枚のスプライトと4096 個のパターンをテストします。

Turn on the 256 sprites checkbox and the 4096 patterns checkbox in the modification menu, and reset before executing. 改造メニューの256 枚のスプライトチェックボックスと4096 個のパターンチェックボックスを ON にしてリセットしてから実行します。

Press any key to exit. 何かキーを押すと終了します。

It does not work on the actual X68000 machine. X68000 実機では動きません。

### 3.31. prwbit2.s

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

### 3.32. prwbit2.x

Check the operation of bit 2 of the 4th word (priority) of the sprite scroll register. スプライトスクロールレジスタの 4 ワード目 (プライオリティ) のビット 2 の動作を確認します。

### 3.33. r00bit0test.s

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

### 3.34. r00bit0test.x

Verify that bit 0 of CRTC R00 is fixed to 1. Create 384x256 screens with horizontal totals of 68, 69, and 70, and measure the vertical cycle for each. When measured on the actual X68030, the vertical period for a horizontal total of 69 is the same as the vertical period for a horizontal total of 70. On an emulator where bit 0 of CRTC R00 is not fixed to 1, the vertical period when the horizontal total is 69 is halfway between the vertical period when the horizontal total is 68 and the vertical period when the horizontal total is 70. CRTC R00 の bit0 が 1 に固定されていることを確認します。384x256 の画面を水平トータルが 68、69、70 の場合について作り、それぞれ垂直周期を計測します。X68030 実機で計測すると、水平トータルが 69 の場合の垂直周期が 70 の場合の垂直周期と同じになります。CRTC R00 の bit0 が 1 に固定されていないエミュレータでは、水平トータルが 69 の場合の垂直周期が 68 の場合の垂直周期と 70 の場合の垂直周期の中間になります。

    B:\>r00bit0test.x
    r00bit0test.x (2024-02-17)
    TEST 1: HTin=68 exp_HTout=68 exp_VP=17770 obs_VP=17770 obs_HTout=68 OK
    TEST 2: HTin=69 exp_HTout=70 exp_VP=18293 obs_VP=18291 obs_HTout=70 OK
    TEST 3: HTin=69 exp_HTout=70 exp_VP=18293 obs_VP=18291 obs_HTout=70 OK
    TEST 4: HTin=69 exp_HTout=70 exp_VP=18293 obs_VP=18291 obs_HTout=70 OK
    TEST 5: HTin=69 exp_HTout=70 exp_VP=18293 obs_VP=18291 obs_HTout=70 OK
    TEST 6: HTin=69 exp_HTout=70 exp_VP=18293 obs_VP=18291 obs_HTout=70 OK
    TEST 7: HTin=69 exp_HTout=70 exp_VP=18293 obs_VP=18291 obs_HTout=70 OK
    TEST 8: HTin=69 exp_HTout=70 exp_VP=18293 obs_VP=18291 obs_HTout=70 OK
    TEST 9: HTin=69 exp_HTout=70 exp_VP=18293 obs_VP=18291 obs_HTout=70 OK
    TEST 10: HTin=69 exp_HTout=70 exp_VP=18293 obs_VP=18291 obs_HTout=70 OK
    TEST 11: HTin=69 exp_HTout=70 exp_VP=18293 obs_VP=18291 obs_HTout=70 OK
    TEST 12: HTin=69 exp_HTout=70 exp_VP=18293 obs_VP=18293 obs_HTout=70 OK
    TEST 13: HTin=69 exp_HTout=70 exp_VP=18293 obs_VP=18293 obs_HTout=70 OK
    TEST 14: HTin=70 exp_HTout=70 exp_VP=18293 obs_VP=18293 obs_HTout=70 OK
    B:\>

### 3.35. rapidcleartest.s

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

### 3.36. rapidcleartest.x

Tests rapid clearing of the graphics screen. Performs area testing and port testing simultaneously. Area testing verifies the correctness of the cleared VRAM range. Port testing verifies the correctness of changes in CRTC port bit 1. グラフィック画面の高速クリアをテストします。 エリアテストとポートテストを同時に行います。 エリアテストは VRAM のクリアされた範囲が正しいか調べます。 ポートテストは CRTC の動作ポート bit1 の変化が正しいか調べます。

When the synchronization frequency for LCD is selected, it will temporarily switch to the CRT setting. LCD 向けの同期周波数が選択されているとき一時的に CRT 向けに変更します。

    B:\>rapidcleartest.x
    rapidcleartest.x (2025-09-26)
      rapidcleartest.x mode(0-18,all) scroll(0-3,[all])
    B:\>rapidcleartest.x all
    testing in mode 0: 512x512/1024x1024 16-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 1: 512x480/1024x1024 16-color interlaced
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 2: 256x256/1024x1024 16-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 3: 256x240/1024x1024 16-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 4: 512x512/512x512 16-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 5: 512x480/512x512 16-color interlaced
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 6: 256x256/512x512 16-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 7: 256x240/512x512 16-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 8: 512x512/512x512 256-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 9: 512x480/512x512 256-color interlaced
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 10: 256x256/512x512 256-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 11: 256x240/512x512 256-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 12: 512x512/512x512 65536-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 13: 512x480/512x512 65536-color interlaced
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 14: 256x256/512x512 65536-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 15: 256x240/512x512 65536-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 16: 768x512/1024x1024 16-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 17: 1024x424/1024x1024 16-color progressive
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    testing in mode 18: 1024x848/1024x1024 16-color interlaced
    scroll to 0,0
    scroll to 1023,0
    scroll to 0,1023
    scroll to 1023,1023
    area test passed 100% (58720256/58720256)
    port test passed 100% (516/516)
    B:\>

### 3.37. smktest.s

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

### 3.38. smktest.x

The program simply displays "XEiJ meets ShiroMadoKun" on ShiroMadoKun. XEiJ has a built-in Shiromadokun emulator. 白窓君に「XEiJ meets ShiroMadoKun」と表示するだけのプログラムです。XEiJ は白窓君エミュレータを内蔵しています。

### 3.39. spr1016test.s

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

### 3.40. spr1016test.x

This is a test program to display 1016 sprites using only IOCS calls with sprdrv.x. Run it with the following settings. sprdrv.x を使って IOCS コールだけで 1016 枚のスプライトを表示するテストプログラムです。 以下の設定で実行してください。

- Number of sprites is 1016 スプライトの枚数は 1016
- 4096 patterns 4096 個のパターン
- Display sprites at 768x512 768x512 でスプライトを表示
- Number of sprites per raster is 1016 ラスタあたりのスプライトの枚数は 1016
- Resident sprdrv.x sprdrv.x を常駐させる

### 3.41. spr256test.s

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

### 3.42. spr256test.x

Test 256 sprites. Turn on the 256 sprites checkbox in the modification menu, change the number of sprites per raster spinner to 256, and then run the program. 256 枚のスプライトをテストします。 改造メニューの256 枚のスプライトチェックボックスを ON に、ラスタあたりのスプライトの枚数スピナーを 256 に変更してから実行します。

### 3.43. spr768x512.s

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

### 3.44. spr768x512.x

Test 256 sprites, 4096 patterns and sprites displayed in 768x512. 256 枚のスプライトと4096 個のパターンと768x512 でスプライトを表示をテストします。

Turn on the 256 sprites checkbox, the 4096 patterns checkbox, and the sprites displayed in 768x512 checkbox in the modification menu, and reset before executing. 改造メニューの256 枚のスプライトチェックボックスと4096 個のパターンチェックボックスと768x512 でスプライトを表示チェックボックスを ON にしてリセットしてから実行します。

Press any key to exit. 何かキーを押すと終了します。

It does not work on the actual X68000 machine. X68000 実機では動きません。

### 3.45. sprdrv.s

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

### 3.46. sprdrv.x

Enables XEiJ extensions to be used with sprite and background related IOCS calls. スプライト・バックグラウンド関連の IOCS コールで XEiJ の拡張機能を使用できるようにします。

    B:\>sprdrv -h
    拡張スプライト・バックグラウンドドライバ (2025-06-28)
      device = sprdrv.x <オプション>
        または
      A>sprdrv.x <オプション>
        -c    常駐確認
        -d    後始末なし
        -e    後始末あり
        -q    静粛
        -r    常駐解除
        -v    バージョン確認
    B:\>

### 3.47. vcntest.s

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

### 3.48. vcntest.x

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

Command コマンド

- TEST…Show the screen that consists of the specified parameters TEST… 設定された画面を表示します
- RESET…Return to the initial state RESET… 初期状態に戻します
- EXIT…Exit the program. ESC key and the right button of mouse are also available. EXIT… 終了します。ESC キーまたはマウスの右ボタンでも終了します

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

- SP PRW 0/1/2/3…Priority of the sprite screen (SpPr) SP PRW 0/1/2/3… スプライト画面の優先順位 (SpPr)
- TX PRW 0/1/2/3…Priority of the text screen (TxPr) TX PRW 0/1/2/3… テキスト画面の優先順位 (TxPr)
- GR PRW 0/1/2/3…Priority of the graphic screen (GrPr) GR PRW 0/1/2/3… グラフィック画面の優先順位 (GrPr)

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

- GR 1ST 0/1/2/3…4bit page number of the first graphic plane (G1st) GR 1ST 0/1/2/3…1 番目のグラフィックプレーンの 4bit ページ番号 (G1st)
- GR 2ND 0/1/2/3…4bit page number of the second graphic plane (G2nd) GR 2ND 0/1/2/3…2 番目のグラフィックプレーンの 4bit ページ番号 (G2nd)
- GR 3RD 0/1/2/3…4bit page number of the third graphic plane (G3rd) GR 3RD 0/1/2/3…3 番目のグラフィックプレーンの 4bit ページ番号 (G3rd)
- GR 4TH 0/1/2/3…4bit page number of the fourth graphic plane (G4th) GR 4TH 0/1/2/3…4 番目のグラフィックプレーンの 4bit ページ番号 (G4th)

Turn screens on and off 画面の ON/OFF

- SP OFF/ON…Turn the sprite screen on and off (SpOn) SP OFF/ON… スプライト画面の ON/OFF (SpOn)
- TX OFF/ON…Turn the text screen on and off (TxOn) TX OFF/ON… テキスト画面の ON/OFF (TxOn)
- 1ST OFF/ON…Turn the first graphic plane on and off (G1On) 1ST OFF/ON…1 番目のグラフィックプレーンの ON/OFF (G1On)
- 2ND OFF/ON…Turn the second graphic plane on and off (G2On) 2ND OFF/ON…2 番目のグラフィックプレーンの ON/OFF (G2On)
- 3RD OFF/ON…Turn the third graphic plane on and off (G3On) 3RD OFF/ON…3 番目のグラフィックプレーンの ON/OFF (G3On)
- 4TH OFF/ON…Turn the fourth graphic plane on and off (G4On) 4TH OFF/ON…4 番目のグラフィックプレーンの ON/OFF (G4On)
- 1024 OFF/ON…Turn the 1024 dot graphic screen on and off (GxOn) 1024 OFF/ON…1024 ドットのグラフィック画面の ON/OFF (GxOn)

Memory mode メモリモード

- 512 x 16 x 4…512 dots 16 colors 4 planes (GrMM=0) 512 x 16 x 4…512 ドット 16 色 4 プレーン (GrMM=0)
- 512 x 256 x 2…512 dots 256 colors 2 planes (GrMM=1) 512 x 256 x 2…512 ドット 256 色 2 プレーン (GrMM=1)
- 512 x 65536 x 1…512 dots 65536 colors 1 plane (GrMM=3) 512 x 65536 x 1…512 ドット 65536 色 1 プレーン (GrMM=3)
- 1024 x 16 x 1…1024 dots 16 colors 1 plane (GrMM=4) 1024 x 16 x 1…1024 ドット 16 色 1 プレーン (GrMM=4)

Zero translucence ゼロ半透明

- NORMAL…Normal (AHOn=0) NORMAL… ノーマル (AHOn=0)
- GR+TX 00…Blend the graphic color and the text color $00 (AHOn=1) (A) GR+TX 00… グラフィックカラーとテキストパレット $00 のカラーを混ぜる (AHOn=1) (A)

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

- NORMAL…Normal (ExOn=0) NORMAL… ノーマル (ExOn=0)
- SPECIAL PRIORITY…Special priority (ExOn=1,Half=0) (XW) SPECIAL PRIORITY… 特殊プライオリティ (ExOn=1,Half=0) (XW)
- TRANSLUCENT…Translucence (ExOn=1,Half=1) (XP) TRANSLUCENT… 半透明 (ExOn=1,Half=1) (XP)

Region designation 領域指定

- LSB OF COLOR CODE…The color code, a content of the pallet table, is an odd number (PLSB=0) (C) LSB OF COLOR CODE… カラー (パレットテーブルの内容) が奇数 (PLSB=0) (C)
- LSB OF PALET CODE…The pallet code, a content of the graphic VRAM, is an odd number (PLSB=1) (P) LSB OF PALET CODE… パレット (GVRAM の内容) が奇数 (PLSB=1) (P)

Translucence 半透明

- 1ST…Do not blend (GrGr=0,GrST=0) 1ST… 半透明なし (GrGr=0,GrST=0)
- 1ST+SP/TX…Blend the first graphic plane with the sprite and text screen behind (GrGr=0,GrST=1) (T) 1ST+SP/TX…1 番目と奥のスプライト・テキストを半透明 (GrGr=0,GrST=1) (T)
- 1ST+2ND…Blend the first graphic plane with the second graphic plane (GrGr=1,GrST=0) (G) 1ST+2ND…1 番目と 2 番目を半透明 (GrGr=1,GrST=0) (G)
- 1ST+2ND+SP/TX…Blend the first graphic plane with the second graphic plane, and blend it with the sprite and text screen behind (GrGr=1,GrST=1) (GT) 1ST+2ND+SP/TX…1 番目と 2 番目を半透明、さらに奥のスプライト・テキストを半透明 (GrGr=1,GrST=1) (GT)

Text pallet テキストのパレット

- TXT FILL 00/01…Text pallet TXT FILL 00/01… テキストのパレット

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

- SPR FILL 00/01/10/11/20/21/30/31…Pallet of sprites SPR FILL 00/01/10/11/20/21/30/31… スプライトのパレット
- SPR PRW 0/1/2/3…Priority of sprites SPR PRW 0/1/2/3… スプライトの優先順位

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

- BG0 FILL 00/01/10/11/20/21/30/31…Pallet of background plane 0 BG0 FILL 00/01/10/11/20/21/30/31… バックグラウンド 0 のパレット
- BG1 FILL 00/01/10/11/20/21/30/31…Pallet of background plane 1 BG1 FILL 00/01/10/11/20/21/30/31… バックグラウンド 1 のパレット

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

- TX 00 TRANSPARENT/BLACK+1/GRAY/SILVER/WHITE…Color of text pallet $00 TX 00 TRANSPARENT/BLACK+1/GRAY/SILVER/WHITE… テキストパレット $00 のカラー
- TX 01 TRANSPARENT/BLACK+1/ORANGE…Color of text pallet $01 TX 01 TRANSPARENT/BLACK+1/ORANGE… テキストパレット $01 のカラー

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

- SP 10 TRANSPARENT/PURPLE…Color of sprite pallet $10 SP 10 TRANSPARENT/PURPLE… スプライトパレット $10 のカラー
- SP 11 TRANSPARENT/FUCHSIA…Color of sprite pallet $11 SP 11 TRANSPARENT/FUCHSIA… スプライトパレット $11 のカラー
- SP 20 TRANSPARENT/TEAL…Color of sprite pallet $20 SP 20 TRANSPARENT/TEAL… スプライトパレット $20 のカラー
- SP 21 TRANSPARENT/AQUA…Color of sprite pallet $21 SP 21 TRANSPARENT/AQUA… スプライトパレット $21 のカラー
- SP 30 TRANSPARENT/OLIVE…Color of sprite pallet $30 SP 30 TRANSPARENT/OLIVE… スプライトパレット $30 のカラー
- SP 31 TRANSPARENT/YELLOW…Color of sprite pallet $31 SP 31 TRANSPARENT/YELLOW… スプライトパレット $31 のカラー

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

- BG0 OFF/ON…Turn background plane 0 on and off BG0 OFF/ON… バックグラウンド 0 の ON/OFF
- BG1 OFF/ON…Turn background plane 1 on and off BG1 OFF/ON… バックグラウンド 1 の ON/OFF

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

- GR0 FILL 0000/0001/0002/0003/0004/0005/0006/0007/0010/0011/2020/2121…Pallet of graphic plane 0 GR0 FILL 0000/0001/0002/0003/0004/0005/0006/0007/0010/0011/2020/2121… グラフィックプレーン 0 のパレット
- GR1 FILL 0000/0001/0002/0003/0004/0005/0006/0007/0010/0011…Pallet of graphic plane 1 GR1 FILL 0000/0001/0002/0003/0004/0005/0006/0007/0010/0011… グラフィックプレーン 1 のパレット
- GR2 FILL 0000/0001/0002/0003/0004/0005…Pallet of graphic plane 2 GR2 FILL 0000/0001/0002/0003/0004/0005… グラフィックプレーン 2 のパレット
- GR3 FILL 0000/0001/0002/0003/0004/0005…Pallet of graphic plane 3 GR3 FILL 0000/0001/0002/0003/0004/0005… グラフィックプレーン 3 のパレット

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

- GR 0000 TRANSPARENT/BLACK+1/WHITE/WHITE+1…Color of graphic pallet $0000 GR 0000 TRANSPARENT/BLACK+1/WHITE/WHITE+1… グラフィックパレット $0000 のカラー
- GR 0001 TRANSPARENT/BLACK+1/LIME/LIME+1…Color of graphic pallet $0001 GR 0001 TRANSPARENT/BLACK+1/LIME/LIME+1… グラフィックパレット $0001 のカラー
- GR 0002 RED/RED+1…Color of graphic pallet $0002 GR 0002 RED/RED+1… グラフィックパレット $0002 のカラー
- GR 0003 BLUE/BLUE+1…Color of graphic pallet $0003 GR 0003 BLUE/BLUE+1… グラフィックパレット $0003 のカラー
- GR 0004 FUCHSIA/FUCHSIA+1…Color of graphic pallet $0004 GR 0004 FUCHSIA/FUCHSIA+1… グラフィックパレット $0004 のカラー
- GR 0005 AQUA/AQUA+1…Color of graphic pallet $0005 GR 0005 AQUA/AQUA+1… グラフィックパレット $0005 のカラー
- GR 0006 YELLOW/YELLOW+1…Color of graphic pallet $0006 GR 0006 YELLOW/YELLOW+1… グラフィックパレット $0006 のカラー
- GR 0007 PURPLE/PURPLE+1…Color of graphic pallet $0007 GR 0007 PURPLE/PURPLE+1… グラフィックパレット $0007 のカラー
- GR 0010 TEAL/TEAL+1…Color of graphic pallet $0010 GR 0010 TEAL/TEAL+1… グラフィックパレット $0010 のカラー
- GR 0011 OLIVE/OLIVE+1…Color of graphic pallet $0011 GR 0011 OLIVE/OLIVE+1… グラフィックパレット $0011 のカラー
- GR 2020 TRANSPARENT/BLACK+1…Color of graphic pallet $2020 GR 2020 TRANSPARENT/BLACK+1… グラフィックパレット $2020 のカラー
- GR 2121 WHITE/WHITE+1…Color of graphic pallet $2121 GR 2121 WHITE/WHITE+1… グラフィックパレット $2121 のカラー

### 3.49. vcntest2.s

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

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

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.51. zkeytest.s

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

### 3.52. zkeytest.x

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

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

### 4.1. 060tsys/*

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

### 4.2. 38400bps.s

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

### 4.3. 38400bps.x

Run with RSDRV.SYS 2.02 installed. The built-in RS-232C port of X680x0 will be set as follows. RSDRV.SYS 2.02 が組み込まれている状態で実行してください。X680x0 の内蔵 RS-232C ポートが以下の設定になります。

Baud rate ボーレート | 38400bps (Theoretical value is 理論値は 39062.5bps)
Data length データ長 | 8 bits 8 ビット
Parity パリティ | None なし
Stop ストップ | 1 bits 1 ビット
Flow control フロー制御 | RTS

### 4.4. 51200bps.s

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

### 4.5. 51200bps.x

Run with RSDRV.SYS 2.02 installed. The built-in RS-232C port of X680x0 will be set as follows. RSDRV.SYS 2.02 が組み込まれている状態で実行してください。X680x0 の内蔵 RS-232C ポートが以下の設定になります。

Baud rate ボーレート | 51200bps (Theoretical value is 理論値は 52083.3bps)
Data length データ長 | 8 bits 8 ビット
Parity パリティ | None なし
Stop ストップ | 1 bits 1 ビット
Flow control フロー制御 | RTS

When the target USB-RS232C converter supports 50000bps, it may be possible to connect with an error margin of 4%. 相手の USB-RS232C 変換器が 50000bps に対応しているとき、誤差 4% で接続できることがあります。

### 4.6. crtmodfnc.s

The source code of crtmod.fnc. crtmod.fncのソースコードです。

### 4.7. crtmod.fnc

crtmod.fnc is an external function file for X-BASIC 2.02. Copy crtmod.fnc to the same directory as basic.x, add one line of func=crtmod to basic.cnf, and use it. When combined with IPLROM 1.6 or crtmod16.x, additional screen modes such as 384x256 dots and the extended graphic screen can be easily used with X-BASIC. In screen modes that use the extended graphic screen, conventional drawing functions can be used without modification. crtmod.fnc は X-BASIC 2.02 用の外部関数ファイルです。crtmod.fnc を basic.x と同じディレクトリにコピーし、basic.cnf に func=crtmod の 1 行を加えて、使います。IPLROM 1.6 または crtmod16.x と組み合わせることで、384x256 ドットなどの追加された画面モードや、拡張グラフィック画面を、X-BASIC で手軽に使えるようになります。 拡張グラフィック画面を使う画面モードでは従来の描画関数がそのまま使えます。

crtmod(mode,gon) sets the screen mode. mode is the screen mode and gon is whether to display a graphic screen. For those who have set the screen mode in C or assembly language, it is easy to understand that mode is an argument of CRTMOD and gon is whether to call G_CLR_ON or not. However, as an external function of X-BASIC, it is not enough to call CRTMOD and G_CLR_ON. When the screen size is changed, the size of X-BASIC's own text screen buffer must also be changed, so the work area inside X-BASIC is rewritten after calling CRTMOD and G_CLR_ON. crtmod(mode,gon) は画面モードを設定します。mode は画面モード、gon はグラフィック画面を表示するかどうかです。C 言語やアセンブリ言語で画面モードを設定したことがある人には mode は CRTMOD の引数で gon は G_CLR_ON を呼ぶかどうかだと言えば分かりやすいでしょう。 と言っても、X-BASIC の外部関数としては、CRTMOD と G_CLR_ON を呼ぶだけでは成り立ちません。 画面の大きさが変わるとき X-BASIC 自身が持つテキスト画面バッファの大きさも変える必要があるので、CRTMOD と G_CLR_ON を呼んだ後に X-BASIC の内部にあるワークエリアを書き換えています。

### 4.8. crtmod16.s

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

### 4.9. crtmod16.x

crtmod16.x is a resident program of CRTMOD and G_CLR_ON included in IPLROM 1.6. crtmod16.x は IPLROM 1.6 に含まれる CRTMOD と G_CLR_ON を常駐プログラムにしたものです。

    B:\>crtmod16
    crtmod16.x (2025-06-29)

    説明
      crtmod16.xはIPLROM 1.6に含まれるCRTMOD/G_CLR_ONを常駐プログラムにしたものです。
      一般的な液晶モニタで768x512ドットの画面をはみ出さないように表示できます。
      384x256ドット、512x512ドット(正方形)などの画面モードが追加されます。

    補足
      IPLROM 1.0～1.3にあったグラフィックパレットに関するバグが修正されます。
      バグに依存しているソフトウェアが誤動作する場合はcrtmrb16.xを組み込んでください。

    オプション
      -e         常駐します。
      -l 0～1    0でCRT向けの同期周波数、1でLCD向けの同期周波数を選択します。
      -m 0～73   画面モードを選択します。crtmodtest.xの説明を参照してください。
      -r         常駐を解除します。

    B:\>crtmod16 -e -m16
    crtmod16.x (2025-06-29)
    常駐しました
    B:\>db
    X68k Debugger version 3.00 Copyright 1987-1993 SHARP/Hudson
    Micro Processor Unit:16bit MC68000
    Floating Point Co Processor:Softwere emulation.
    -d e82000
    00E82000  0000 5294 0020 003E 0400 07C0 0420 07FE           ..R[94]. .>...ﾀ. ..
    00E82010  8000 F800 8020 F83E 8400 FFC0 AD6A FFFE           [80]...[80] .>[84]..ﾀｭj..
    00E82020  0000 0000 0000 0000 0000 0000 0000 0000           ................
    00E82030  0000 0000 0000 0000 0000 0000 0000 0000           ................
    00E82040  0000 0000 0000 0000 0000 0000 0000 0000           ................
    00E82050  0000 0000 0000 0000 0000 0000 0000 0000           ................
    00E82060  0000 0000 0000 0000 0000 0000 0000 0000           ................
    00E82070  0000 0000 0000 0000 0000 0000 0000 0000           ................
    -q
    B:\>crtmod16 -r
    解除しました
    B:\>

### 4.10. crtmrb16.x

crtmrb16.x is a modification of crtmod16.x to reproduce the IPLROM 1.0 to 1.3 bug. crtmrb16.x は crtmod16.x に IPLROM 1.0～1.3 のバグを再現させる改造を施したものです。

IPLROM 1.0 to 1.3 has a bug in which IOCS _CRTMOD initializes the graphics palette with a different number of colors than the specified screen mode. Specifically, IOCS _CRTMOD ignores the number of colors specified by the screen mode specified in the _CRTMOD argument and initializes the graphics palette as 16 colors for 256x256, 256 colors for 512x512, and 65536 colors for 768x512, which is a nonsense behavior. If you call _G_CLR_ON after _CRTMOD according to the manner in which the graphics screen is displayed, there is no problem because _G_CLR_ON will re-initialize the graphics palette with the correct number of colors. If you display the graphics screen without calling _G_CLR_ON after _CRTMOD, the bug in _CRTMOD will be exposed. IPLROM 1.0～1.3 には、IOCS _CRTMOD がグラフィックパレットを指定された画面モードと異なる色数で初期化するというバグがあります。 具体的には、_CRTMOD の引数で指定された画面モードで定められた色数を無視して、256x256 は 16 色、512x512 は 256 色、768x512 は 65536 色とみなしてグラフィックパレットを初期化するという、ナンセンスな動きをします。 グラフィック画面を表示するときの作法に従って _CRTMOD の後に _G_CLR_ON を呼び出せば、_G_CLR_ON が正しい色数でグラフィックパレットを初期化し直すので問題ありません。_CRTMOD の後に _G_CLR_ON を呼び出さずにグラフィック画面を表示すると、_CRTMOD のバグが露見します。

Trouble is, it seems that some software is painting over the bug by initializing the graphics palette in a way that depends on this bug. Such software appears to work correctly with IPLROM 1.0 to 1.3, but when run under IPLROM 1.6/crtmod16.x, where the bug has been fixed, the bug is exposed and the display is corrupted. If you have software whose graphics palette is not correct only with IPLROM 1.6, you may be able to get the expected display by running it after "crtmrb16.x -e -m16". 困ったことに、一部のソフトウェアがこのバグに依存した方法でグラフィックパレットを初期化するというバグの上塗りをしているようです。そのようなソフトウェアは IPLROM 1.0～1.3 では正しく動作しているように見えますが、バグが修正された IPLROM 1.6/crtmod16.x の環境で動かすとバグの上塗りが露見して表示が乱れます。IPLROM 1.6 のときだけグラフィックパレットがおかしくなるソフトウェアがあるとき、「crtmrb16.x -e -m16」としてから動かすと期待通りの表示になるかも知れません。

When a bug is fixed and another bug is found that hides it, the correct course of action is not to restore the fixed bug, but to fix the newly found bug. Do not use crtmrb16.x on a regular basis, as it is intended to temporarily restore a bug that has been fixed when it is not possible to fix the newly found bug. あるバグを修正したらそれを隠していた別のバグが見つかったときの正しい対処方法は、修正したバグを復元することではなく、新たに見つかったバグを修正することです。crtmrb16.x は、新たに見つかったバグを修正できない場合に、一時的に、修正したバグを復元するためのものなので、常用しないでください。

    B:\>crtmrb16 -e -m16
    crtmrb16.x (2025-06-29)
    常駐しました
    B:\>db
    X68k Debugger version 3.00 Copyright 1987-1993 SHARP/Hudson
    Micro Processor Unit:16bit MC68000
    Floating Point Co Processor:Softwere emulation.
    -d e82000
    00E82000  0001 0001 0203 0203 0405 0405 0607 0607           ................
    00E82010  0809 0809 0A0B 0A0B 0C0D 0C0D 0E0F 0E0F           ................
    00E82020  1011 1011 1213 1213 1415 1415 1617 1617           ................
    00E82030  1819 1819 1A1B 1A1B 1C1D 1C1D 1E1F 1E1F           ................
    00E82040  2021 2021 2223 2223 2425 2425 2627 2627            ! !"#"#$%$%&'&'
    00E82050  2829 2829 2A2B 2A2B 2C2D 2C2D 2E2F 2E2F           ()()*+*+,-,-././
    00E82060  3031 3031 3233 3233 3435 3435 3637 3637           0101232345456767
    00E82070  3839 3839 3A3B 3A3B 3C3D 3C3D 3E3F 3E3F           8989:;:;<=<=>?>?
    -q
    B:\>crtmrb16 -r
    解除しました
    B:\>

### 4.11. db350.bfd

db350.bfd is a binary diff file to make db350.x from DB.X. Run bup db350.bfd in the directory where you put DB.X 3.00 to make db350.x. db350.bfd は DB.X 3.00 から db350.x を作るバイナリ差分ファイルです。DB.X 3.00 を置いたディレクトリで bup db350.bfd を実行すると db350.x ができます。

bup.x can be found here. bup.x はこちらにあります。

db350.x is a byproduct of ROM Debugger 3.60, a sort of child between DB.X 3.00 and ROM Debugger 3.60. db350.x は ROM デバッガ 3.60 の副産物で、DB.X 3.00 と ROM デバッガ 3.60 の間の子のようなものです。

ROM debugger 2.32 and DB.X 3.00/3.02 defects listed here have been largely fixed in db350.x and ROM Debugger 3.60. こちらに記載されている ROM デバッガ 2.32 と DB.X 3.00/3.02 の不具合は db350.x と ROM デバッガ 3.60 では概ね修正されています。

### 4.12. isHFS.s

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

### 4.13. isHFS.x

Checks if the current drive or the specified drive is HFS. カレントドライブまたは指定されたドライブが HFS か調べます。

    B:\>isHFS.x
    ドライブB:はHFSです
    B:\>isHFS.x d:
    ドライブD:はHFSではありません
    B:\>isHFS.x -h
    isHFS.x
      ドライブがHFSか調べます
      使用法: isHFS [ドライブ名]
      終了コード: 0=HFSではない 1=HFS

### 4.14. isXEiJ.s

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

### 4.15. isXEiJ.x

Check if it is running on XEiJ. XEiJ 上で動作しているか調べます。

    B:\>isXEiJ.x
    XEiJです
    B:\>isXEiJ -h
    isXEiJ.x
      XEiJか調べます
      使用法: isXEiJ
      終了コード: 0=XEiJではない 1=XEiJ

### 4.16. ppcon.s

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

### 4.17. 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.11

    オプション
      -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.18. set232c.s

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

### 4.19. set232c.x

Change the current or startup RS-232C settings. 現在または起動時の RS-232C の設定を変更します。

    B:\>set232c.x -h
    set232c.x (2024-05-04)
    Change current or startup RS-232C settings
        -5      Display baud rate at 5 MHz (default)
        -7      Display baud rate at 7.3728 MHz
        -c      Change current RS-232C settings as in SPEED.X (default)
        -i      Use initial setting value $4E07 9600 b8 pn s1 xon
        -q      Do not display settings
        -s      Change startup RS-232C settings as in SWITCH.X
        $xxxx   Specify setting value by 4-digit hexadecimal number
      Baud rate at 5 MHz
        75
        150
        300
        600
        1200
        2400
        4800
        9600
        19200
        38400
        76800
      Baud rate at 7.3728 MHz
        112.5
        225
        450
        900
        1800
        3600
        7200
        14400
        28800
        57600
        115200
      Data
        b5      5-bit
        b6      6-bit
        b7      7-bit
        b7s     7-bit with SI/SO
        b8      8-bit
      Parity
        pn      Non-parity
        po      Odd parity
        pe      Even parity
      Stop bit
        s1      Stop 1-bit
        s1.5    Stop 1.5-bit
        s2      Stop 2-bit
      Flow control
        none    No flow control
        xon     XON/XOFF flow control
        rts     RTS/CTS flow control
    B:\>set232c.x 38400
    Current RS-232C settings at 5 MHz are: $4C89 38400 b8 pn s1 rts
    B:\>

### 4.20. stupsnd.s

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

### 4.21. stupsnd.x

Turn on/off startup sound switch of X68030 or higher and IPLROM 1.6. X68030 以上と IPLROM 1.6 の起動音のスイッチを on/off します。

    B:\>stupsnd.x -?
    stupsnd.x (2024-03-04)
      turn on/off startup sound switch of X68030 or higher and IPLROM 1.6
    options
      off
        turn off startup sound switch
      on
        turn on startup sound switch with key code 76 (o5c)
      2..127
      $02..$7F
      o5c etc.
        turn on startup sound switch with specified key code
      play
        play startup sound right now
        FM sound driver must be removed
    tone parameters
      kc,kf,tm,va[0],...,va[54]
        specify tone parameters
        kc -- key code
        kf -- key fraction
        tm -- time from key-on to key-off (unit is 1/10,000 of a second)
        va -- tone parameters common to OPMDRV.X
      save
        save register data to stupsnd.dat
        to reflect in the startup sound, inserting data into IPLROM 1.6 is required
    B:\>

### 4.22. vperiod.s

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

### 4.23. vperiod.x

Measure the vertical period (vertical synchronous signal period). 垂直周期 (垂直同期信号の周期) を計測します。

    B:\>vperiod.x
    vperiod.x (2024-02-17)
    obs_VP=18031
    B:\>

STUDIO KAMADA
Copyright © 1999-2026 Makoto Kamada