countersince January 6, 2001X68000 LIBRARYEnglish
更新日: 2011 年 11 月 15 日
X68000 LIBRARY > ソフトウェアライブラリ > プログラミング > デバッガ > SCD060.X > SCD060.X の説明

SCD060.X の説明

説明

SCD060.X の添付ドキュメントです。末尾に記載されている連絡先は無効です。

scd060.doc
────────────────────────────────────
               Source Code Debugger ─ 68040/68060 対応版
                       scd060.x version 3.01+12
                        1998.11.27 by M.Kamada
────────────────────────────────────

●はじめに

 scd060.x は、XC コンパイラに付属している SHARP 純正のソースコードデバッ
ガ「SCD.X v3.00/v3.01」を、68040 と 68060 でも動くように改造したものです。

 scd060.x は 68040 と 68060 だけでなく 68000 や 68030 でも動作します。
68040 と 68060 への対応以外にも多くの改造や修正が施されているので、68040
や 68060 のユーザでなくても役に立つと思います。

 SCD.X については、XC コンパイラに付属しているマニュアルを参照して下さ
い。

●対応している SCD.X のバージョンについて

 scd060.x は SCD.X v3.00/v3.01 に対するバイナリ差分(.bfd)の形式で配布
しています。scd060.x を生成するには、K.Higashide 氏の bup.x を使い、お手
元の SCD.X のバージョンに対応したバイナリ差分ファイルを適用して下さい。

 各バイナリ差分は、以下のバージョンの SCD.X に対応しています。

      ┌──────┬─────────────────────┐
      │バイナリ差分│            対応している SCD.X            │
      ├──────┼─────────────────────┤
      │ scd300.bfd │ SCD.X v3.00   131152  93-09-15  12:00:00 │
      │ scd301.bfd │ SCD.X v3.01   131156  93-12-25  12:00:00 │
      └──────┴─────────────────────┘

 上記よりも新しいバージョンの SCD.X の存在は確認されていませんが、もし
持っているという場合はご連絡下さい。

 なお、SCD.X のバージョンは起動時に表示されます。フルスクリーンモードで
も表示されますが、すぐに消えてしまうので、「SCD.X -t」としてコンソールモ
ードで起動して確認するとよいと思います。


────────────────────────────────────

        DB.X に合わせて変更されたコマンドについて

────────────────────────────────────

 SCD.X は DB.X よりも高機能で、DB.X のようなコンソールモードも持ってい
るので、「フルスクリーンモードはいらない」という人も SCD.X を DB.X の代
わりとして使うことができます。ただ、SCD.X ではコマンドの「?」の機能が
DB.X と異なるという不都合があります。そこで、この scd060.x では、コマン
ドの「?」と「P?」の機能を入れ換えてあります。

 また、SCD.X のマニュアルには書いてありませんが、SCD.X には元々
「P?? exp」で式の値を 10 進数で表示、「P?P exp」で式の値の最下位バイトを
文字コードと見なして 1 文字表示、という機能があります。DB.X では「??」が
10 進数で表示するコマンドになっていますので、scd060.x ではこれらも同時に
入れ換えてあります。

 scd060.x での「?」と「P?」の動作
      ┌────────┬────────────────────┐
      │? exp           │式の値を 16 進数で表示                  │
      │?? exp          │式の値を 10 進数で表示                  │
      │?P exp          │式の値の最下位バイトのコードの文字を表示│
      │P? Cexp;[format]│C 言語の式評価                          │
      └────────┴────────────────────┘

 なお、SCD.X や scd060.x では、DB.X のように 1 行に複数のコマンドを「:」
で区切って記述することはできません。


────────────────────────────────────

        追加された命令

────────────────────────────────────

 scd060.x では、新たに 68040 以上の CPU で新設された命令をアセンブルお
よび逆アセンブルできるようになっています。

● 68040 以上で新設された命令

 以下の命令は 68040 以上で新設されたものです。

                CINVA
                CINVL
                CINVP
                CPUSHA
                CPUSHL
                CPUSHP
                FDABS
                FDADD
                FDDIV
                FDMOVE
                FDMUL
                FDNEG
                FDSQRT
                FDSUB
                FSABS
                FSADD
                FSDIV
                FSMOVE
                FSMUL
                FSNEG
                FSSQRT
                FSSUB
                LPSTOP
                MOVE16
                MOVEC   PCR,Rn
                MOVEC   BUSCR,Rn
                MOVEC   Rn,PCR
                MOVEC   Rn,BUSCR
                PFLUSH  (An)
                PFLUSHAN
                PFLUSHN (An)
                PLPAR
                PLPAW
                PTESTR  (An)
                PTESTW  (An)

●アセンブルするときの CPU によってアセンブル結果が異なる命令

 以下の命令は、アセンブルするときの CPU が 68030 か 68040 以上かによっ
てアセンブル結果が異なるので注意して下さい。

                PFLUSHA


────────────────────────────────────

        制御レジスタ

────────────────────────────────────

 scd060.x では、X コマンドやコマンドラインの .レジスタ名 の記述において、
新たに以下の制御レジスタ名が使用可能です。

                BUSCR
                DTT0
                DTT1
                ITT0
                ITT1
                MMUSR
                PCR
                SRP
                TC
                URP

 上記のレジスタはフルスクリーンモードのレジスタウィンドウには表示されま
せんが、X コマンドで参照および変更することができます。ただし、これらの制
御レジスタにはいずれも重要な値が入っているので、一部のビットを除いて無闇
に変更してはいけません。

 なお、scd060.x を実行した環境で存在しない制御レジスタは通常は表示され
ませんが、それらを X コマンドを使って参照または変更してもエラーにはなら
ず、コマンドラインだけで使える単なる変数として値が保持されます。


────────────────────────────────────

        例外スタックフレーム

────────────────────────────────────

 scd060.x は、68040 と 68060 で追加された例外スタックフレーム(format
$3/$4/$7)に対応しています。これらの例外が発生すると、バスエラーの状況や
分岐予測エラーの有無などが表示されます。

● 68060 における例外スタックフレームの表示の例

・バスエラーの場合

 ライトのみでリードできないポートの $00EAFF81 を、リードしようとしてみ
ます。

Exceptional abort by access error
Access fault or floating-point disabled stack frame
  Fault or effective address is 00EAFF81
 at   002896F8  move.b  $00EAFF81,D0

Fault Status Long Word (FSLW) is 01250020
  Fault was caused by: RE (Bus Error on Read)
  Fault occurred on: IO=0,MA=0 (Aligned or misaligned first operand access)
                     LK=0 (Not locked), RW=2 (Read), SIZE=1 (Byte)
                     TT=0 (Normal Access), TM=5 (Supervisor Data Access)
PC=002896F8 USP=0025CA9A SSP=0025CA9A SR=2000 X:0  N:0  Z:0  V:0  C:0
HI:1 LS:0 CC(HS):1 CS(LO):0 NE:1 EQ:0 VC:1 VS:0 PL:1 MI:0 GE:1 LT:0 GT:1 LE:0
SFC=3 DFC=3 VBR=00000000 CACR=A0808000 PCR=04300521 BUSCR=00000000
TC=0000C210 URP=11EC8000 SRP=11EC8000
ITT0=00000000 ITT1=00000000 DTT0=00000000 DTT1=00000000
D  00008364 00000000 00000000 00000000  00000000 00000000 00000000 00000000
A  002895F0 00289706 0025CD32 11807CB0  002896F0 00000000 00000000 0025CA9A
move.b  $00EAFF81,D0            ;00EAFF81(??)
-

・スーパーバイザプロテクトの場合

 ユーザモードでアドレス $00000000 からリードしようとしてみます。このア
ドレスは MMU の設定でスーパーバイザプロテクトされており、ユーザモードで
はアクセスできません。Human の白帯ではバスエラーと表示されますが、実際に
はバスエラーは発生していません。

Exceptional abort by access error
Access fault or floating-point disabled stack frame
  Fault or effective address is 00000000
 at   0028B264  move16  (A0)+,(A1)+

Fault Status Long Word (FSLW) is 01690100
  Fault was caused by: SP (Supervisor Protect)
  Fault occurred on: IO=0,MA=0 (Aligned or misaligned first operand access)
                     LK=0 (Not locked), RW=2 (Read), SIZE=3 (Double Precision or MOVE16)
                     TT=1 (MOVE16 Access), TM=1 (User Data or MOVE16 Access)
PC=0028B264 USP=0025E60E SSP=00008364 SR=0000 X:0  N:0  Z:0  V:0  C:0
HI:1 LS:0 CC(HS):1 CS(LO):0 NE:1 EQ:0 VC:1 VS:0 PL:1 MI:0 GE:1 LT:0 GT:1 LE:0
SFC=3 DFC=3 VBR=00000000 CACR=A0808000 PCR=04300521 BUSCR=00000000
TC=0000C210 URP=11EC8000 SRP=11EC8000
ITT0=00000000 ITT1=00000000 DTT0=00000000 DTT1=00000000
D  00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000
A  00000000 00000000 0025E8A2 11807CB0  0028B260 00000000 00000000 0025E60E
move16  (A0)+,(A1)+
-

・ライトプロテクトの場合

 $00FFFFFF(ROM 領域)にライトしてみようとしてみます。ここで、$00FFFFFF
の実体はローカルメモリ(RAM)上にあり、MMU の設定でライトプロテクトされ
ています。Human の白帯ではバスエラーと表示されますが、実際にはバスエラー
は発生していません。

Exceptional abort by access error
Access fault or floating-point disabled stack frame
  Fault or effective address is 00FFFFFF
 at   0028C26E  clr.b   -(A0)

Fault Status Long Word (FSLW) is 00A50080
  Fault was caused by: WP (Write Protect)
  Fault occurred on: IO=0,MA=0 (Aligned or misaligned first operand access)
                     LK=0 (Not locked), RW=1 (Write), SIZE=1 (Byte)
                     TT=0 (Normal Access), TM=5 (Supervisor Data Access)
PC=0028C26E USP=0025F60A SSP=0025F60A SR=2000 X:0  N:0  Z:0  V:0  C:0
HI:1 LS:0 CC(HS):1 CS(LO):0 NE:1 EQ:0 VC:1 VS:0 PL:1 MI:0 GE:1 LT:0 GT:1 LE:0
SFC=3 DFC=3 VBR=00000000 CACR=A0808000 PCR=04300521 BUSCR=00000000
TC=0000C210 URP=11EC8000 SRP=11EC8000
ITT0=00000000 ITT1=00000000 DTT0=00000000 DTT1=00000000
D  00008364 00000000 00000000 00000000  00000000 00000000 00000000 00000000
A  01000000 0028C278 0025F8A2 11807CB0  0028C260 00000000 00000000 0025F60A
clr.b   -(A0)           ;00FFFFFF(byte $FF)
-

・分岐予測エラーの場合

 分岐予測エラーは、分岐命令コード以外の場所で分岐キャッシュがヒットして
しまった場合に発生するエラーです。これは、68000 用に最適化されたプログラ
ムで稀に発生することがあります。これもアクセスフォルトの一種なので Human
の白帯ではバスエラーと表示されてしまいますが、実際にはバスエラーは発生し
ていません。分岐予測エラーが発生した場合は、分岐キャッシュをフラッシュし
てから処理を続行することが推奨されています。

 故意に分岐予測エラーを発生させるプログラム:

                bra.s   2f
        1:      .dc.w   $307C           ;movea.w #<data>,a0
        2:      bra.s   3f
                .dc.w   $FF00
        3:      bra.s   1b

 Branch Prediction Error の他に Bus Error on Write が出てしまうのは、バ
スエラーを示すビットが立っているからです。これは MPU のバグかも知れませ
ん。

 アクセスフォルトが発生した時点で scd060.x 自身が分岐キャッシュをフラッ
シュしてしまうので、分岐予測エラーが発生してもそのままプログラムを続行す
ることができます。

Exceptional abort by access error
Access fault or floating-point disabled stack frame
  Fault or effective address is 0028D262
 at   0028D262  movea.w #$6002,A0

Fault Status Long Word (FSLW) is 09428014
  Fault was caused by: WE (Bus Error on Write)
                       BPE (Branch Prediction Error)
  Fault occurred on: IO=1,MA=1 (Extension word fetch access)
                     LK=0 (Not locked), RW=2 (Read), SIZE=2 (Word)
                     TT=0 (Normal Access), TM=2 (User Code Access)
PC=0028D262 USP=0026060E SSP=00008364 SR=0000 X:0  N:0  Z:0  V:0  C:0
HI:1 LS:0 CC(HS):1 CS(LO):0 NE:1 EQ:0 VC:1 VS:0 PL:1 MI:0 GE:1 LT:0 GT:1 LE:0
SFC=3 DFC=3 VBR=00000000 CACR=A0808000 PCR=04300521 BUSCR=00000000
TC=0000C210 URP=11EC8000 SRP=11EC8000
ITT0=00000000 ITT1=00000000 DTT0=00000000 DTT1=00000000
D  00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000
A  0028D160 0028D26A 002608A2 11807CB0  0028D260 00000000 00000000 0026060E
movea.w #$6002,A0
-


────────────────────────────────────

        DOS / FPACK / SXCALL / IOCS

────────────────────────────────────

 従来から DOS コールと FPACK(FE ファンクションコール)が名前で扱えるよ
うになっていましたが、scd060.x では新たに SXCALL と IOCS コールも名前で
扱えるようになっています。また、従来は DOS コールなどはコール名がそのま
ま命令になっているだけでしたが、DOS/FPACK/SXCALL/IOCS をそれぞれ命令とし
て、オペランドにコール名を記述することもできるようになっています。逆アセ
ンブルのときも同様に、DOS/FPACK/SXCALL/IOCS とコール名を出力します。特に
IOCS コールの部分の逆アセンブル結果が格段に見やすくなっています。

● DOS コール

 DOS コールは、以下のフォーマットでアセンブルおよび逆アセンブルします。

                DOS     _コール名

 勿論、従来通り _コール名 だけ書いてもアセンブルできます。また、小文字
で書いてもアセンブルできます。

 _OS_PATCH 等の幾つかの DOS コール名が追加されています。また、060turbo
の新設 DOS コールのコール名も入っています。

● FE ファンクションコール

 FE ファンクションは、以下のフォーマットでアセンブルおよび逆アセンブル
します。

                FPACK   __コール名

 勿論、従来通り __コール名 だけ書いてもアセンブルできます。また、小文字
で書いてもアセンブルできます。

 __ASIN 等の幾つかの FE ファンクションコール名が追加されています。

● SX コール

 新たに SX コールにも対応しています。

 SX コールのアセンブルおよび逆アセンブルのフォーマットは以下の通りです。

                SXCALL  __コール名

 勿論、DOS コールのように __コール名 だけ書いてもアセンブルできます。ま
た、小文字で書いてもアセンブルできます。

 コール名はなるべく最新のものを使用しましたが、不足があるかもしれません。
不足や間違いを見つけたら報告して下さい。

● IOCS コール

 IOCS コールにも対応しています。

 IOCS コールのアセンブルおよび逆アセンブルのフォーマットは以下の通りで
す。

                IOCS    _コール名

 勿論、DOS コールのように _コール名 だけ書いてもアセンブルできます。ま
た、小文字で書いてもアセンブルできます。

 IOCS コールのアセンブル結果は以下のようになります。また、この命令の組
み合わせを IOCS コールと判断して逆アセンブルします。

        MOVEQ.L #コール番号,D0
        TRAP    #15

 なお、IOCS コールをステップ実行すると、上記の 2 命令をまとめて飛び越え
るようにしてあります。


────────────────────────────────────

        その他の拡張や仕様変更

────────────────────────────────────

 改造者の好みであちこちいじってあります。

●コンフィグファイルとヘルプファイルの検索方法の変更

 従来通り SCD.CNF と SCD.HLP も検索しますが、起動されたデバッガの実行フ
ァイルと同じディレクトリにデバッガの拡張子を .cnf と .hlp に変えたファイ
ルがあれば、そちらが優先します。例えば、デバッガの実行ファイル名が
scd060.x ならば、SCD.CNF と SCD.HLP よりも scd060.cnf と scd060.hlp の方
が優先します。

●条件の成立状況を表示する

 X コマンドの表示の中に「HI:1 LS:0 CC(HS):1 CS(LO):0 NE:1 EQ:0 VC:1
VS:0 PL:1 MI:0 GE:1 LT:0 GT:1 LE:0」のような条件の成立状況を加えました。

● .SR と .CCR で SR と CCR を参照できる

● XCCR の後にパラメータ(設定値)を書ける

● XX、XN、XZ、XV、XC で CCR をビット毎に操作できる

 例えば、XC1 で C フラグをセット、XC!.C で C フラグを反転できます。

● .X、.N、.Z、.V、.C で CCR をビット毎に参照できる

 この追加のため、X、N、Z、V、C という 1 文字のシンボルを .〜 で参照でき
なくなっているので注意して下さい。

●メニューバーのプルダウンメニューがクリックで操作できる

 メニューバーのプルダウンメニューの操作にドラッグが必要なのは不便なので、
クリックでも操作できるようになっています。

 メニューバーの上でクリックするとプルダウンメニューが出てくるので、選択
したい項目にマウスポインタを合わせてもう一度クリックして下さい。

 勿論、従来通りドラッグしても選択できます。

●オペレーションサイズを常に出力する

 逆アセンブルするとき、MOVEQ などのサイズが明確な命令でも unsized でな
ければサイズを明記するようにしました。

● DBF を DBRA と書く

 逆アセンブルするとき、DBF を DBRA と表記します。FDBF も FDBRA になりま
す。

●従来から存在した命令で新たに記述が許されることになった別名

 以下の命令が新たにアセンブルできます。それぞれ CC や CS の別名です。

                BHS
                BLO
                DBHS
                DBLO
                SHS
                SLO
                TRAPHS
                TRAPLO

● SF/ST の表示を改善

 SF/ST のオペランドの位置が左に寄っていたので、他の命令と同じ位置に表示
されるようにしました。

●文字表示を改善

 2 バイトの半角文字や 1/4 角文字を正しく表示できるようにしました。

 “□”のフォントが変わってしまわないようにしました。

 メッシュ表示を高速化しました。

●シェルのファイル名は環境変数 SHELL も検索する

 従来からシェルのファイル名を環境変数 comspec で指定できましたが、それ
が設定されていない場合は環境変数 SHELL も検索するようになっています。ど
ちらも設定されていなければ command.x を使用します。

 また、環境変数 comspec の内容がフルパスでなくてもシェルを起動できるよ
うになっています。

●メッセージの変更

 「No symbol file」の日本語訳を「シンボルファイルがない」から「シンボル
がないファイル」に変更しました。

 Custom ウィンドウの中の文字も若干変わっています。

●浮動小数点数の誤差の改善

 浮動小数点の 10 のべき乗のテーブルの誤差が大きかったので、正確な値に近
いテーブルで置き換えてみました。


────────────────────────────────────

        デバッグ

────────────────────────────────────

 以下は、SCD.X v3.00/v3.01 にあって scd060.x で修正された不具合です。他
にもいろいろありそうなので、気付いたら報告して下さい。細かい不具合もなる
べく修正します。

●逆アセンブル結果と共にメモリ内容を表示するとき実効アドレスを間違えるバ
グ

 プレデクリメントの実効アドレスの計算が間違っていました。そのため、
FMOVE.X -(An),FPn などの実効アドレスとその内容が正しく表示できていません
でした。

 フルフォーマットのベースレジスタおよびインデックスのサプレスが処理され
ていませんでした。そのため、例えば ($0000.W,ZA0,D0.L) の実効アドレスとそ
の内容が ($0000.W,A0,D0.L) と同じになってしまっていました。

 インデックスレジスタの値の取得とスケールファクタの計算も間違っていまし
た(v3.00 のみ)。

●逆アセンブルするとき PFLUSH/PLOAD/PTEST のイミディエイトオペランドの表
示を間違える不具合

 逆アセンブルするとき、PFLUSH/PFLUSHS の 1 番目および 2 番目のイミディ
エイトオペランドと、PLOADR/PLOADW/PTESTR/PTESTW の 1 番目のイミディエイ
トオペランドの表示が間違っていました。

● FNOP/FBcc/FSAVE/FRESTORE/FBRA を正しく逆アセンブルできない不具合
(v3.00 のみ)

 FTRAPcc の逆アセンブル用の文字列が欠落していたために、FNOP、FBcc、
FSAVE、FRESTORE、FBRA の各命令を正しく逆アセンブルできませんでした。

● FDBcc/PDBcc のオフセットの計算を間違える不具合

 アセンブルするときは正しい値よりも 2 大きいオフセットを出力し、逆アセ
ンブルするときは正しい値よりも 2 小さいアドレスを表示していました。

●逆アセンブルするとき TTn レジスタのサイズがワードになる不具合

 PMOVEFD.L (A0),TT0 が PMOVEFD.W (An),TT0 と出力されていました。

● FScc Dn をアセンブルできない不具合

 FScc (An) はアセンブルできるのに、FScc Dn をアセンブルしようとするとエ
ラーになってしまっていました。

●アセンブルするとき PTRAPcc #imm にオペランドサイズを明記しないとオペラ
ンドなしのコードを出力する不具合

 PTRAPcc #0 を PTRAPcc.W #0 と書かなければなりませんでした。

●アセンブルのとき STOP 命令のサイズに .B や .L を指定してもアセンブルで
きる不具合

●アセンブルのとき NOP などにサイズを指定してもエラーにならない不具合

● X コマンドのコマンド名と汎用以外のレジスタ名の間にスペースがあるとエ
ラーになる不具合

 XD0 は X D0 とも書けるのに、X PC は XPC と書かなければなりませんでした。

● X コマンドで汎用以外のレジスタに設定する値をコマンドラインに書くとき、
レジスタ名と設定値の区切りの判断の仕方がおかしい不具合

 X FPSR 0 を X FPSR,0 と書かなければなりませんでした。

 XD0.D0+2 とは書けるのに XPC.PC+2 がエラーになってしまっていました。

●例外スタックフレームを正しく表示できないことがある不具合

 デバッグ中のプログラムが SCD.X が与えたユーザスタックをそのままスーパ
ーバイザスタックとして使用していると、例外が発生したときにその例外スタッ
クフレームが SCD.X 自身によって破壊されてしまい、例外スタックフレームの
内容が正しく表示されませんでした。

 なお、scd060.x がデバッグ中のプログラムに与えるユーザスタックのサイズ
は、8KB です。

●拡張子が .SYS の実行ファイルをロードできない不具合

 強制的に .X 形式でロードするためのモードの指定が間違っていました。

●ベクタ $3D〜$3F を復元しない不具合

●例外発生時の浮動小数点レジスタの保護を行う部分の FSAVE/FRESTORE がキャ
ンセルされたいた不具合(v3.00 のみ)

●レジスタの一覧表示で DFC の表示が SFC の値になっていた不具合

●コンソールモードでテキスト画面の使用状態を変更してしまう不具合

 ! コマンドでシェルを呼び出すとき、その前後でテキスト画面の使用状態を変
更しますが、これがコンソールモードでも機能してしまっていました。そのため、
コンソールモードでシェルを起動するとその後のテキスト画面の操作に支障が出
る場合がありました。


────────────────────────────────────

        SCD.X v3.00 と v3.01 の違いについて(参考)

────────────────────────────────────

 SCD.X v3.00 と v3.01 の違いは、以下の 3 つ不具合が修正されたことだけで
す。

● FNOP/FBcc/FSAVE/FRESTORE/FBRA が正しく逆アセンブルできなかった不具合

●例外発生時の浮動小数点レジスタの保護を行う部分の FSAVE/FRESTORE がキャ
ンセルされたいた不具合

●逆アセンブルのときの実効アドレスのメモリ内容の表示で、インデックスレジ
スタを含む実効アドレスを間違える不具合


────────────────────────────────────

        68040/68060 で動作させるための改造の内容(参考)

────────────────────────────────────

 SCD.X v3.00/v3.01 は、そのままでは 68040/68060 上で動かすとハングアッ
プしてしまいます。これを 68040/68060 でまともに使えるようにするために施
した改造の内容を幾つか挙げておきます。

● 68040 以上のとき CAAR 等の未実装レジスタの使用を回避する

●キャッシュフラッシュの手順を CPU によって選択する

●コピーバックモード対策(自己書き換え後のキャッシュフラッシュ)

●ソフトウェアエミュレーションの例外でプログラムを中断しないようにした

● 68040/68060 ではカーソルの点滅が速くなりすぎるので、点滅の間隔を一定
に保つように修正した

●バスエラーの発生が予想される箇所を NOP で囲む


────────────────────────────────────

●謝辞

 SCD.X v3.01 を提供してくれたEPOさん、ありがとうございました。

 バグ報告などを寄せて下さった皆さんにも感謝致します。今後も引き続き情報
提供をお願い致します。

●お約束

 正しく動作することを期待して改造しましたが、scd060.x の動作は無保証で
す。

●連絡先

        満開ネット: MKSX0109 かまだ
        E-mail: kamada@mankai.co.jp


(EOF)