----------------------------------------------------------------------------
               X68000用プログラムをWin95/98/NT/2000/XP/Vistaで動かす

                      run68.exe　Version 0.09

                      originally programmed by Ｙｏｋｋｏ
                      maintained by masamic, Chack'n

＜＜目次＞＞
  1. 主な変更点
　2. 動作環境
　3. 使用法
　4. run68.iniについて
　5. run68w.exeについて
　6. 動かないプログラム
　7. 無保証
  8. ライセンス
　9. 開発ツール
  10.協力のお願い
　11.連絡先
　12.履歴
　付録．動作状況が確認されているプログラム
----------------------------------------------------------------------------

　X68000用の一部のプログラムを、Win32 API を備えた x86 PC 上で動かすソフトで
す。現在の所、95％程度のMC68000の命令と、75％程度のDOSCALL、20％のFLOATファ
ンクションコールをサポートしています。


【1.主な変更点】

  Version0.09からVersion0.09aの主な変更点を以下に示します。

    トラップ氏により以下の修正とバグフィックスがなされました。
    ・EA_VariableData の定義にて、絶対ロング指定が抜けていたので、追加。
    ・eor の実行アドレス指定は、メモリ可変ではなく、データ可変。
    ・Keyctrl が WIN32 でも有効となるように修正。

  Version0.08からVersion0.09の主な変更点を以下に示します。

    トラップ氏により以下の実装の追加とバグフィックスがなされました。

    ・Nbcd() 追加。nbcd dn,dn についてはフラグ変化含め動作確認済み。
    ・Sbcd() 追加。sbcd dn,dn についてはフラグ変化含め動作確認済み。

    ・abcd の処理を追加。abcd dn,dn についてはフラグ変化含め動作確認済み。
      あと、微妙なところだけども、やっつけで ULong の引数/戻り値を持つ
      Umul, Udiv, Umod, Cumul, Cudiv, Cumod を実装してみた。
      IDIV も実装。
      これによりisdinfo.x 等が動くようになった。

    ・簡易ディスアセンブラで
    　as{lr}, ls{lr}, ro{lr}x, ro{lr} のシフト/ローテイト命令にて、
　　　サイズ (b,w,l) が常に w で表示されていたのを正しいサイズで
　　　表示されるように修正。
      8bit のシフト/ローテイト指定が 0 と表示されていたのを修正。

    ・_KEYSNS() でキー入力待ちを行っている場合に、WIN32 では戻ってこない。
　    とりあえず、コメントアウトされていた部分を解除してキーが押されたら
　    戻ってくるようにした。
      pcm3pcm.x 実行にて、(more) 表示から先に進めるようになる。

    ・sub <ea>,Dn で上位ワードを破壊していると思われる部分を修正。

    以上、トラップ氏に感謝いたします。

    ・その他バグ
      move命令のデスティネーションオペランドの扱いがおかしかった。
    

  Version0.07からVersion0.08の主な変更点を以下に示します。

   ・シフト演算関連を完全実装

     僅かに対応していない命令は以下のものだけです。多分 (^^;

                   表1 - 対応していない命令
                +---------------------------+
                | bcd演算                   |
                | addx.{b|w|l} -(an), -(an) |
                | subx.{b|w|l} -(an), -(an) |
                | rtr / trapv / chk         |
                | 一部の特権命令            |
                +---------------------------+

   ・movem to reg の PC 相対アドレッシングでの実効アドレスが、2 小さい値を示
     すのを修正。

   ・DOSコール NFiles を修正
     これにより、rune、dash等のシェルが何とか動くようになりました。

   ・move to reg の PC相対アドレッシングモードの不具合解消。
     lzxなどが動くようになりました。

【2.動作環境】

　i386以上のCPUを搭載するPC/ATおよびその互換機上で動作するWindows95/98/NT/2000/
XPの、DOSプロンプト or MS-DOSモード上で動作します。PC98シリーズ上では動作確認を
行っておりません。

　Version 0.07からロングファイルネームに対応しました。Win32がサポートする
最大512文字までのフルパス名が利用可能です。ただし、アプリケーションプログラム側
が対応していないような長いパス名を使用すると、実行時エラーになります。


【3.使用法】

   run68 {オプション} 実行ファイル名 [コマンドライン]
    オプション:
　          -f         ファンクションコールトレース
            -debug     run68簡易デバッガ起動

　実行ファイル名の拡張子が".r"または".x"の場合は省略可能です。なお、X形式
のファイル以外は全てR形式とみなして動作します。プログラム以外のファイルを
指定しても実行しようとするので注意が必要です。
  run68はrun68.iniに記述された環境変数PATHに従って実行ファイルを検索し、
最初に見つかったファイルをロード・実行します。Windows環境のPATHとは関係
ありませんのでご注意ください。
　※Z形式プログラムは実行できません。

  run68簡易デバッガの使い方については、debugger.txtを参照してください。


【4.run68.iniについて】

　run68.exeと同じディレクトリにrun68.iniという名前のファイルを置く事により、
本ソフトの動作を制御できます。
　run68.iniの内容は以下の通りです。これを複数回記述できます。

　----- run68.ini ---
　[セクション名]
　キーワード
　…
　-------------------

　セクション名、キーワードの大文字小文字は区別されません。両方とも行頭から
書き始め、直後に改行を入れて下さい。

　セクション名には、run68予約済みのセクション名、若しくはキーワードが適用さ
れるプログラム名を指定します。たとえば、"[dis.x]"のように書きます。

  run68予約済みのセクション名としては次の２つがあります。

  all :         このセクション内のキーワードは、全てのプログラムに適用されま
                す（他のセクション名が最初に現れるまでは[all]セクションと解
                釈します）。

  environment : このセクション内の全てのキーワード（環境変数）が、全てのプロ
                グラムに渡されます。

　キーワードには、以下のいずれか若しくは環境変数（Environmentセクション内の
み）を指定します。

　EnvLower　　：環境変数を小文字に変換してプログラムに渡します。DOS/Win95では
　　　　　　　　環境変数は小文字で設定しても大文字に変換されてしまい、小文字
　　　　　　　　の環境変数を要求するdis.xが動かないために作成しました。

　MainMemory=n：確保するメモリをMB単位で指定します。nは1〜12が指定できます。
　　※できるだけ２以上を指定する事をおすすめします。

  "[environment]" セクション内の環境変数は、「変数名{=値}」の形で一行に一変
数ずつ記述します。複数行にまたがって記述することはできません。


【5.run68w.exeについて】

  Version0.07からはrun68w.exeが無くなります。run68.exe自体が長いファイル名を
サポートします。


【6.動かないプログラム】

　動くプログラム自体が少ないのですが、その中でも以下のものは絶対に動作しま
せん。

　・SX-WINDOW用プログラム
　・BINDされたもの（COMMAND.X等）
　・一部の領域を除き、スーパーバイザ領域にアクセスするもの
　　（すなわち、グラフィックを使用するものはだめです）
　・FM音源、ADPCM音源を使用するもの
　・周辺機器を使用するもの（マウスを含む）
　・一部を除き、IOCSコールを使用するもの


【7.無保証】

　本ソフトは無保証です。使用した上で生じたいかなる損害についても、作者は責任
を負いません。

【8.ライセンス】

　本ソフトのライセンスはGPLです。GPLの詳細はdocディレクトリのgpl.txtを参照してください。

【9.開発ツール】

　本ソフトは、Microsoft Visual C++ ver5を用いて作成されました。
  CygnusSolusions社のCygwin gcc(version egcs-2.91.57/2.95.1)でもコンパイル
できることを確認しております。


【10.協力のお願い】

  本ソフトを用いて動作するX68000プログラムを増やすために、また、本ソフトの
バグを減らして快適にご利用いただくために、情報のご提供をお願いします。
  ご協力いただく方法は以下の3種類があると思います。

  (1)デバッグ済ソースのご提供
  (2)デバッグ情報のご提供
  (3)動作しないプログラム、あるいは異常動作の情報提供

  (1)が最も望ましいことは言うまでもありません。:-)
  本ソフトはオープンソースの考えに基づいて配布されます。どなたでもご自由に
ソースを改変していただけます。プログラムを改良された場合、それを還元して
いただけると非常に助かります。

  (2)は例えばrun68簡易デバッガを用いて得られたデバッグ情報をご提供いただく
場合などです。簡易デバッガを用いてバグの原因となったrun68の異常動作箇所を
つきとめていただき、その情報をお送りください。普通ここまでやられる方は、
ご自分でソースを直してしまわれるかも知れませんが。:-)

  (3)は、お手持ちのX68000プログラムでバスエラーが発生した場合など、
run68はデバッグモードに入り、実行した命令の履歴とレジスタの内容を出力
します。それらの内容をご提供ください。それだけの情報ではデバッグできない
場合があります。その場合には、更なる情報のご提供をお願いいたします。
また、そのプログラムがフリーソフトである場合など、プログラム自体をご提供
いただいても結構です。ダウンロード可能な場合にはそのURLをお教えください。

  ご協力いただける場合は、配布ドキュメントのbuginfo.txtの書式をご利用
いただき、下記連絡先までお知らせください。寄せられた情報はきちんと管理し、
我々のできる範囲で対応いたします。


【11.連絡先】

　Email：masamic@masamic.net
　サポートホームページ -- http://pws.prserv.net/run68/


【12.履歴】

  ＜2004/12/16 version 0.08a＞
   ・GPLに対応
   ・連絡先の変更
   ・メンテナ名称の変更
   ・Windows XPでの動作確認（一部）

  ＜2000/02/03 version 0.08＞
   ・シフト演算関連を完全実装
   ・movem to reg の PC 相対アドレッシングでの実効アドレスが、2 小さい値を示
     すのを修正。
   ・DOSコール NFiles を修正
     これにより、rune、dash等のシェルが何とか動くようになりました。
   ・move to reg の PC相対アドレッシングモードの不具合解消。


  ＜1999/12/24 version 0.07＞
   ・MC68000の命令対応率を75%->95%に向上。
   ・Human68kファンクションコールをWin32APIでエミュレーション。
   ・簡易デバッガ機能を追加した。
   ・環境変数設定値をrun68.iniファイルから読込むようにした。

　＜97/05/23　Version 0.06＞
   ・DOSCALL CONCTRLのmode=0時、文字表示の後stdoutをフラッシュするようにした
　　　（jrogue.xで表示がおかしくなる事があるので）。

　＜97/01/25　Version 0.05＞
   ・tas命令を完全にサポートした。

　＜96/08/26　Version 0.04＞
   ・A系命令トラップベクタがフックされた場合、フック先に処理を飛ばすようにし
　　　た（今のところほとんど意味がないが）。
   ・zmusic.xのコンパイル（-Cオプション）が動くようになった。
   ・標準出力をリダイレクトした時、余計な改行コードが入っていたのを一部修正。
   ・子プロセスで実行した時、メモリ内容をクリアしなかったために、一部のプログ
　　　ラムが正しく動作しなかったのを修正。
   ・DOSCALL IOCTRLのmode=0において、Ver 0.03で余計な処理を入れて一部のプログ
　　　ラムが動かなくなっていたのを修正。

　＜96/07/20　Version 0.03＞
   ・DOSCALL EXECをサポートした。これにより、子プロセスを起動できるように
　　　なった。また、basic.xが外部関数を組み込んでも起動するようになった。
   ・DOSCALL VERNUMで、Ver 3.02を返すようにした。
   ・float2.x、gcc.x、jrogue.x、lzx.x、ztom.xが動くようになった。
   ・lzx.xで圧縮されたプログラムが動くようになった（圧縮しなくて動かないもの
　　　は当然動かないが）。
   ・DOSコール、FLOATファンクションコールのサポートを増やした。
   ・F系命令トラップベクタがフックされた場合、FLOATファンクションコールならば
　　　フック先に処理を飛ばすようにした。これによりfloat2.xが常駐している場合、
　　　そちらでFLOATファンクションコールを実行するようになった。
   ・run68.iniのキーワードに「MainMemory=n」を追加。
   ・DOSCALL PUTCHARで文字コードに0x0Aがきた時、復帰改行していたのを改行だけ
　　　を行うように修正。
   ・その他。

　＜96/07/03　Version 0.02＞
   ・Win95プログラムだとうまくいかない部分が出てきたので、32bitDOSプログラム
　　　に変えた。
   ・一部うまく動かない代わりに長いファイル名が使えるWin95用プログラム
　　　「run68w.exe」を別に作成した。
   ・aish.x、bup.x、lha.x、mic.x、tree.xが動くようになった。
   ・lha.xで作成した自己解凍ファイルが動くようになった。
   ・basic.x、where.xが一部動くようになった。
   ・run68.iniでプログラム毎の指定ができるようにした。
   ・FLOATファンクションコールをサポートするようにした（まだ30％程度）。
   ・MC68000の命令、DOSコールのサポートを増やした。
   ・bssセクションの内容を0保証するようにした。
   ・シフト系命令でソースオペランドがレジスタの時、そのレジスタの値がマイナス
　　　の場合に正しく動作しなかったのを修正。
   ・その他。

　＜96/06/23　Version 0.01＞
   ・初版


【付録．動作状況が確認されているプログラム】

  作者の方の敬称は省略させて頂きました。

　凡例）○:動作する。△:一部動作する。×:動作しない。−:未確認。

  ※なお、「動作する」場合でも、完全な動作を保証するものではありません。


  種別         名称       Version   著作権者・作者      0.06 0.07 0.08 備考
  ------------ ---------- --------- ------------------- ---- ---- ---- ---------------------------------------
  Human68k標準 basic.x    v1.00     SHARP/Hudson         −   ○   ○  使用できない命令がある。
  コマンド     basic.x    v2.02     SHARP/Hudson         ○   ○   ○  使用できない命令がある。
               command.x  v1.00     SHARP/Hudson         ○   △   △  dirコマンドなどが使えない。
               dump.x     v1.01     SHARP/Hudson         ○   ○   ○
               fc.x       v1.01     SHARP/Hudson         ○   ○   ○
               float2.x   v2.03     SHARP/Hudson         ○   −   −
               where.x    v1.01     SHARP/Hudson         △   △   △  ファイルがあっても見つからない。
               tree.x     v1.01     SHARP/Hudson         ○   △   ○
               ed.x       v1.00     SHARP/Hudson         −   ×   ×  「ファイ名の誤りです」として強制終了される。
  ------------ ---------- --------- ------------------- ---- ---- ---- ---------------------------------------
  フリーソフト adp2pcm.r  v1.02     GORRY.               ○   −   −
               aish.x     v1.12     H.Ogasawara (COR.)   ○   −   −
               avi2wav.x  v0.30     Ｙｏｋｋｏ           ○   −   −
               bmp2pic.x  v0.03     Arimac               ○   −   −
               bup.x      v1.2r2    K.Higashide          ○   −   −
               cha2bmp.x  v1.01     Ｙｏｋｋｏ           ○   −   −
               cha2wav.x  v1.00     Ｙｏｋｋｏ           ○   −   −
               dash.x     v1.16     小笠原博之           −   △   ○
               dis.x      v2.06β   K.Abe                ○   △   ○
               float2.x   v1.00p4   T.Tommy              −   ○   ○  T.Tommy版float2.x
               fox.r      v0.9r2    別府政通             ×   ○   ○  run68の仕様により Ctrl-C の処理ができないが、その他はOK。
               gcc.x      v1.26     Mariko／FSF          ○   −   −
               gcc.x      v1.30     Mariko／FSF          −   ○   ○
               gcc2.x     v2.6.3    Charlie／FSF         −   △   △  --version, --verbose が動作する。コンパイルはできない。
               has.x      v3.08     Y.Nakamura           ○   −   −
               has.x      v3.09     Y.Nakamura           −   ○   ○
               hlk.x      v3.01     SALT                 ○   ○   ○
               ish        v1.12     M. Ishizuka          −   ○   ○
               jhack.x    v1.0.2    古場正行             −   ○   ○
               jrogue.x   v1.0      Kazumi Nasu／太田純  ○   −   −
               jrogue.x   v1.2      Kazumi Nasu／太田純  −   △   ○  画面書き換え（cursesライブラリの動作？）が変。
               rogue.x    v1.0      Kazumi Nasu／太田純  −   ○   ○  注)これは jrogue.x v1.2 用のプレイヤーメニュー
               rune.x     v1.40     中上 匠              −   △   △  dirコマンドの出力がまだおかしい。外部コマンドの実行はある程度可。
               lha.x      v2.13r47  岡田紀雄／吉崎栄泰   ○   ○   ○
               lx.r       v1.10     M.Harashino          ○   −   −
               lzx.x(F&I) v0.43.4β Ｆ＆Ｉ               ○   ○   ○
               lzx.x(ITA) v1.04     Itagaki Fumihiko     −   ○   ○
               mic.x      v1.08     milk.                ○   ○   ○  ファイル名の主部が8文字に満たない時、8文字になるまで空白が
                                                                       使用される。いまのところ WIN32 の仕様。
               pascal.x   v1.01     Chack'n & Silkia     ×   ○   ○
               pcm2adp.r  v1.02     GORRY.               ○   −   −
               pt4tobmp.x v1.10     Ｙｏｋｋｏ           ○   −   −
               wav2adp.x  v1.01     Ｙｏｋｋｏ           ○   −   −
               zmusic.x   v2.06     ZENJI SOFT           △   △   −  -Cオプションが動作する。
               ztom.x     v1.27     Y.Yagi.              ○   −   −
               ztom.x     v1.30     Y.Yagi.              ○   ○   −  引数ファイル名の指定形式によって、ファイルが見つからない場合がある。
  ------------ ---------- --------- ------------------- ---- ---- ---- ---------------------------------------
  福袋         as.x       v1.00     SHARP/Hudson         −   ○   ○
  (初代機のみ) lk.x       v1.00     SHARP/Hudson         −   ○   ○
               prncnf.x   v1.00     SHARP/Hudson         −   ×   ×
  ------------ ---------- --------- ------------------- ---- ---- ---- ---------------------------------------
  C compiler   ar.x       v1.00     SHARP/Hudson         ○   −   −
  PRO68K       as.x       v2.10     SHARP/Hudson         −   ○   ○
               bc.x       v1.00     SHARP/Hudson         ○   −   −
               bind.x     v1.00     SHARP/Hudson         −   △   △  ファイルを見つけてくれない。usageは出る。
               cv.x       v1.00     SHARP/Hudson         ○   −   −
               cv.x       v2.10     SHARP/Hudson         −   △   △  「変換できません」で実行できない。usageは出る。
               lk.x       v2.10     SHARP/Hudson         −   ○   ○  float2.x が必要。
  ------------ ---------- --------- ------------------- ---- ---- ---- ---------------------------------------

[EOF]
