目次

  1. アドレス変換キャッシュモニタ
  2. エクスクルーシブマウスモード
  3. FE ファンクション命令
    1. 例: X-BASIC を使って atan(x) を 0 から 1 まで長方形近似で数値積分する
  4. FC2 ピン
  5. 縁部加速
  6. 音声モニタ
  7. 拡張グラフィックス画面
  8. 逆アセンブルリスト
  9. 原発振周波数
  10. 三倍精度浮動小数点数
    1. 例: 円周率 π = 3.141592653589793238462643383... の内部表現を見る
  11. CD-ROM
  12. シームレスマウスモード
    1. シームレスマウスモードの作り方
    2. Macbook のマルチタッチトラックパッドでクリックする方法
  13. 周波数固定モード
  14. Java 言語
  15. SCSI ROM
  16. スプライトパターンビュア
  17. データブレークポイント
    1. データブレークポイントの仕組み
  18. デバッグコンソール
  19. ハイメモリ
  20. 貼り付け
  21. 表示モードテスト
    1. パターンテスト
  22. フォントエディタ
  23. 負荷率固定モード
  24. 浮動小数点プロセッサボード
  25. 物理空間モニタ
  26. 分岐ログ
  27. プリンタ
  28. プログラムフロービジュアライザ
  29. ホストファイルシステム
  30. マザーボードコプロセッサ
  31. 命令ブレークポイント
  32. メモリダンプリスト
  33. ラスタブレークポイント
  34. ルートポインタリスト
  35. レジスタウインドウ
  36. ローカルメモリ
  37. 論理空間モニタ

1. アドレス変換キャッシュモニタ (あどれすへんかんきゃっしゅもにた)

atcmonitor.pngMMU のアドレス変換キャッシュの内容を表示します。XEiJ の MMU のアドレス変換キャッシュは独自仕様です。

2. エクスクルーシブマウスモード (えくすくるぅしぶまうすもぉど)

エクスクルーシブマウスモードは XEiJ がホストマシンのマウスカーソルを占有するモードです。他の X68000 エミュレータでは単にマウスモードと呼ばれることがあります。IOCS を経由しない独自のマウスドライバを使用するソフトウェアも操作できますが、マウスカーソルを占有してしまうのでホストマシンの他のアプリケーションと併用しにくい (行き来する度にいちいちマウスモードを切り替えなければならない) という欠点があります。

エクスクルーシブマウスモードはコマンドラインから起動したときだけ使えます。シームレスマウスモード のとき F12 キーを押すかホイール (中ボタン、2 ボタンマウスのときは Alt (option) を押しながら右ボタン) をクリックするとエクスクルーシブマウスモードに切り替わります。

3. FE ファンクション命令 (えふいぃふぁんくしょんめいれい)

FE ファンクションコールは Human68k の環境で浮動小数点演算や数値と文字列の変換を行うサービスコールです。通常は FLOAT2.X、FLOAT3.X、FLOAT4.X のいずれかを用いてシステムに登録し、DOS コールの $FFxx と同様に $FExx という形の未実装命令コードを配置することで F ライン例外を経由して呼び出します。X-BASIC や C 言語で書かれたプログラムで使われています。

XEiJ の MPU は $FExx という命令コードを「F ライン例外を発生させる未実装命令」ではなく「浮動小数点演算を行う実装済みの FE ファンクション命令」として処理することができます。FE ファンクションコールで発生する例外処理のオーバーヘッドがなくなり、浮動小数点演算も Java の演算子や API を用いて計算するので高速です。X-BASIC や浮動小数点演算を多用するソフトウェアの動作が軽くなり、さらに FLOATn.X を組み込まないことで DOS コールのオーバーヘッドも減らせます。

純正の FLOATn.X に実装されていない FE ファンクションコールおよび FE ファンクションコールの処理ルーチンを変更する __FEVECS を呼び出したときは従来通り F ライン例外が発生します。FLOATn.X を併用することで、空いている未実装命令コードに FE ファンクションコールを追加することはできますが、実装済みの FE ファンクション命令の処理を __FEVECS で差し替えることはできません。

3.1. 例 : X-BASIC を使って atan(x) を 0 から 1 まで長方形近似で数値積分する

list
   10 int n=100000,k,t
   20 float a=0#,b=1#,d,s
   30 t=time():d=(b-a)/n:a=a-d*0.5#:s=0#:for k=1 to n:s=s+atan(a+d*k):next:s=d*s:t=time()-t
   40 print s,t;"sec"
   50 end
   60 func time()
   70   str c$,d$,s$,t$
   80   int y,m,d
   90   d$=date$:t$=time$
  100   repeat
  110     c$=d$:s$=t$
  120     d$=date$:t$=time$
  130   until c$=d$ and s$=t$
  140   y=((atoi(left$(d$,2))+50) mod 100)+1950:m=atoi(mid$(d$,4,2)):d=atoi(right$(d$,2))
  150   if m<3 then { y=y-1:m=m+12 }
  160   c=floor(365.25#*y)+floor(30.59#*(m-2))+d-719501
  170   if -141417<=c then c=c+floor(y/400)-floor(y/100)+2
  180   return(c*86400+(atoi(left$(t$,2))-9)*3600+atoi(mid$(t$,4,2))*60+atoi(right$(t$,2)))
  190 endfunc
  200 func floor(x;float)
  210   int y
  220   y=fix(x):if x<y then y=y-1
  230   return(y)
  240 endfunc
Ok

X68000 Hybrid 負荷率 50% (約 200MHz)、FE ファンクション命令 OFF (FLOAT2.X) で実行したとき

run
 0.43882457311956        18 sec
Ok

X68000 Hybrid 負荷率 50% (約 200MHz)、FE ファンクション命令 ON で実行したとき

run
 0.43882457311956        12 sec
Ok

π /4-log(2)/2 = 0.4388245731174756549…

4. FC2 ピン (えふしぃつぅぴん)

060turbo モードのとき FC2 ピンをカットできます。NetBSD/x68k で X Window System が動きます。

5. 縁部加速 (えんぶかそく)

シームレスマウスモード でマウスカーソルが画面の端にあるとき、マウスカーソルが画面の外方向に動いているように見えるデータを作ります。SX-WINDOW の実画面モードでマウスカーソルを画面の端に押し付けて画面をスクロールさせることができます。

6. 音声モニタ (おんせいもにた)

soundmonitor.pngXEiJ の音声モニタには、波形、周波数分布 (スペクトラムアナライザ)、鍵盤、音色データおよび ADPCM の状態が表示されます。

波形は OPM と ADPCM の合成前の波形です。左クリックまたは右クリックで時間方向を拡大縮小、Shift キーを押しながら左クリックまたは右クリックで振幅方向を拡大縮小できます。波形の狙ったところを拡大縮小させたいときは右下のボタンで更新を停止させてから行います。

スペクトラムアナライザ (FFT アナライザ) は低音域の分解能と高音域の反応速度を両立させるために周波数の範囲を 5 分割しています。また、どこが何 Hz か数字で書く代わりに周波数を下の鍵盤に合わせてあり、単純な音色ならば白鍵でも黒鍵でも鍵の中央の真上に輝線が現れます。

鍵盤はキーオンとリリースの様子を示しています。平均律で KC (KEY CODE) と KF (KEY FRACTION) を合わせた周波数に近い鍵が反応します。

音色データは YM2151 のレジスタの内容を MML の音色定義データのフォーマットに変換したものです。レジスタの内容をそのまま表示するよりも読みやすいかも知れません。MML の音色定義データにはある瞬間の YM2151 のレジスタの内容だけでは復元できない項目もあるので、表示されたデータをそのまま用いても同じ音が出るとは限りません。

ADPCM の状態は、原発振周波数 (4MHz | 8MHz | 16MHz)、分周比 (1/1024 | 1/768 | 1/512)、サンプリング周波数 (3.9kHz | 5.2kHz | 7.8kHz | 10.4kHz | 15.6kHz | 20.8kHz | 31.3kHz)、再生中 (PLAY)、データあり (DATA)、左側出力 (LEFT)、右側出力 (RIGHT) が表示されます。

7. 拡張グラフィックス画面 (かくちょうぐらふぃっくすがめん)

拡張グラフィックス画面を ON にすると実画面サイズが 1024×1024 ドットで色数が 256 色または 65536 色のグラフィックス画面が使えるようになります。

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

8. 逆アセンブルリスト (ぎゃくあせんぶるりすと)

逆アセンブルリストや 分岐ログ で使用されているのは普通の命令単位の逆アセンブラですが、無条件分岐命令の直後などの区切りの位置にいくつかの情報が表示されます。例外ベクタが指しているアドレスにはその例外の種類が、また、Human68k が読み込まれているときはデバイス名または実行ファイル名とその先頭からのオフセットが表示されます。HAS.XHAS060.X で -p を指定して作成したアセンブルリストや dis.x で作成した逆アセンブルリストと容易に照合できるので、デバッグしたい場所に先回りしてブレークポイントを仕掛けるといった作業がやりやすいと思います。

9. 原発振周波数 (げんはっしんしゅうはすう)

ここで言う原発振周波数とは ADPCM 音源のサンプリング周波数の元となるオシレータ (水晶振動子) の発振周波数のことです。X68000 の ADPCM 音源は原発振周波数を 8MHz と 4MHz から、分周比を 1/1024、1/768、1/512 からそれぞれ選択できるので、サンプリング周波数は 3.9kHz、5.2kHz、7.8kHz、10.4kHz、15.6kHz の 5 種類となっています。

Oh!X 1994 年 8 月号の「ローテク工作実験室 第 4 回 内蔵 AD PCM 高音質化計画」(瀧康史さん) で 4MHz のオシレータを 16MHz のものに換装する方法が紹介されており、XEiJ はこの方法で ADPCM 音源を改造できます。改造後のサンプリング周波数は 7.8kHz、10.4kHz、15.6kHz、20.8kHz、31.3kHz の 5 種類になり、PCM8A.X に -M1 -F2 というスイッチを指定して常駐させることで PCM データがサンプリング周波数 31.3kHz で再生されるようになります。

現在の原発振周波数、分周比およびサンプリング周波数は 音声モニタ で確認することができます。

分周比
1/10241/7681/512
原発振周波数4MHz3.9kHz5.2kHz7.8kHz
8MHz7.8kHz10.4kHz15.6kHz
16MHz15.6kHz20.8kHz31.3kHz

10. 三倍精度浮動小数点数 (さんばいせいどふどうしょうすうてんすう)

XEiJ は X68030 および 060turbo モードのとき浮動小数点演算を MC68882 よりも高い精度で行い、その引数や結果を MC68882 の拡張精度 (80 ビット) よりも 16 ビット多い三倍精度 (96 ビット) で読み書きすることができます。MC68882 は拡張精度浮動小数点数を 16 ビットの予約領域を挟んで 96 ビットを消費する形でメモリに書き込みますが、XEiJ はその予約領域に三倍精度浮動小数点数の仮数部の末尾の 16 ビットを格納します。予約領域が $0000 になっていないのでバイナリデータを他所の環境で利用する場合は注意してください。

10.1. 例 : 円周率 π = 3.141592653589793238462643383... の内部表現を見る

-l200000 20000d
  00200000      fmovecr.x       #$00,FP0
  00200004      fmove.x FP0,$00200010
  0020000C      _EXIT

拡張精度のとき。0xc90fdaa22168c235/262 = 3.1415926535897932385128... (19 桁)

-g=200000
program terminated normally
-d200010 20001b
00200010  4000 0000 C90F DAA2 2168 C235                     @...ノ.レ「!hツ5

三倍精度のとき。0xc90fdaa22168c234c4c6/278 = 3.141592653589793238462642109... (24 桁)

-g=200000
program terminated normally
-d200010 20001b
00200010  4000 C4C6 C90F DAA2 2168 C234                     @.トニノ.レ「!hツ4

11. CD-ROM (しぃでぃぃろむ)

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

12. シームレスマウスモード (しぃむれすまうすもぉど)

シームレスマウスモードは XEiJ のデフォルトのマウスモードです。ホストマシンのマウスカーソルが X68000 の画面に差し掛かった瞬間に X68000 のマウスカーソルに化け、X68000 の画面から出た瞬間にホストマシンのマウスカーソルに戻ります。ホストマシンのマウスカーソルは X68000 のマウスカーソルに化けている間だけ X68000 の IOCS または SX-WINDOW の マウスカーソルとして振る舞います。X68000 用のマウスを使うソフトウェアをマウスカーソルを占有せずにホストマシンのアプリケーションに近い感覚で操作することができます。シームレスマウスモードの効果は じょんぐ を見ていただくとわかりやすいと思います。電脳倶楽部 の DSHELL もらくらく操作できます。SX-WINDOW (FSX.X version 3.10) の場合は 縁部加速 を ON にすると実画面モードもシームレスのまま操作できます。

エクスクルーシブマウスモード のとき F12 キーを押すかホイール (中ボタン、2 ボタンマウスのときは Alt (option) を押しながら右ボタン) をクリックするとシームレスマウスモードに戻ります。なお、エクスクルーシブマウスモードは XEiJ がフォーカスを持っていることが前提なので、Windows のときは Windows キー (なければ Ctrl+Esc キー) を押してスタートメニューを出すと XEiJ からフォーカスが奪われて強制的にシームレスマウスモードに戻すことができます。

12.1. シームレスマウスモードの作り方

X68000 のマウスカーソルとホストマシンのマウスカーソルの相対位置を元に逆アクセラレーション計算を行ってマウスデータを作り、X68000 のマウスカーソルをホストマシンのマウスカーソルの真下に貼り付けます。さらに、X68000 のマウスカーソルが表示されていてホストマシンのマウスカーソルが X68000 の画面の上にある間だけホストマシンのマウスカーソルを透明にします。これでホストマシンのマウスカーソルが X68000 の画面の上にある間だけ X68000 のマウスカーソルに化けたように見えます。マウスカーソルの座標とアクセラレーションの計算式が分かれば IOCS でなくても、あるいは X68000 のエミュレータでなくても、同じことができると思います。

12.2. Macbook のマルチタッチトラックパッドでクリックする方法

左クリック…「リンゴ」→「システム環境設定」→「トラックパッド」の「タップでクリック」を ON にしておいて、1 本指でタップします。

右クリック…「リンゴ」→「システム環境設定」→「トラックパッド」の「副ボタンのクリック」を ON にして「2 本指でクリックまたはタップ」を選択しておいて、2 本指でタップします。

13. 周波数固定モード (しゅうはすうこていもぉど)

MPU の動作周波数を 1MHz から 1MHz 刻みで 1000MHz まで設定できます。音声出力が ON のときは負荷率 90%、音声出力が OFF のときは負荷率 100% を上限としてそれ以上動作周波数が上がらないようになっています。

14. Java 言語 (じゃばげんご)

XEiJ は Java 言語で記述されています。最新の Java SE 実行環境があれば OS に関係なく動作し、コマンドライン、Java アプレット、Java Web Start のいずれでも起動できます。

15. SCSI ROM (すかじろむ)

XEiJ はリソースから読み込んだ IPLROM30.DAT を使って内蔵 SCSI ROM ($00FC0000~$00FC1FFF、8KB) と拡張 SCSI ROM ($00EA0000~$00EA1FFF、8KB) を自動生成します。SCSIEXROM.DAT と SCSIINROM.DAT は不要です。

16. スプライトパターンビュア (すぷらいとぱたぁんびゅあ)

定義されているスプライトパターンをすべて表示します。

17. データブレークポイント (でぇたぶれぇくぽいんと)

特定の物理アドレスで特定の範囲のデータの読み書きを行った命令の直後でコアを停止させます。「プログラムの誤動作の直接的な原因がコードやデータが破壊されているためであることは分かったけれど、いつ誰が壊したのか分からない」というときにデータブレークポイントが威力を発揮します。データブレークポイントを使えばコードやデータを破壊した命令を直接捉えることができます。その命令が正しく記述されたものではなく暴走していると思われる場合は 分岐ログ を使って 逆アセンブルリスト で近くにデバイス名または実行ファイル名が表示されるところまで遡ります。別の場所からコピーされたデータが壊れていたときはコピー元にデータブレークポイントを仕掛けます。効率よく問題の大元を見つけることができるでしょう。

17.1. データブレークポイントの仕組み

XEiJ のメモリマップはメモリマップトデバイスの配列です。データブレークポイントが設定されたページには間接メモリマップトデバイスであるデータブレークポイントデバイスが割り当てられ、データブレークポイントデバイスが元のメモリマップトデバイスを呼び出して停止条件が成立していたらコアを止めます。この方法の利点は軽量であることです。データブレークポイントを 1 個設定しただけですべてのバスアクセスの監視が始まったのでは全体のパフォーマンスが大幅に低下してしまいますが、この方法ならばデータブレークポイントを何百個設定しようと設定されていないページのオーバーヘッドは常にゼロです。欠点はアラインメントの合っていないアクセスは分割されていて直接検出できないことと、マルチタスク環境の RAM 上のコードやデータは物理アドレスが固定されていないので監視できないことです。

18. デバッグコンソール (でばっぐこんそぉる)

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

[ h で使用法を表示]
> h
  コマンド
        d<サイズ> <開始アドレス>,<終了アドレス¹>        ダンプ
        f<サイズ> <開始アドレス>,<終了アドレス¹>,<データ>,…    フィル
        g <開始アドレス>        実行
        h                       ヘルプ
        i                       停止
        l <開始アドレス>,<終了アドレス¹>        逆アセンブル
        p <式>,…               計算結果表示
        r                       ステップアンティルリターン
        s <回数>                ステップ
        t <回数>                トレース
        x                       レジスタ一覧
        xf                      浮動小数点レジスタ一覧
        <式>                    計算
        <コマンド>;…           逐次実行
    ¹終了アドレスは範囲に含まれる
-- more -- [y/n] y
  サイズ
        b                       バイト (8bit)
        w                       ワード (16bit)
        l                       ロング (32bit)
        q                       クワッド (64bit)
        s                       シングル (32bit)
        d                       ダブル (64bit)
        x                       エクステンデッド (80bit)
        t                       トリプル (96bit)
        p                       パックトデシマル (96bit)
-- more -- [y/n] y
  浮動小数点数
        1.0e+2                  10進数
        0b1.1001p+6             2進数
        0o1.44p+6               8進数
        0x1.9p+6 $64            16進数
        Infinity NaN            無限大,非数
    数学定数
        Apery Catalan E Eular Pi
    文字コード
        'A'
  文字列
        "ABC"
-- more -- [y/n] y
  レジスタ
    汎用レジスタ
        d0 … d7 r0 … r7       データレジスタ
        a0 … a7 r8 … r15 sp   アドレスレジスタ
        fp0 … fp7              浮動小数点レジスタ
    制御レジスタ
        pc sr ccr sfc dfc cacr tc itt0 itt1 dtt0 dtt1 buscr
        usp vbr caar ssp msp isp urp srp pcr fpiar fpsr fpcr
  変数
        foo                     浮動小数点変数
        foo$                    文字列変数
-- more -- [y/n] y
  アドレス
        <アドレス>              現在のアドレス空間
        <物理アドレス>@0        物理アドレス空間
        <論理アドレス>@1        ユーザデータ空間
        <論理アドレス>@2        ユーザコード空間
        <論理アドレス>@5        スーパーバイザデータ空間
        <論理アドレス>@6        スーパーバイザコード空間
-- more -- [y/n] y
  演算子
        <汎用レジスタ>.<サイズ> 汎用レジスタアクセス
        <変数>.<サイズ>         変数アクセス
        [<アドレス>].<サイズ>   メモリアクセス
        x.<サイズ>              キャスト
        x(y)                    関数呼び出し
        x++ ++x x-- --x         インクリメント,デクリメント
        +x -x ~x !x             符号,ビットNOT,論理NOT
        x**y x*y x/y x%y        累乗,乗除算
        x+y x-y                 加減算,連結
        x<<y x>>y x>>>y         シフト
        x<y x<=y x>y x>=y       比較
        x==y x!=y               等価
        x&y x^y x|y x&&y x||y   ビットAND,XOR,OR,論理AND,OR
        x?y:z                   条件
        x=y x**=y x*=y x/=y x%=y x+=y x-=y
        x<<=y x>>=y x>>>=y x&=y x^=y x|=y       代入
        x,y                     逐次評価
-- more -- [y/n] y
  関数
        abs acos acosh acot acoth acsc acsch agi agm
        asc asec asech asin asinh atan atan2 atanh
        bin$ cbrt ceil chr$ cmp cmp0 cmp1 cmp1abs cmpabs
        cos cosh cot coth csc csch cub dec deg div2 div3 divpi divrz
        exp exp10 exp2 exp2m1 expm1 floor frac getexp getman
        hex$ ieeerem inc iseven isinf isint isnan isodd isone iszero
        lgamma log log10 log1p log2 max min mul2 mul3 mulpi
        oct$ pow quo rad random rcp rint rmode round rprec
        sec sech sgn sin sinh sqrt squ str$ tan tanh tgamma trunc ulp val
> 

19. ハイメモリ (はいめもり)

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

20. 貼り付け (はりつけ)

XEiJ はコマンドラインから起動したとき「貼り付け」(Shift+Alt+V) でホストマシンのクリップボードにあるテキストを X68000 の CON デバイス (ASK68K.SYS) の入力バッファに転送することができます。テキストファイルの中に書いてある文字列をコピーして X68000 のコマンドラインに貼り付けたいときなどに使います。

21. 表示モードテスト (ひょうじもぉどてすと)

CRTC、ビデオコントローラ、スプライトコントローラのレジスタに任意の値を上書きすることで、エミュレータ自身のデバッグを補助します。

21.1. パターンテスト

スプライトパターンにパターン番号を 16 進数で書いたパターンを上書きすることで、表示されているスプライトのパターン番号がわかるようにします。手前のスプライトのパターン番号は明るく、奥のスプライトとバックグラウンドのパターン番号は暗く表示されるようになっており、遊び慣れたゲームならばパターン番号を表示した状態でプレイできます。

22. フォントエディタ (ふぉんとえでぃた)

CGROM の内容を表示します。直接編集はドット打ちしかできませんが、CGROM*.*、*.F8、*.F12、*.FON、*.F24、*.F32、*.F48 ファイルの読み書き、異なるサイズのフォントの変換、ホストマシンのフォントを使ってビットマップフォントを生成する、といったことができます。

23. 負荷率固定モード (ふかりつこていもぉど)

MPU の動作周波数を自動的に変化させて負荷率を一定に保ちます。負荷率を 1% から 1% 刻みで 100% まで設定できます。

24. 浮動小数点プロセッサボード (ふどうしょうすうてんぷろせっさぼぉど)

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

25. 物理空間モニタ (ぶつりくうかんもにた)

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

26. 分岐ログ (ぶんきろぐ)

XEiJ はプログラムカウンタのインクリメント以外の変化すなわち割り込みを含むすべての分岐の分岐元と分岐先のアドレスを直近の 65535 回までメモリ上の分岐ログに保存しています。分岐ログウインドウを開くとプログラムカウンタの変化を遡って逆アセンブルすることができます。

27. プリンタ (ぷりんた)

プリンタポートに出力されたデータを 1 ページずつ画像に変換してイメージファイルに出力します。ホストマシンのフォントを使います。テキストファイルは

B:\>type xxx.txt > prn

で“印刷”できます。また、COPY キーで画面のハードコピーをとることができます。制御コードは「SHARP CZ 48 ピン」です。Human68k のプリンタドライバは標準の PRNDRV.SYS (SHARP CZ 24 ピン) を使います。SX-WINDOW ではプリンタを標準の「SHARP CZ 24 ピン」から「SHARP CZ 48 ピン」に変更してデフォルトの色変換方式を「誤差分散 (Floyd Steinberg) 方式」にすると綺麗に“カラー印刷”できます。

28. プログラムフロービジュアライザ (ぷろぐらむふろぉびじゅあらいざ)

flowvisualizer.pngプログラムフロービジュアライザは 分岐ログ をリアルタイムに可視化するツールです。プログラムカウンタが 4GB のアドレス空間のどこを巡回しているのかがひと目でわかり、クリックで逆アセンブルさせればそこで何をやっているのかもすぐにわかります。1 命令ずつトレースするよりもプログラムの大きな構造を把握しやすいと思います。

29. ホストファイルシステム (ほすとふぁいるしすてむ)

XEiJ はリモートデバイスから ROM 起動するための仮想拡張ボードを搭載しており、ホストマシンの任意のディレクトリを Human68k の起動ドライブにすることができます。CONFIG.SYS やデバイスドライバなどの起動シーケンスに必要なファイルがすべてホストマシンのディレクトリで検索されるので、Human68k の環境を構築するためにホストマシン側から内容を操作しにくいフロッピーディスクやハードディスクのイメージファイルを作る必要がありません。イメージファイルという箱庭から開放された X68000 に慣れると、イメージファイルの中に Human68k の環境を構築するのがとても面倒なことに思えてきます。

30. マザーボードコプロセッサ (まざぁぼぉどこぷろせっさ)

ドーターボードにある MC68060 から見てマザーボードにある MC68882 をマザーボードコプロセッサと呼んでいます。X68030 (実機) で MC68EC030 が浮動小数点命令を実行するときに使用するコプロセッサに、060turbo (実機) と同様に MC68060 からアクセスできます。起動メッセージなどでマザーボードコプロセッサの有無と種類が表示されます。

31. 命令ブレークポイント (めいれいぶれぇくぽいんと)

特定の物理アドレスの命令の直前でコアを停止させます。データブレークポイント と同様に間接メモリマップトデバイスを使用しているので軽量です。コードを変更しないので ROM にも仕掛けられます。

32. メモリダンプリスト (めもりだんぷりすと)

メモリの内容を表示します。

33. ラスタブレークポイント (らすたぶれぇくぽいんと)

固定ラスタまたは IRQ ラスタの水平フロントポーチの先頭でコアを停止させます。コアが止まると同期信号も止まるので、実機では困難な V-DISP、H-SYNC、CRTC IRQ の割り込みルーチンのトレースが簡単にできます。

34. ルートポインタリスト (るぅとぽいんたりすと)

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

35. レジスタウインドウ (れじすたういんどう)

プログラムカウンタ、ステータスレジスタ、汎用レジスタ、浮動小数点レジスタなどの内容を表示します。条件の成立状況が表示されます。

36. ローカルメモリ (ろぉかるめもり)

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

37. 論理空間モニタ (ろんりくうかんもにた)

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