

                                暫定版


==============================================================================
デバッグに関係するコマンド・機能
==============================================================================
■DEBUG:0       Debug : Main (CPU #1) デバッグモード
  ※後述

■DEBUG:1       Debug : Disk (CPU #2) デバッグモード
  ※後述

■DEBUG:2       Trace : 逆アセ時のレジスタ表示 (DEBUGGER)
  ・デバッグモードでトレース時に表示される「現在のレジスタ」が
    画面に残るようになります

■DEBUG:4       Trace : PAUSE時のフリップ設定表示 (VIDEO)
  ・*.cfg で FLIP に 2 以上を設定した場合に有効になります
  ・pause/break 時に、各ページに割り当てられた DMA アドレスと
    最後に描画したベージが示されます

■DEBUG:6       Trace : Disk動作トレース ＆ CDOS-II 2HDフォーマットパッチ
  ・ディスクアクセスのプログレス表示を詳細にします
    デバッグモードではこちらに切り替えた方が良いと思います

■DEBUG:7       Trace : キーコード表示 ＆ パネル座標表示
  ・*.cmd や キーボード定義用のコード確認が目的です

------------------------------------------------------------------------------
■DEBUG.step=n  ステップ実行
  ※後述

------------------------------------------------------------------------------
■DEBUG.cmd=n   デバッグコマンド
  ・デバッグコマンドを実行します
  ・デバッグコマンドは *.dbgファイルに記述し、*.cmd に登録したキーで実行します
  ・DEBUG.cmd=14 には「dump」コマンドが登録されています   (デフォルトコマンド)
  ・DEBUG.cmd=15 には「disasm」コマンドが登録されています (デフォルトコマンド)
  ・デバッグコマンド は、ブレイク中にのみ実行可能です
  ・コマンドの種類毎に、最後に実行した「メモリ種別」,「アドレス」を覚えています
    ブレイク直後は
      アドレス  ：ブレイク時に到達したPC
      メモリ種別：無指定
    に初期化されます
  ・「メモリ種別=対象アドレス」が省略されたコマンドをはじめて実行する際は、
      アドレス  ：ブレイク時に到達したPC
      メモリ種別：現在のメモリマップから PC 位置のメモリを判別して選択
    となります
    ※動作中のALUに迷い込んでいた場合は、メインRAM(高速TextVRAM)が表示されます
      このケースは「ステップ(トレース)実行」でしか内容を確認できません
  ・継続実行：
   「メモリ種別=対象アドレス」が省略されたコマンドは「前回」の条件を引き継ぎます
   「前回」には、ブレイク時に自動実行されるコマンドも含まれます
    前回、メモリ種別が指定されていた場合は、その境界に達するとスタックします
    無指定だった場合、現在のメモリマップに従い 0xFFFF まで表示します
    但し、GVRAM, ALU, 辞書ROM エリアに侵入した場合は、メインRAM が表示されます
    ※ブレイク時の PC が、GVRAM, 辞書ROM にあった場合は、まず各エリアが表示され
      さらに続けることで 0xFFFF まで表示します
  ・*.cmd ファイルの設定は j80 起動時に FIX されます
    デバッグコマンドを変更したい場合は、*.dbg ファイル側を修正してください
  ※詳細は sample.dbg を参照してください

------------------------------------------------------------------------------
■Debug:1       メモリ・ダンプ (一括ダンプ)
  ・RAM系のメモリを一括ダンプします
  ・「サウンドボード２」の ADPCM用メモリも落とせます (sound.bus.mem)
  ・disk.mem は ROM,未実装範囲を 0x00 で埋め、アドレスを揃えてあります

■Debug:2       メモリ・ロード (Load Movie)
  ・拡張メモリを一括ロードします
  ・iplディスク(ex. : foo.d88)と同じ場所にある foo.e88 をロードします
  ・apaslothy さんの「動画実験」サポート用の機能です
    http://www5f.biglobe.ne.jp/~apaslothy/
    スタック方式なので、一回再生する度に大量のディスクを食わせる必要があり、
    手間なので用意しました

■Debug:3       メモリマップ表示
  ・メモリの割り当てを表示します

■Debug:4       モニタ(GUI)起動
  ・モニタを立ち上げます
  ・モニタがアクティブになると、エミュレータは停止します
  ・エミュレータ側が停止したタイミングでのみ内容が更新されます
  ・メモリとレジスタを操作できます

■Debug:5       トレーサ(GUI)起動
  ・*.dbg ファイルをドロップできます

------------------------------------------------------------------------------
■+DBG
  ・ブレイクポイント, デバッグコマンドを設定します
  ・ブレイクポイント, デバッグコマンド は、*.dbg ファイルに記述します
  ・*.dbg ファイルを使う場合は、ブレイクポイントにデバッグコマンドを登録して
   「ブレイク時に〜させる」設定も可能です
  ・*dbg ファイルは、ドロップ可能です
  ・*dbg ファイルは、read モードで開くので、(編集ソフトが抱えていなければ)
    開いたまま更新可能です
  ※詳細は sample.dbg を参照してください

■DBG
  ・ブレイクポイント, デバッグコマンドを一時的に無効にしたい場合に使います
  ・無効→有効に変更する際に *.dbg ファイルを読み直します
   「*.dbg 編集→保存 ⇒ DBG コマンド」で更新 が可能です

------------------------------------------------------------------------------
■検討中の機能
  ・メモリ・ロード (bin)
    ・foo.dbg と同じ場所の foo.bin をロードする
    ・いらない？
  ・メモリ・ロード (汎用)
    ・ファイルダイアログで bin を指定する
    ・デバッグモードでは bin のドロップで発動
    ・いらない？
  ・内部診断コマンド
    ・グラフィックモード表示
    ※要望あればメールください

==============================================================================
デバッグモード
==============================================================================
■デバッグモードへの移行 / 通常モードへの復帰
　-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
　DEBUG:0       Debug : Main (CPU #1) デバッグモード@CPU
　DEBUG:1       Debug : Disk (CPU #2) デバッグモード@CPU
------------------------------------------------------------------------------
・CPU毎に切り替え可能です
  どちらかのCPUがデバックモードに移行すると、j80本体もデバッグモードになります
・pause状態でデバッグモードに移行した場合は、一命令実行してブレイクします
・通常モードへの復帰時は、常にpauseが解除された状態になります
・デバッグモードでは、Diskがオフラインの状態でもDisk側CPUは動作を続けます
  (通常モードでは負荷低減のため停止します)

------------------------------------------------------------------------------
■ブレイク / 解除
　-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
　Pause         一時停止 <-> 再開
------------------------------------------------------------------------------
・通常モードの pause/resume と同じです
・ブレイク時に、
　・最後の命令を実行する前のレジスタ値 (省略する場合あり)
　・最後に実行した命令と結果概略
　を表示します

------------------------------------------------------------------------------
■ステップ実行
　-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
　DEBUG.step=0  ステップ実行 (最小ステップを実行してブレイクする)
　-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
　DEBUG.step=1  ステップ実行 (HALT,ブロック転送系は完了までを1ステップとする)
　DEBUG.step=2  ステップ実行 (step=1 + CALL復帰までを1ステップとする)
　DEBUG.step=3  ステップ実行 (step=2 + JR<false>までを1ステップとする)
------------------------------------------------------------------------------
・DEBUG.step=0
　・このコマンドは、MAIN側, DISK側 両方に送られます
　  j80側の制御(進行)に伴い、どちらかのCPUが選択されます
　・フリーラン(スキップ)中は即ブレイクします
　・ブレイク状態からは１ステップ実行してブレイクします
　  ブロック転送などは１ターン(最小ステップ)毎にブレイクします
　
　-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
・DEBUG.step=1~3
　・このコマンドは、ブレイクしていたCPUにのみ送られます
　  もう一方のCPUはフリーランに移行しますのでご注意下さい		★ブレイクポイントもマスクする？
　  上記仕様により、フリーラン(スキップ)中は無視されます
　
　□このコマンドは、ブレイク直前の命令で動作が変わります
　  (「次に実行する命令が例外対象か？」ではない点に注意)
　
　□例外扱いする命令以外を実行後にブレイクしている
　  最小ステップ実行後にブレイクします(DEBUG.step=0 と同じ動作になります)
　
　□例外扱いする命令を実行後にブレイクしている
　 「この後ろの命令に到達する命令」を実行した後にブレイクします
　    ブロック転送,I/O → 最終回
　    CALL             → RET
　    DJNZ,JR<cond>系  → false時(最終回)
　  ※停止条件はアドレスだけなので、step=2,3 ではブレイクしないこともあります
　  ※j80の実装上の問題により step=1 でもブレイクしないことがあります

------------------------------------------------------------------------------
■注意：モードによる動作の違い
------------------------------------------------------------------------------
・「FDD」コマンドによる DiskIF の online / offline 切り替え
  ・通常モード    ：offline にすると、DISK側 CPU は完全に停止します
  ・デバッグモード：offline にしても、DISK側 CPU は動作を続けます

==============================================================================
