この「monitor.htm」は組み込み型モニタの機能が記載されています。
 組み込み型モニタを使用する前に必ずお読みください。 なお、組み込み型モニタはカスタマイズが必要です。カスタマイズについては「readme.htm」を参照ください。
  1. 【機能概要】
  2. 【コマンド詳細】
    1. 1行アセンブル
    2. ブレークポイントの設定、表示、解除
    3. メモリ内容のダンプ
    4. 逆アセンブル
    5. データの書き込み
    6. ユーザプログラムの実行
    7. 内蔵周辺機能の状態表示
    8. ユーザプログラムのダウンロード
    9. メモリ内容の表示、変更
    10. CPUレジスタの一覧表示
    11. シングルステップの実行
    12. CPUレジスタの表示、変更
    13. コマンドヘルプ
    14. 繰り返し実行
    15. コマンド履歴
  3. 【割込み管理】
    1. 内蔵周辺機能割込み管理
    2. アボート管理

問い合わせ先


【機能概要】


(1)組み込み型モニタの概要

 組み込み型モニタは、ユーザの実機システムに組み込まれてユーザプログラムのデバッグ
を行うソフトウェアを言います。デバッグを行う開発装置と言えば、一般にエミュレータを
思い浮かべますが、エミュレータのようにデバッグを行うための機器をほとんど使用しませ
ん。組み込み型モニタは実機システムのROMに格納し、ホスト端末よりダウンロードした
ユーザプログラムのデバッグを行うのです。
 つまり、エミュレータのようなエバチップは必要とせず、実機システム上の実チップを利
用してユーザプログラムのデバッグを行います。このため、エミュレータのようにハードウ
ェアのデバッグは行えませんが、ソフトウェアのデバッグであれば安価にデバッグを行うこ
とができます。


(2)適用範囲と必要資源

 組み込み型モニタは、H8/300H Tinyシリーズの全てのマイコンに適用可能で
す。
 また、組み込み型モニタはRS−232Cを介してホスト端末とインタフェース(コマン
ドの送受信)を行います。従って、実機システム上に通信用のLSIが必要になります。た
だし、H8/300H Tinyシリーズには全てSCIが内蔵されているため、組み込み
型モニタはこの資源を利用してホスト端末とインタフェースを行います。
 最終的に実機システムに必要となる資源は以下の通りです。

 ・ROM領域          −−> 最小約2KByte から 最大約23KByte
 ・RAM領域          −−> 最小約 130Byte から 最大約 380Byte
 ・SCI(ドライバ回路を含む) −−> 1チャネル(チャネル番号は選択可能)


(3)ホスト端末との接続形態

 組み込み型モニタは、RS−232Cを介してホスト端末と接続を行います。このため、
実機システム上にRS−232Cのドライバ回路が必要となります。このドライバは、RS
−232Cを制御できるものであれば何でも構いません。
 また、ホスト端末側の通信ソフトもRS−232Cと直接インタフェースを行えるもので
あれば何でも構いません。
 以下にRS−232Cのインタフェース仕様を示します。

 ・通信速度     −−> 任意(カスタマイズにより変更可能)
 ・データ長     −−> 8ビット長
 ・パリティ制御   −−> なし
 ・ストップビット長 −−> 1ビット
 ・フロー制御    −−> X−ON/OFFあり


(4)機能概要

 組み込み型モニタをフルスペックで使用した場合の機能(コマンド)を以下に示します。
各コマンドの詳細な使い方は【コマンド詳細】(項番1〜15)と【割込み管理】(項番16〜
17)を参照してください。
 なお、下記に示した機能は組み込み型モニタのカスタマイズにより、機能の使用/未使用
が選択できるようになっています。組み込み型モニタのカスタマイズについては【カスタマ
イズ】を参照してください。

 1. Assemble   1行アセンブル
 2. Breakpoint  ブレークポイントの設定、表示、解除
 3. Dump     メモリ内容のダンプ
 4. DisAssemble  逆アセンブル
 5. Fill     データの書き込み
 6. Go      ユーザプログラムの実行
 7. H8 status   内蔵周辺機能の状態表示
 8. Load     ユーザプログラムのダウンロード
 9. Memory    メモリ内容の表示、変更
 10. Register   CPUレジスタの一覧表示
 11. Step     シングルステップの実行
 12. .<register>  CPUレジスタの表示、変更
 13. help     コマンドヘルプ
 14. return    繰り返し実行
 15. <command>.  コマンド履歴
 16. interrupt   内蔵周辺機能割込み管理
 17. abort     アボート管理


(5)割込み管理

 組み込み型モニタは、ユーザプログラムの割込みに対してベクタテーブルの二重化方式を
サポートしています。これにより、以下に示す以外の割込みに対し、当該ベクタアドレスを
仮想的なベクタテーブルに用意するだけで割込み管理を行うことができます。割込み管理の
詳細に関しては【割込み管理】を参照してください。

 ・リセット    −−> 組み込み型モニタの起動用割込みとして使用
 ・ベクタ番号1  −−> シングルステップの制御として使用
 ・ベクタ番号2  −−> ブレークポイントの制御として使用

先頭にもどる


【コマンド詳細】

 次ページより組み込み型モニタが持っているコマンドの詳細を以下の形式で説明します。

《 B (ブレークポイント....) 》 −−> コマンド名

(1)コマンドフォーマット        −−> コマンドの入力方法について説明し
                         ています。(下記のコマンドフォー
                         マットの読み方を参照ください。)

(2)機能                −−> コマンドの機能概要を説明していま
                         す。

(3)解説                −−> コマンド機能の詳細を例を挙げて説
                         明しています。

(4)注意事項              −−> コマンドを使用する上で特に注意す
                         べき事項が記載してあります。

(5)備考                −−> コマンドを使用する上での補足説明
                         が記載してあります。



 コマンドフォーマットの特殊記号は以下に示す意味を持っています。

 ・ "<パラメータ>" は< >で囲まれた内容を指定することを意味します。
 ・ "[ ]" は[ ]で囲まれた内容が省略可能であることを意味します。
 ・ [RET] は改行キーを入力することを意味します。

先頭にもどる


《 A (1行アセンブル) 》


(1)コマンドフォーマット

  : A <アドレス> [RET]

    <アドレス> : 命令を埋め込むメモリの先頭アドレス


(2)機能

 指定されたアドレスより命令を埋め込みます。
 コマンド投入後は下記の操作が可能です。
  ・ [RET] を入力すると2バイト先の番地を表示します。
  ・ ^ [RET] を入力すると2バイト手前の番地を表示します。
  ・ <命令> [RET] を入力するとメモリの内容を<命令>に変更します。
  ・ . [RET] を入力するとAコマンドを終了します。


(3)解説
  : DA 1000 100F [RET]
   <ADDR> <CODE>                <MNEMONIC> <OPERAND>
    1000  0000                  NOP
    1002  0000                  NOP
    1004  0000                  NOP
    1006  0000                  NOP
    1008  0000                  NOP
    100A  0000                  NOP
    100C  0000                  NOP
    100E  0000                  NOP
  : A 1000 [RET]
    1000  >  CMP.B R0L,R1L [RET]
    1002  >  BEQ   1000 [RET]
    1004  >  JSR   @2000:24 [RET]
    1008  >  MOV.L @(100:24,ER3),ER5 [RET]
    1012  >  [RET]
    1014  >  ^ [RET]
    1012  >  RTE [RET]
    1014  >  . [RET]
  : DA 1000 1014 [RET]
   <ADDR> <CODE>                <MNEMONIC> <OPERAND>
    1000  1C89                  CMP.B      R0L,R1L
    1002  47FC                  BEQ        001000:8
    1004  5E002000              JSR        @H'002000:24
    1008  010078306B2500000100  MOV.L      @(H'000100:24,ER3),ER5
    1012  5670                  RTE
    1014  0000                  NOP

(4)注意事項

 アセンブルを行う番地は偶数番地でなければなりません。アドレスを奇数番地とした場合
は「Invalid Start Address」のエラーメッセージを表示します。また、<命令>の中で指定
する値はアドレッシングモードの指定を行う[:2、:3、:8、:16、:24、:32]以外全て16進表
現です。全てが16進表現であるため H' の指定も不要です。


(5)備考

 Aコマンドではオペランドサイズを省略した場合、以下の解釈でオペランドサイズを扱い
ます。
 ・バイトサイズ
	ADD、ADDX、AND、ANDC、BAND、BCLR、BIAND、BILD、BIOR、BIST、BIXOR、BNOT
	BOR、BSET、BST、BTST、BXOR、CMP、DAA、DAS、DEC、DIVXS、DIVXU、EEPMOV、INC
	LDC、MOV、MOVFPE、MOVTPE、MULXS、MULXU、NEG、NOT、OR、ORC、ROTL、ROTR
	ROTXL、ROTXR、SHAL、SHAR、SHLL、SHLR、STC、SUB、SUBX、XOR、XORC
 ・ワードサイズ
	EXTS、EXTU、POP、PUSH
 ・ロングワードサイズ
	ADDS、SUBS

 また、アドレッシングモードは以下の指定が可能です。
 ・レジスタ直接
	R0L 〜 R7L、R0H 〜 R7H、R0 〜 R7、E0 〜 E7、ER0 〜 ER7、SP、CCR
 ・レジスタ間接
	@ER0 〜 @ER7、@SP
 ・ポストインクリメントレジスタ間接
	@ER0+ 〜 @ER7+、@SP+
 ・プリデクリメントレジスタ間接
	@-ER0 〜 @-ER7、@-SP
 ・ディスプレースメント付きレジスタ間接
	@(disp,ER0) 〜 @(disp,ER7)、@(disp,SP)
		指定したディスプレースメントにより8ビット、16ビットディスプレース
		メントを自動的に切り替えます。
	@(disp:8,ER0) 〜 @(disp:8,ER7)、@(disp:8,SP)
		8ビットディスプレースメント付きレジスタ間接
	@(disp:16,ER0) 〜 @(disp:16,ER7)、@(disp:16,SP)
		16ビットディスプレースメント付きレジスタ間接
 ・絶対アドレス
	@abs	指定したアドレスにより8ビット、16ビット、24ビット絶対アドレスを自
		動的に切り替えます。
	@abs:8	8ビット絶対アドレス
	@abs:16	16ビット絶対アドレス
	@abs:24	24ビット絶対アドレス
 ・イミディエイト
	#imm	命令のオペランドサイズにより2ビット、3ビット、8ビット、16ビット
		32ビットイミディエイトを自動的に切り替えます。
	#imm:2	TRAPA命令での2ビットイミディエイト
	#imm:3	ビット操作命令での3ビットイミディエイト
	#imm:8	8ビットイミディエイト
	#imm:16	16ビットイミディエイト
	#imm:32	32ビットイミディエイト
 ・PC相対
	disp	指定した分岐先の番地により8ビット、16ビット相対を自動的に切り替え
		ます。
	disp:8	8ビット相対
	disp:16	16ビット相対
 ・メモリ間接
	@@abs、@@abs:8

先頭にもどる


《 B (ブレークポイントの設定、解除、表示) 》


(1)コマンドフォーマット

 (a) : B <アドレス> [RET]
 (b) : B - [<アドレス>] [RET]
 (c) : B [RET]

    <アドレス> : ブレークポイントを設定、解除するアドレス
      −   : 設定値の解除


(2)機能

 ユーザプログラムを停止するアドレス(ブレークポイント)を設定、解除、表示します。
 (a)最大8個までのブレークポイントが設定できます。
 (b)設定されているブレークポイントを解除します。<アドレス>を省略すると全て解除
    します。
 (c)設定されているブレークポイントを表示します。


(3)解説

 (a)ブレークポイントの設定
  : B 100 [RET]
   H'100番地にブレークポイントを設定します。
   既に設定されているアドレスを指定した場合は「Duplicate Breakpoint」のエラーメ
  ッセージを表示します。
  : B 1000 [RET]
  : B 200 [RET]
   続けてH'1000番地、H'200番地にブレークポイントを設定します。
   設定できるブレークポイントの個数は最大8個までです。ブレークポイントの設定が
  8個を超えた場合は「Full Breakpoint」のエラーメッセージを表示します。
  : B 1500 [RET]
  : G [RET]
    Break at PC=1500
    PC=1500  CCR=80:I.......  SP=FF00
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
   ブレークポイントにユーザプログラムが到達した場合、上記のメッセージを表示して
  ユーザプログラムを停止します。


 (b)ブレークポイントの解除
  : B - 1000 [RET]
   H'1000番地に設定してあるブレークポイントを解除します。
   指定されたアドレスにブレークポイントがない場合は「Not Find Breakpoint」のエ
  ラーメッセージを表示します。
  : B - [RET]
   アドレスを省略すると設定されている全てのブレークポイントを解除します。


 (c)ブレークポイントの表示
  : B [RET]
   <ADDR>
    1000
    0200
  ブレークポイントがH'1000番地、H'200番地に設定してあります。


(4)注意事項

 (a)ブレークポイントをROM領域、内蔵周辺機能のレジスタ領域、およびメモリが接
    続されていない領域に設定した場合、G、Sコマンド実行時の動作は保証されませ
    ん。
 (b)ブレークポイントは命令の先頭アドレスにのみ設定可能です。命令の先頭以外に設
    定した場合、G、Sコマンド実行時の動作は保証されません。

先頭にもどる


《 D (メモリ内容のダンプ) 》


(1)コマンドフォーマット

  : D <アドレス1> [<アドレス2>] [;<サイズ>] [RET]

    <アドレス1> : ダンプするメモリの先頭アドレス
    <アドレス2> : ダンプするメモリの最終アドレス
    <サイズ>   : 表示単位の指定
             B   : 1バイト単位
             W   : 2バイト単位
             L   : 4バイト単位
             省略時 : 1バイト単位


(2)機能

 (a)指定されたメモリ領域の内容を表示します。<アドレス2>が省略された場合、256
    バイトをダンプします。
 (b)メモリダンプの表示は1行16バイト単位です。
 (c)[RET] のみの入力で前のDコマンドで表示したアドレスの次のアドレスから256バ
    イトを連続的にダンプします。


(3)解説

 (a)メモリ内容のダンプ
  : D 1000 [RET]
    <ADDR>                 <  D  A  T  A  >                    < ASCII CODE >
     1000  00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F  "................"
     1010  10 11 12 13 14 15 16 17  18 19 1A 1B 1C 1D 1E 1F  "................"
     1020  20 21 22 23 24 25 26 27  28 29 2A 2B 2C 2D 2E 2F  " !"#$%&'()*+,-./"
     1030  30 31 32 33 34 35 36 37  38 39 3A 3B 3C 3D 3E 3F  "0123456789:;<=>?"
     1040  40 41 42 43 44 45 46 47  48 49 4A 4B 4C 4D 4E 4F  "@ABCDEFGHIJKLMNO"
     1050  50 51 52 53 54 55 56 57  58 59 5A 5B 5C 5D 5E 5F  "PQRSTUVWXYZ[\]^_"
     1060  60 61 62 63 64 65 66 67  68 69 6A 6B 6C 6D 6E 6F  " abcdefghijklmno"
     1070  70 71 72 73 74 75 76 77  78 79 7A 7B 7C 7D 7E 7F  "pqrstuvwxyz{|}~."
     1080  80 81 82 83 84 85 86 87  88 89 8A 8B 8C 8D 8E 8F  "................"
     1090  90 91 92 93 94 95 96 97  98 99 9A 9B 9C 9D 9E 9F  "................"
     10A0  A0 A1 A2 A3 A4 A5 A6 A7  A8 A9 AA AB AC AD AE AF  "................"
     10B0  B0 B1 B2 B3 B4 B5 B6 B7  B8 B9 BA BB BC BD BE BF  "................"
     10C0  C0 C1 C2 C3 C4 C5 C6 C7  C8 C9 CA CB CC CD CE CF  "................"
     10D0  D0 D1 D2 D3 D4 D5 D6 D7  D8 D9 DA DB DC DD DE DF  "................"
     10E0  E0 E1 E2 E3 E4 E5 E6 E7  E8 E9 EA EB EC ED EE EF  "................"
     10F0  F0 F1 F2 F3 F4 F5 F6 F7  F8 F9 FA FB FC FD FE FF  "................"
   H'1000番地よりメモリ内容をダンプします。
   最終アドレスを指定しないと256バイトのメモリ内容をダンプします。
  : D 1030 105B [RET]
   <ADDR>                 <  D  A  T  A  >                    < ASCII CODE >
    1030  30 31 32 33 34 35 36 37  38 39 3A 3B 3C 3D 3E 3F  "0123456789:;<=>?"
    1040  40 41 42 43 44 45 46 47  48 49 4A 4B 4C 4D 4E 4F  "@ABCDEFGHIJKLMNO"
    1050  50 51 52 53 54 55 56 57  58 59 5A 5B              "PQRSTUVWXYZ["
   最終アドレスを指定すると最終アドレスまでのメモリ内容をダンプします。
  : D 1030 105B;W [RET]
   <ADDR>                 <  D  A  T  A  >                    < ASCII CODE >
    1030  3031  3233  3435  3637   3839  3A3B  3C3D  3E3F   "0123456789:;<=>?"
    1040  4041  4243  4445  4647   4849  4A4B  4C4D  4E4F   "@ABCDEFGHIJKLMNO"
    1050  5051  5253  5455  5657   5859  5A5B               "PQRSTUVWXYZ["
   サイズをワード単位とすると2バイト単位でメモリ内容をダンプします。
  : D 1030 105B;L [RET]
   <ADDR>                 <  D  A  T  A  >                    < ASCII CODE >
    1030  30313233    34353637     38393A3B    3C3D3E3F     "0123456789:;<=>?"
    1040  40414243    44454647     48494A4B    4C4D4E4F     "@ABCDEFGHIJKLMNO"
    1050  50515253    54555657     58595A5B                 "PQRSTUVWXYZ["
   サイズをロングワード単位とすると4バイト単位でメモリ内容をダンプします。


 (b)繰り返しの表示
  : D FF0 FFF [RET]
   <ADDR>                 <  D  A  T  A  >                    < ASCII CODE >
    0FF0  40 41 42 43 44 45 46 47  48 49 4A 4B 4C 4D 4E 4F  "@ABCDEFGHIJKLMNO"
  : [RET]
    1000  00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F  "................"
    1010  10 11 12 13 14 15 16 17  18 19 1A 1B 1C 1D 1E 1F  "................"
    1020  20 21 22 23 24 25 26 27  28 29 2A 2B 2C 2D 2E 2F  " !"#$%&'()*+,-./"
    1030  30 31 32 33 34 35 36 37  38 39 3A 3B 3C 3D 3E 3F  "0123456789:;<=>?"
    1040  40 41 42 43 44 45 46 47  48 49 4A 4B 4C 4D 4E 4F  "@ABCDEFGHIJKLMNO"
    1050  50 51 52 53 54 55 56 57  58 59 5A 5B 5C 5D 5E 5F  "PQRSTUVWXYZ[\]^_"
    1060  60 61 62 63 64 65 66 67  68 69 6A 6B 6C 6D 6E 6F  " abcdefghijklmno"
    1070  70 71 72 73 74 75 76 77  78 79 7A 7B 7C 7D 7E 7F  "pqrstuvwxyz{|}~."
    1080  80 81 82 83 84 85 86 87  88 89 8A 8B 8C 8D 8E 8F  "................"
    1090  90 91 92 93 94 95 96 97  98 99 9A 9B 9C 9D 9E 9F  "................"
    10A0  A0 A1 A2 A3 A4 A5 A6 A7  A8 A9 AA AB AC AD AE AF  "................"
    10B0  B0 B1 B2 B3 B4 B5 B6 B7  B8 B9 BA BB BC BD BE BF  "................"
    10C0  C0 C1 C2 C3 C4 C5 C6 C7  C8 C9 CA CB CC CD CE CF  "................"
    10D0  D0 D1 D2 D3 D4 D5 D6 D7  D8 D9 DA DB DC DD DE DF  "................"
    10E0  E0 E1 E2 E3 E4 E5 E6 E7  E8 E9 EA EB EC ED EE EF  "................"
    10F0  F0 F1 F2 F3 F4 F5 F6 F7  F8 F9 FA FB FC FD FE FF  "................"
   Dコマンド実行後に [RET] のみを入力すると、前回ダンプした次のアドレスから再
  び256バイト単位で繰り返しメモリ内容をダンプします。


(4)注意事項

 (a)ワード単位で表示を行う場合、先頭アドレスは偶数番地、最終番地は奇数番地でな
    ければなりません。先頭アドレスが奇数番地の場合は「Invalid Start Address」、
    最終アドレスが偶数番地の場合は「Invalid End Address」のエラーメッセージを
    表示します。
    また、ロングワード単位で表示を行う場合、先頭アドレスは偶数番地、最終番地は
    先頭アドレス+3のN倍の番地でなければなりません。
 (b)Dコマンドで内蔵周辺機能のレジスタ領域を表示した場合、メモリ内容の16進数と
    ASCIIコードの表示が異なることがあります。


(5)備考

 Dコマンドではメモリの内容をリードする際、サイズで指定された単位でメモリ内容のリ
ードを行います。すなわち、表示単位が1バイトの場合はバイトサイズでリードし、表示単
位が2バイトの場合はワードサイズでリードし、表示単位が4バイトの場合はロングワード
サイズでリードを行います。

先頭にもどる


《 DA (逆アセンブル) 》


(1)コマンドフォーマット

  : DA <アドレス1> [<アドレス2>] [RET]

    <アドレス1> : 逆アセンブルするメモリの先頭アドレス
    <アドレス2> : 逆アセンブルするメモリの最終アドレス


(2)機能

 (a)指定されたメモリ領域の内容を逆アセンブルします。<アドレス2>が省略された場
    合、16命令文を逆アセンブルします。
 (b)[RET] のみの入力で前のDAコマンドで表示した次のアドレスから16命令文を連続
    的に逆アセンブルします。


(3)解説

 (a)メモリ内容の逆アセンブル
  : DA 1000 [RET]
   <ADDR> <CODE>                <MNEMONIC> <OPERAND>
    1000  6CD3                  MOV.B      R3H,@-ER5
    1002  0A0B                  INC.B      R3L
    1004  7A0100001028          MOV.L      #H'00001028:32,ER1
    100A  5C0002DA              BSR        12E8:16
    100E  40C8                  BRA        0FD8:8
    1010  5C0002C4              BSR        12D8:16
    1014  7A050020FF56          MOV.L      #H'0020FF56:32,ER5
    101A  FB0F                  MOV.B      #H'0F:8,R3L
    101C  1A80                  SUB.L      ER0,ER0
    101E  01006DD0              MOV.L      ER0,@-ER5
    1022  1A0B                  DEC.B      R3L
    1024  46F8                  BNE        101E:8
    1026  5470                  RTS
    1028  0820                  ADD.B      R2H,R0H
    102A  0800                  ADD.B      R0H,R0H
    102C  6E68000A              MOV.B      @(H'00000A:16,ER6),R0L
   最終アドレスを指定しないと16命令文の逆アセンブルを行います。
  : DA 1000 1005 [RET]
   <ADDR> <CODE>                <MNEMONIC> <OPERAND>
    1000  6CD3                  MOV.B      R3H,@-ER5
    1002  0A0B                  INC.B      R3L
    1004  7A0100001028          MOV.L      #H'00001028:32,ER1
   最終アドレスを指定すると最終アドレスを含む命令まで逆アセンブルを行います。


 (b)繰り返しの表示
  : DA 1000 1005 [RET]
   <ADDR> <CODE>                <MNEMONIC> <OPERAND>
    1000  6CD3                  MOV.B      R3H,@-ER5
    1002  0A0B                  INC.B      R3L
    1004  7A0100001028          MOV.L      #H'00001028:32,ER1
  : [RET]
    100A  5C0002DA              BSR        12E8:16
    100E  40C8                  BRA        0FD8:8
    1010  5C0002C4              BSR        12D8:16
    1014  7A050020FF56          MOV.L      #H'0020FF56:32,ER5
    101A  FB0F                  MOV.B      #H'0F:8,R3L
    101C  1A80                  SUB.L      ER0,ER0
    101E  01006DD0              MOV.L      ER0,@-ER5
    1022  1A0B                  DEC.B      R3L
    1024  46F8                  BNE        101E:8
    1026  5470                  RTS
    1028  0820                  ADD.B      R2H,R0H
    102A  0800                  ADD.B      R0H,R0H
    102C  6E68000A              MOV.B      @(H'00000A:16,ER6),R0L
    1030  474C                  BEQ        107E:8
    1032  0F95                  MOV.L      ER1,ER5
    1034  01006D56              MOV.L      @ER5+,ER6
   DAコマンド実行後に [RET] のみを入力すると、前回のDAコマンドの最終アドレ
  スを含む次のアドレスから再び16命令文の逆アセンブルを繰り返し行います。

先頭にもどる


《 F (データの書き込み) 》


(1)コマンドフォーマット

  : F <アドレス1> <アドレス2> <書き込みデータ> [RET]

    <アドレス1>   : 書き込みするメモリの先頭アドレス
    <アドレス2>   : 書き込みするメモリの最終アドレス
    <書き込みデータ> : 1バイトの書き込みデータ


(2)機能

 指定されたメモリ領域に、<書き込みデータ>で指定された1バイトのデータを書き込みま
す。


(3)解説

 (a)データの書き込み
  : F 1000 10FF AA [RET]
   H'1000番地からH'10FF番地までのメモリ領域に対してH'AAのデータを書き込みます。


 (b)データの書き込みの失敗
  : F 0000 01FF 55 [RET]
    Failed at 0015 , Write = 55 , Read = 04
   Fコマンドでは書き込みデータのベリファイチェックを行います。ベリファイチェッ
  クでエラーが検出された場合は上記のメッセージを表示します。

先頭にもどる


《 G (ユーザプログラムの実行) 》


(1)コマンドフォーマット

  : G [<アドレス>] [RET]

    <アドレス> : 実行するユーザプログラムの先頭アドレス


(2)機能

 現在のプログラムカウンタ値ないしは、<アドレス>で指定したアドレスよりユーザプログ
ラムを実行します。


(3)解説

 (a)ユーザプログラムの実行
  : G [RET]
   現在のプログラムカウンタ値よりユーザプログラムを実行します。
  : G 1000 [RET]
   H'1000番地よりユーザプログラムを実行します。


 (b)ユーザプログラムの停止
  : B 1500 [RET]
  : G [RET]
    Break at PC=1500
    PC=1500  CCR=80:I.......  SP=FF00
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
   ブレークポイントに到達するとユーザプログラムは停止します。
  : G 1010 [RET]
  NMI(Abort Switch ON)入力
    Abort at PC=3014
    PC=3014  CCR=80:I.......  SP=FF00
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
   NMI入力を行うとユーザプログラムを強制停止します。


(4)注意事項

 実行する最初の命令が不当命令の場合は「Invalid Instruction」のエラーメッセージを
表示し、ユーザプログラムの実行を行いません。

先頭にもどる


《 H8 (内蔵周辺機能の状態表示) 》


(1)コマンドフォーマット

  : H8 [<周辺機能名>] [RET]

    <周辺機能名> : 状態表示したい周辺機能の名称
     H8/3664の場合  TA   - Timer A
                TV   - Timer V
                TW   - Timer W
                SCI3 - Serial Communication Interface 3
                A/D  - A/D converter
                WDT  - Watch Dog Timer
                IIC  - IIC bus interface
                ABRK - Address BReaK
                I/O  - I/O port
                INT  - INTerrupt,etc


(2)機能

 内蔵周辺機能のレジスタの状態を表示します。


(3)解説

 (a)I/0ポートの表示
  : H8 I/O [RET]
   <REG>  <ADDR> <CODE>   < 7      6      5      4      3      2      1      0 >
   PMR1    FFE0 0000..10   IRQ3   IRQ2   IRQ1   IRQ0                 TXD    TMOW
   PMR5    FFE1 ..000000                 WKP5   WKP4   WKP3   WKP2   WKP1   WKP0
   PCR1    FFE4 FF
   PDR1    FFD4 0111.000   IRQ3   IRQ2   IRQ1   IRQ0                        TMOW
                           TRGV
   PUCR1   FFD0 0000.000
   PCR2    FFE5 FF
   PDR2    FFD5 .....111                                      TXD    RXD    SCK3
   PCR5    FFE8 FF
   PDR5    FFD8 00000001   SCL    SDA    WKP5   WKP4   WKP3   WKP2   WKP1   WKP0
                                        ADTRG
   PUCR5   FFD1 00000000
   PCR7    FFEA FF
   PDR7    FFDA .000....          TMOV  TMCIV  TMRIV
   PCR8    FFEB FF
   PDR8    FFDB 11110000                       FTIOD  FTIOC  FTIOB  FTIOA   FTCI
   PDRB    FFDD 00010010   AN7    AN6    AN5    AN4    AN3    AN2    AN1    AN0
   I/Oポートの状態表示では、現状の動作モードで使用可能なものを表示します。
   <REG>ではレジスタの名称、<ADDR>ではレジスタの番地、<CODE>ではレジスタの値を
  表示します。なお、<CODE>では各レジスタの仕様に合わせて、バイト単位またはビット
  単位で値を表示します。また、<76543210>では各I/Oポートとの兼用端子機能を表示
  します。


 (b)I/0ポート以外の表示
  : H8 TW [RET]
   <REG>  <ADDR> <CODE>   < 7      6      5      4      3      2      1      0 >
   TMRW    FF80 0.00.000   CTS          BUFEB  BUFEA          PWMD   PWMC   PWMB
   TCRW    FF81 00000000   CCLR   CKS2   CKS1   CKS0   TOD    TOC    TOB    TOA
   TIERW   FF82 0...0000   OVIE                       IMIED  IMIEC  IMIEB  IMIEA
   TSRW    FF83 0...0000   OVF                         IMFD   IMFC   IMFB   IMFA
   TIOR0   FF84 .000.000          IOB2   IOB1   IOB0          IOA2   IOA1   IOA0
   TIOR1   FF85 .000.000          IOD2   IOD1   IOD0          IOC2   IOC1   IOC0
   TCNT    FF86 0000
   GRA     FF88 FFFF
   GRB     FF8A FFFF
   GRC     FF8C FFFF
   GRD     FF8E FFFF
  : H8 A/D [RET]
   <REG>  <ADDR> <CODE>   < 7      6      5      4      3      2      1      0 >
   ADDRA   FFB0 0000
   ADDRB   FFB2 0000
   ADDRC   FFB4 0000
   ADDRD   FFB6 0000
   ADCSR   FFB8 00000000   ADF    ADIE   ADST   SCAN   CKS    CH2    CH1    CH0
   ADCR    FFB9 0.......   TRGE
   I/Oポート以外の状態表示では、指定された周辺機能の状態を表示します。
   <REG>ではレジスタの名称、<ADDR>ではレジスタの番地、<CODE>ではレジスタの値を
  表示します。なお、<CODE>では各レジスタの仕様に合わせて、ロングワード単位、ワー
  ド単位、バイト単位またはビット単位で値を表示します。また、<76543210>ではビット
  単位に意味のあるレジスタのみ対応するビットの意味を表示します。

先頭にもどる


《 L (ユーザプログラムのダウンロード) 》


(1)コマンドフォーマット

  : L [RET]


(2)機能

 ホスト端末より、指定されたSタイプフォーマットのロードモジュールをメモリ上にダウ
ンロードします。


(3)解説

 (a)ユーザプログラムのダウンロード
  : L [RET]  <-- コマンド投入後、ホスト端末よりプログラムをファイル転送する。
    Top Address=1000
    End Address=136F

 (b)ダウンロードの失敗
  : L [RET]
    ********  S Type Format Error  ********
   Sタイプフォーマットでないロードモジュールを転送すると上記のエラーメッセージ
  を表示します。
  : L [RET]
    ********  Check Sum Error  ********
   チェックサムが不正の場合は上記のエラーメッセージを表示します。


(4)注意事項

 (a)Lコマンド投入後、ホスト端末の通信ソフトを利用してロードモジュールをファイ
    ル転送(テキストファイルの転送)してください。
 (b)LコマンドはSタイプフォーマットのロードモジュールしかダウンロードできませ
    ん。

先頭にもどる


《 M (メモリ内容の表示、変更) 》


(1)コマンドフォーマット

  : M <アドレス> [;<サイズ>] [RET]

    <アドレス> : 表示、変更を行うメモリの先頭アドレス
    <サイズ>  : 表示、変更の単位の指定
            B   : 1バイト単位
            W   : 2バイト単位
            L   : 4バイト単位
            省略時 : 1バイト単位


(2)機能

 指定されたアドレスのメモリ内容を<サイズ>で指定した単位で表示、変更します。
 コマンド投入後は下記の操作が可能です。
  ・ [RET] を入力すると次のメモリ内容を表示します。
  ・ ^ [RET] を入力すると前のメモリ内容を表示します。
  ・ <データ> [RET] を入力するとメモリの内容を<データ>に変更します。
  ・ . [RET] を入力するとMコマンドを終了します。


(3)解説

 (a)バイト単位の表示、変更
  : M 1000 [RET]
    1000  00  ?  [RET]
    1001  3B  ?  AA [RET]
    1002  23  ?  BC [RET]
    1003  D5  ?  ^ [RET]
    1002  BC  ?  ^ [RET]
    1001  AA  ?  . [RET]
   H'1001番地とH'1002番地の内容をH'AAとH'BCに変更します。


 (b)ワード単位の表示、変更
  : M 1000;W [RET]
    1000  BCD5  ?  1234 [RET]
    1002  67D1  ?  ABCD [RET]
    1004  B80A  ?  ^ [RET]
    1002  ABCD  ?  ^ [RET]
    1000  1234  ?  [RET]
    1002  ABCD  ?  [RET]
    1004  B80A  ?  . [RET]
   H'1000番地からH'1003番地までの内容をH'1234とH'ABCDに変更します。


 (c)ロングワード単位の表示、変更
  : M 1000;L [RET]
    1000  BCD567D1  ?  12345678 [RET]
    1004  B80AABCD  ?  ABCDEF [RET]
    1008  72DFEA00  ?  ^ [RET]
    1004  00ABCDEF  ?  ^ [RET]
    1000  12345678  ?  [RET]
    1004  00ABCDEF  ?  . [RET]
   H'1000番地からH'1007番地までの内容をH'12345678とH'00ABCDEFに変更します。


 (d)ベリファイチェック
  : M 1000 [RET]
    1000  BC  ?  34 [RET]
    1001  D1  ?  AB [RET]
    1002  B8  ?  12 [RET]
    **** Verify Error ****
    1002  B8  ?  
   Mコマンドではメモリ内容の変更の際にベリファイエラーが検出されると、再び当該
  アドレスの内容を表示してコマンド待ち状態となります。なお、内蔵周辺機能のレジス
  タ領域に対してはベリファイチェックを行いません。


(4)注意事項

 ワード単位、ロングワード単位でメモリの表示、変更を行う場合は、アドレスは偶数番地
でなければなりません。アドレスを奇数番地とした場合は「Invalid Start Address」のエ
ラーメッセージを表示します。


(5)備考

 Mコマンドではメモリの内容をリード/ライトする際、サイズで指定された単位でリード
/ライトを行います。すなわち、サイズが1バイトの場合はバイトサイズでリード/ライト
し、サイズが2バイトの場合はワードサイズでリード/ライトし、サイズが4バイト単位の
場合はロングワードサイズでリード/ライトを行います。

先頭にもどる


《 R (CPUレジスタの一覧表示) 》


(1)コマンドフォーマット

  : R [RET]


(2)機能

 CPUのコントロールレジスタ、汎用レジスタの一覧を表示します。


(3)解説
  : R [RET]
    PC=0000  CCR=FF:IUHUNZVC  SP=FF00
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
   PC  : プログラムカウンタ
   CCR : コンディションコードレジスタ
   [IUHUNZVC] : I : 割込みマスク・ビット   U : ユーザ・割込みマスク・ビット
          H : ハーフ・キャリー・フラグ U : ユーザ・ビット
          N : ネガティブ・フラグ    Z : ゼロ・フラグ
          V : オーバフロー・フラグ   C : キャリー・フラグ
   SP : スタックポインタ
   ER0〜ER7 : 汎用レジスタ

先頭にもどる


《 S (シングルステップの実行) 》


(1)コマンドフォーマット

  : S [<実行ステップ数>] [RET]

    <実行ステップ数> : 実行する命令数(10進数2桁で表現)


(2)機能

 ユーザプログラムのシングルステップ実行を行い、レジスタ内容と実行した命令を表示し
ます。
 (a)現在のプログラムカウンタ値から指定された命令数分のユーザプログラムを実行し
    ます。
 (b)実行ステップ数が省略されると1命令だけユーザプログラムを実行します。
 (c)実行ステップ数で0を指定すると100命令分ユーザプログラムを実行します。
 (d)[RET] のみの入力で前のSコマンドで実行した命令の次の命令から再び指定された
    命令数分ユーザプログラムを実行します。


(3)解説

 (a)1命令だけの実行
  : S [RET]
    PC=0106  CCR=80:I.......  SP=FF00
    ER0=01234567  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
    0100  7A0001234567          MOV.L      #H'01234567:32,ER0
   実行ステップ数が省略されると1命令だけユーザプログラムを実行します。


 (b)複数命令の実行
  : S 3 [RET]
    PC=0106  CCR=80:I.......  SP=FF00
    ER0=01234567  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
    0100  7A0001234567          MOV.L      #H'01234567:32,ER0
  
    PC=010C  CCR=88:I...N...  SP=FF00
    ER0=01234567  ER1=89ABCDEF  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
    0106  7A0189ABCDEF          MOV.L      #H'89ABCDEF:32,ER1
  
    PC=010E  CCR=80:I.......  SP=FF00
    ER0=01234567  ER1=89ABCDEF  ER2=01234567  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
    010C  0F82                  MOV.L      ER0,ER2
   実行ステップ数を指定すると指定された命令数分だけ連続的にユーザプログラムを実
  行します。


 (c)繰り返しの実行
  : S [RET]
    PC=0106  CCR=80:I.......  SP=FF00
    ER0=01234567  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
    0100  7A0001234567          MOV.L      #H'01234567:32,ER0
  : [RET]
    PC=010C  CCR=88:I...N...  SP=FF00
    ER0=01234567  ER1=89ABCDEF  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
    0106  7A0189ABCDEF          MOV.L      #H'89ABCDEF:32,ER1
  : [RET]
    PC=010E  CCR=80:I.......  SP=FF00
    ER0=01234567  ER1=89ABCDEF  ER2=01234567  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
    010C  0F82                  MOV.L      ER0,ER2
   Sコマンド実行後に [RET] のみを入力すると、前回のSコマンドで実行した次の命
  令から再び指定された命令数分(上記の場合1命令)ユーザプログラムを実行します。


(4)注意事項

 実行する命令が不当命令の場合は「Invalid Instruction」のエラーメッセージを表示し
ユーザプログラムの実行を行いません。

先頭にもどる


《 .<register> (CPUレジスタの表示、変更) 》


(1)コマンドフォーマット

  : . <レジスタ名> [<データ>] [RET]

    <レジスタ名> : 表示、変更を行うCPUのレジスタ名
    <データ>   : 設定値


(2)機能

 CPUのコントロール/汎用レジスタの内容を表示、変更します。
 <データ>を指定すると当該のレジスタのみ変更を行います。
 <データ>を省略すると当該のレジスタから順番に会話形式でレジスタ値の表示、変更を行
います。
  ・ [RET] を入力すると次のレジスタ内容を表示します。
  ・ ^ [RET] を入力すると前のレジスタ内容を表示します。
  ・ <データ> [RET] を入力するとレジスタの内容を<データ>に変更します。
  ・ . [RET] を入力するとコマンドを終了します。
 なお、レジスタの表示順は以下の通りです。
  ER0, ER1, ER2, ER3, ER4, ER5, ER6, ER7, PC, CCR, SP
  R0,  R1,  R2,  R3,  R4,  R5,  R6,  R7
  E0,  E1,  E2,  E3,  E4,  E5,  E6,  E7
  R0L, R1L, R2L, R3L, R4L, R5L, R6L, R7L
  R0H, R1H, R2H, R3H, R4H, R5H, R6H, R7H


(3)解説

 (a)レジスタの変更
  : R [RET]
    PC=0000  CCR=FF:IUHUNZVC  SP=FF00
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
  : .ER0 12345678 [RET]
  : .R1 ABCD [RET]
  : .R2L EF [RET]
  : R [RET]
    PC=0000  CCR=FF:IUHUNZVC  SP=FF00
    ER0=12345678  ER1=0000ABCD  ER2=000000EF  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
   <データ>を指定すると当該レジスタのみ変更を行います。


 (b)レジスタの表示、変更
  : R [RET]
    PC=0000  CCR=80:I.......  SP=FF00
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
  : .ER6 [RET]
    ER6=00000000  ?  12345678 [RET]
    ER7=0000FF00  ?  [RET]
    PC=0000  ?  0100 [RET]
    CCR=80  ?  [RET]
    SP=FF00  ?  ^ [RET]
    CCR=80  ?  ^ [RET]
    PC=0100  ?  ^ [RET]
    ER7=0000FF00  ?  FF10 [RET]
    PC=0100  ?  . [RET]
  : R [RET]
    PC=0100  CCR=80:I.......  SP=FF10
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=12345678  ER7=0000FF10
   <データ>を省略すると会話形式でレジスタの表示、変更を行います。

先頭にもどる


《 help (コマンドヘルプ) 》


(1)コマンドフォーマット

  : [<コマンド名>] ? [RET]

    <コマンド名> : 使用方法を表示したいコマンドの名称


(2)機能

 コマンドの使用方法を表示します。
 (a)<コマンド名>を省略するとモニタが持っているコマンドの一覧を表示します。
 (b)<コマンド名>を指定すると該当のコマンドの使用方法を表示します。


(3)解説

 (a)コマンドの一覧表示
  : ? [RET]
   Monitor Vector 0000 - 00FF
   Monitor ROM    0100 - 4BB5
   Monitor RAM    FB80 - FC3F
   User    Vector FC40 - FD3F
  
   .  : Changes contents of H8/300H registers.
   A  : Assembles source sentences from the keyboard.
   B  : Sets or displays or clear breakpoint(s).
   D  : Displays memory contents.
   DA : Disassembles memory contents.
   F  : Fills specified memory range with data.
   G  : Executes real-time emulation.
   H8 : Displays contents of H8/3664 peripheral registers.
   L  : Loads user program into memory from host system.
   M  : Changes memory contents.
   R  : Displays contents of H8/300H registers.
   S  : Executes single emulation(s) and displays instruction and registers.
   <コマンド名>を省略するとモニタのメモリマップ及びコマンドの一覧を表示します。


 (b)コマンドの詳細表示
  : B ? [RET]
   1. Sets breakpoint at specified address.
        B <address> [RET]
   2. Displays breakpoint(s).
        B [RET]
   3. Clear breakpoint(s).
        B - [<address>] [RET]
     <address> : address of breakpoint
  : D ? [RET]
   Displays memory contents.
        D <address1> [<address2>] [;<size>] [RET]
     <address1> : dump area start address
     <address2> : dump area end   address
     <size>     : B -- byte
                  W -- word
                  L -- long word
  : F ? [RET]
   Fills specified memory range with data.
        F <address1> <address2> <data> [RET]
     <address1> : filling area start address
     <address2> : filling area end   address
     <data>     : filling byte data
  : H8 ? [RET]
   Displays contents of H8/3664 peripheral registers.
        H8 <name> [RET]
     <name> : TA   - Timer A
              TV   - Timer V
              TW   - Timer W
              SCI3 - Serial Communication Interface 3
              A/D  - A/D converter
              WDT  - Watch Dog Timer
              IIC  - IIC bus interface
              ABRK - Address BReaK
              I/O  - I/O port
              INT  - INTerrupt,etc
   <コマンド名>を指定すると当該コマンドの詳細な使い方を表示します。

先頭にもどる


《 return (繰り返し実行) 》


(1)コマンドフォーマット

  : [RET]


(2)機能

 D、DA、Sコマンドの [RET] のみによる繰り返し実行を行います。


(3)解説

 (a)Dコマンドの繰り返し実行
  : D FF0 FFF [RET]
   <ADDR>                 <  D  A  T  A  >                    < ASCII CODE >
    0FF0  40 41 42 43 44 45 46 47  48 49 4A 4B 4C 4D 4E 4F  "@ABCDEFGHIJKLMNO"
  : [RET]
    1000  00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F  "................"
    1010  10 11 12 13 14 15 16 17  18 19 1A 1B 1C 1D 1E 1F  "................"
    1020  20 21 22 23 24 25 26 27  28 29 2A 2B 2C 2D 2E 2F  " !"#$%&'()*+,-./"
    1030  30 31 32 33 34 35 36 37  38 39 3A 3B 3C 3D 3E 3F  "0123456789:;<=>?"
    1040  40 41 42 43 44 45 46 47  48 49 4A 4B 4C 4D 4E 4F  "@ABCDEFGHIJKLMNO"
    1050  50 51 52 53 54 55 56 57  58 59 5A 5B 5C 5D 5E 5F  "PQRSTUVWXYZ[\]^_"
    1060  60 61 62 63 64 65 66 67  68 69 6A 6B 6C 6D 6E 6F  " abcdefghijklmno"
    1070  70 71 72 73 74 75 76 77  78 79 7A 7B 7C 7D 7E 7F  "pqrstuvwxyz{|}~."
    1080  80 81 82 83 84 85 86 87  88 89 8A 8B 8C 8D 8E 8F  "................"
    1090  90 91 92 93 94 95 96 97  98 99 9A 9B 9C 9D 9E 9F  "................"
    10A0  A0 A1 A2 A3 A4 A5 A6 A7  A8 A9 AA AB AC AD AE AF  "................"
    10B0  B0 B1 B2 B3 B4 B5 B6 B7  B8 B9 BA BB BC BD BE BF  "................"
    10C0  C0 C1 C2 C3 C4 C5 C6 C7  C8 C9 CA CB CC CD CE CF  "................"
    10D0  D0 D1 D2 D3 D4 D5 D6 D7  D8 D9 DA DB DC DD DE DF  "................"
    10E0  E0 E1 E2 E3 E4 E5 E6 E7  E8 E9 EA EB EC ED EE EF  "................"
    10F0  F0 F1 F2 F3 F4 F5 F6 F7  F8 F9 FA FB FC FD FE FF  "................"
   Dコマンド実行後に [RET] のみを入力すると、前回ダンプした次のアドレスから再
  び256バイト単位で繰り返しメモリ内容をダンプします。


 (b)DAコマンドの繰り返し実行
  : DA 1000 1005 [RET]
   <ADDR> <CODE>                <MNEMONIC> <OPERAND>
    1000  6CD3                  MOV.B      R3H,@-ER5
    1002  0A0B                  INC.B      R3L
    1004  7A0100001028          MOV.L      #H'00001028:32,ER1
  : [RET]
    100A  5C0002DA              BSR        12E8:16
    100E  40C8                  BRA        0FD8:8
    1010  5C0002C4              BSR        12D8:16
    1014  7A050020FF56          MOV.L      #H'0020FF56:32,ER5
    101A  FB0F                  MOV.B      #H'0F:8,R3L
    101C  1A80                  SUB.L      ER0,ER0
    101E  01006DD0              MOV.L      ER0,@-ER5
    1022  1A0B                  DEC.B      R3L
    1024  46F8                  BNE        101E:8
    1026  5470                  RTS
    1028  0820                  ADD.B      R2H,R0H
    102A  0800                  ADD.B      R0H,R0H
    102C  6E68000A              MOV.B      @(H'00000A:16,ER6),R0L
    1030  474C                  BEQ        107E:8
    1032  0F95                  MOV.L      ER1,ER5
    1034  01006D56              MOV.L      @ER5+,ER6
   DAコマンド実行後に [RET] のみを入力すると、前回のDAコマンドの最終アドレ
  スを含む次のアドレスから再び16命令文の逆アセンブルを繰り返し行います。


 (c)Sコマンドの繰り返し実行
  : S [RET]
    PC=0106  CCR=80:I.......  SP=FF00
    ER0=01234567  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
    0100  7A0001234567          MOV.L      #H'01234567:32,ER0
  : [RET]
    PC=010C  CCR=88:I...N...  SP=FF00
    ER0=01234567  ER1=89ABCDEF  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
    0106  7A0189ABCDEF          MOV.L      #H'89ABCDEF:32,ER1
  : [RET]
    PC=010E  CCR=80:I.......  SP=FF00
    ER0=01234567  ER1=89ABCDEF  ER2=01234567  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
    010C  0F82                  MOV.L      ER0,ER2
   Sコマンド実行後に [RET] のみを入力すると、前回のSコマンドで実行した次の命
  令から再び指定された命令数分(上記の場合1命令)ユーザプログラムを実行します。

先頭にもどる


《 <command>. (コマンド履歴) 》


(1)コマンドフォーマット

  : <コマンド名> . [RET]

    <コマンド名> : 前回の内容を表示したいコマンドの名称
            D、DA、F、H8、L、Mが指定可能


(2)機能

 指定されたコマンドの前回の内容を表示し、キーボード入力待ち状態となります。


(3)解説

 (a)コマンド履歴表示
  : DA 1000 1005 [RET]
   <ADDR> <CODE>                <MNEMONIC> <OPERAND>
    1000  6CD3                  MOV.B      R3H,@-ER5
    1002  0A0B                  INC.B      R3L
    1004  7A0100001028          MOV.L      #H'00001028:32,ER1
  : DA. [RET]
  : DA 1000 1005
   指定されたコマンドの前回の内容を表示し、キーボード入力待ち状態となります。


 (b)別コマンド実行後のコマンド履歴表示
  : DA 1000 1005 [RET]
   <ADDR> <CODE>                <MNEMONIC> <OPERAND>
    1000  6CD3                  MOV.B      R3H,@-ER5
    1002  0A0B                  INC.B      R3L
    1004  7A0100001028          MOV.L      #H'00001028:32,ER1
  : R [RET]
    PC=0000  CCR=80:I.......  SP=FF00
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
  : DA. [RET]
  : DA 1000 1005
   他のコマンドを実行後でもコマンド履歴を使用できます。

先頭にもどる


【割込み管理】

 組み込み型モニタは、ユーザプログラムの割込みに対してベクタテーブルの二重化方式を
サポートしています。これにより、以下に示す組み込み型モニタ予約の割込み以外に対し、
当該ベクタアドレスを仮想的なベクタテーブルに用意するだけで割込み管理を行うことがで
きます。

 ・リセット    −−> 組み込み型モニタの起動用割込みとして使用
 ・ベクタ番号1  −−> シングルステップの制御として使用
 ・ベクタ番号2  −−> ブレークポイントの制御として使用


(1)ベクタテーブルの二重化方式

 ベクタテーブルの二重化方式とは、本来 H'0000 番地から配置すべきベクタテーブルを別
のRAM領域から配置することを言います。つまり、実機システムでは H'0000 番地以降の
数バイトはベクタテーブルを配置するためROM領域となります。組み込み型モニタを使用
した場合もこれを変更することはできません。しかし、ユーザプログラムをホスト端末より
ダウンロードしてデバッグする場合、ユーザプログラムのベクタテーブルもホスト端末より
ダウンロードすることになります。すると、ROM領域にユーザプログラムのベクタテーブ
ルをダウンロードすることになってしまいます。当然の事ながらROM領域にユーザプログ
ラムをダウンロードはできません。そこで、組み込み型モニタではユーザプログラムのベク
タテーブルを別のRAM領域(仮想ベクタ領域)から配置し、割込み発生時はそのベクタテ
ーブルを参照してユーザの割込みプログラムに起動をかけます。なお、仮想ベクタ領域はカ
スタマイズによりRAM領域であれば何番地からでも配置可能です。

 以下に仮想ベクタ領域を H'8000 番地から配置した場合の例を示します。

                本来のベクタアドレス     仮想ベクタアドレス
  リセットPC初期値      H'0000 〜 H'0001      H'8000 〜 H'8001
  (システム予約)       H'0002 〜 H'000D      H'8002 〜 H'800D
  外部割込み NMI      H'000E 〜 H'000F      H'800E 〜 H'800F
  TRAPA #0命令     H'0010 〜 H'0011      H'8010 〜 H'8011
  TRAPA #1命令     H'0012 〜 H'0013      H'8012 〜 H'8013
  TRAPA #2命令     H'0014 〜 H'0015      H'8014 〜 H'8015
  TRAPA #3命令     H'0016 〜 H'0017      H'8016 〜 H'8017


(2)組み込み型モニタ予約の割込み

 以下に示す割込みは組み込み型モニタ予約の割込みです。これらの割込みに対してユーザ
が割込みプログラムを記述することはできません。

 ・リセット    −−> 組み込み型モニタの起動用割込みとして使用
 ・ベクタ番号1  −−> シングルステップの制御として使用
 ・ベクタ番号2  −−> ブレークポイントの制御として使用

 これらの割込みが発生した場合、組み込み型モニタは以下のメッセージを表示します。


 (a)リセット
   H8/3664 Series Normal Mode Monitor Ver. 2.0A
   Copyright (C) 2003 Renesas Technology Corp.
   リセットが入力されると組み込み型モニタは初期化処理を行い上記のメッセージを表
  示し、コマンド待ち状態に入ります。


 (b)ベクタ番号1
  : DA 0100 0104 [RET]
   <ADDR> <CODE>                <MNEMONIC> <OPERAND>
    0100  0000                  NOP
    0102  5B04                  JMP        @@H'02:8
    0104  0000                  NOP
  : G 200100 [RET]
    @@H'02:8 Addressing !!
    PC=0000  CCR=80:I.......  SP=FF00
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
   ユーザプログラム実行中にベクタ番号1の割込み(メモリ間接)が発生すると、上記
  のメッセージを表示してユーザプログラムの実行を停止します。


 (c)ベクタ番号2
  : DA 0100 0104 [RET]
   <ADDR> <CODE>                <MNEMONIC> <OPERAND>
    0100  0000                  NOP
    0102  5F08                  JSR        @@H'04:8
    0104  0000                  NOP
  : G 0100 [RET]
    @@H'04:8 Addressing !!
    PC=0000  CCR=80:I.......  SP=FEFE
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FEFE
   ユーザプログラム実行中にベクタ番号2の割込み(メモリ間接)が発生すると、上記
  のメッセージを表示してユーザプログラムの実行を停止します。


(3)未定義割込み

 組み込み型モニタ予約の割込み以外の割込みは、仮想ベクタテーブルに割込みプログラム
のアドレスを記述するだけでサポートすることができます。ただし、このベクタアドレスが
記述されていない割込みが発生した場合、組み込み型モニタは以下に示すような割込み対応
のメッセージを表示してユーザプログラムの実行を停止します。
 (下記の例は全て仮想ベクタ領域を H'200000 番地から配置したの場合の例です)


 (a)JMP命令のメモリ間接
  : D 8008 0009;W [RET]  ( @@H'08:8 の仮想ベクタ領域 )
   <ADDR>                 <  D  A  T  A  >                     < ASCII CODE >
    8008  0000                                               ".."
  : DA 100 102 [RET]
   <ADDR> <CODE>                <MNEMONIC> <OPERAND>
    0100  0000                  NOP
    0102  5B10                  JMP        @@H'08:8
  : G 100 [RET]
    @@H'08:8 Addressing !!
    PC=0000  CCR=80:I.......  SP=FF00
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
   未定義( H'8008 〜 H'8009 がゼロ)のメモリ間接を利用したJMP命令が発生する
  と、上記のメッセージを表示してユーザプログラムの実行を停止します。


 (b)JSR命令のメモリ間接
  : D 800A 800B;W [RET]  ( @@H'0A:8 の仮想ベクタ領域 )
   <ADDR>                 <  D  A  T  A  >                     < ASCII CODE >
    800A  0000                                               ".."
  : DA 100 102 [RET]
   <ADDR> <CODE>                <MNEMONIC> <OPERAND>
    0100  0000                  NOP
    0102  5F14                  JSR        @@H'0A:8
  : G 100 [RET]
    @@H'0A:8 Addressing !!
    PC=0000  CCR=80:I.......  SP=FEFE
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FEFE
   未定義( H'800A 〜 H'800B がゼロ)のメモリ間接を利用したJSR命令が発生する
  と、上記のメッセージを表示してユーザプログラムの実行を停止します。


 (c)TRAPA
  : D 8010 8011;W [RET]  ( TRAPA #0の仮想ベクタ領域 )
   <ADDR>                 <  D  A  T  A  >                     < ASCII CODE >
    8010  0000                                               ".."
  : DA 100 102 [RET]
   <ADDR> <CODE>                <MNEMONIC> <OPERAND>
    0100  0000                  NOP
    0102  5700                  TRAPA      #0:2
  : G 100 [RET]
    TRAPA #0 Occur !!
    PC=0000  CCR=80:I.......  SP=FEFC
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FEFC
   未定義( H'8010 〜 H'8011 がゼロ)のTRAPA命令が発生すると、上記のメッセ
  ージを表示してユーザプログラムの実行を停止します。

先頭にもどる


《 interrupt (内蔵周辺機能割込み管理) 》

(1)機能

 組み込み型モニタはベクタ番号12以降の割込みに対しても、前ページまでの仮想ベクタ方
式をサポートしています。ただし、ベクタ番号12以降についてはカスタマイズにより本機能
の使用/未使用を選択できるようになっています。そして、本機能を選択した場合のみ、仮
想ベクタ方式による割込みのサポートや未定義割込みに対するメッセージ表示を行うことが
できるようになります。以下に本機能をサポートした場合の未定義割込み表示を示しておき
ます。
 (下記の例は全て仮想ベクタ領域を H'8000 番地から配置したの場合の例です)


(2)解説

 (a)TW の割込みが発生した場合
  : H8 TW [RET]
   <REG>  <ADDR> <CODE>   < 7      6      5      4      3      2      1      0 >
   TMRW    FF80 1.00.000   CTS          BUFEB  BUFEA          PWMD   PWMC   PWMB
   TCRW    FF81 00000000   CCLR   CKS2   CKS1   CKS0   TOD    TOC    TOB    TOA
   TIERW   FF82 1...0000   OVIE                       IMIED  IMIEC  IMIEB  IMIEA
   TSRW    FF83 1...1111   OVF                         IMFD   IMFC   IMFB   IMFA
   TIOR0   FF84 .000.000          IOB2   IOB1   IOB0          IOA2   IOA1   IOA0
   TIOR1   FF85 .000.000          IOD2   IOD1   IOD0          IOC2   IOC1   IOC0
   TCNT    FF86 88BA
   GRA     FF88 FFFF
   GRB     FF8A FFFF
   GRC     FF8C FFFF
   GRD     FF8E FFFF
  : D 802A 802B;W [RET]  ( TW の仮想ベクタ領域 )
   <ADDR>                 <  D  A  T  A  >                     < ASCII CODE >
    802A  0000                                               ".."
  : G 100 [RET]
    TW Interrupt Occur !!
    PC=0000  CCR=80:I.......  SP=FEFC
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FEFC
   未定義( H'802A 〜 H'802B がゼロ)の TW 割込みが発生すると、上記のメッセージ
  を表示してユーザプログラムの実行を停止します。


 (b)A/D の ADI 割込みが発生した場合
  : H8 A/D [RET]
   <REG>  <ADDR> <CODE>   < 7      6      5      4      3      2      1      0 >
   ADDRA   FFE0 1F00
   ADDRB   FFE2 0000
   ADDRC   FFE4 0000
   ADDRD   FFE6 0000
   ADCSR   FFE8 11000000   ADF    ADIE   ADST   SCAN   CKS    CH2    CH1    CH0
   ADCR    FFE9 0.......   TRGE
  : D 8032 8033;W [RET]  ( A/D の仮想ベクタ領域 )
   <ADDR>                 <  D  A  T  A  >                     < ASCII CODE >
    8032  0000                                               ".."
  : G 100 [RET]
    A/D Interrupt Occur !!
    PC=0000  CCR=80:I.......  SP=FEFC
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FEFC
   未定義( H'8032 〜 H'8033 がゼロ)の A/D 割込みが発生すると、上記のメッセー
  ジを表示してユーザプログラムの実行を停止します。

先頭にもどる


《 abort (アボート管理) 》

(1)機能

 組み込み型モニタはNMI割込みに対して、ユーザプログラムを強制停止させるアボート
機能をサポートしています。ただし、このアボート機能はカスタマイズにより使用/未使用
を選択できるようになっています。そして、機能を選択した場合のみNMI割込みによるユ
ーザプログラムのアボートを行うことができるようになります。機能を選択しなかった場合
は、他の割込みと同様にユーザプログラムで割込みプログラムを定義することができます。


(2)解説

 (a)アボート機能選択時
  : G 100 [RET]
  NMI(Abort Switch ON)入力
    Abort at PC=3014
    PC=3014  CCR=80:I.......  SP=FF00
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
   NMI入力を行うとユーザプログラムを強制停止します。


 (b)アボート機能未選択時にNMI割込み(未定義)が発生した場合
   (下記の例は仮想ベクタ領域を H'8000 番地から配置したの場合の例です)
  : D 800E 800F;W [RET]  ( NMI の仮想ベクタ領域 )
   <ADDR>                 <  D  A  T  A  >                     < ASCII CODE >
    800E  0000                                               ".."
  : G 100 [RET]
    NMI Occur !!
    PC=2000  CCR=80:I.......  SP=FF00
    ER0=00000000  ER1=00000000  ER2=00000000  ER3=00000000
    ER4=00000000  ER5=00000000  ER6=00000000  ER7=0000FF00
   未定義( H'800E 〜 H'800F がゼロ)のNMI割込みが発生すると、上記のメッセー
  ジを表示してユーザプログラムの実行を停止します。

先頭にもどる


【最後に】

  H8/300H Tinyシリーズ用の組み込み型モニタはフリーウェアです。著作権
 は作成もとである ルネサスエレクトロニクス株式会社 が所有するものとします。
  また、このソフトウェアを使用したことによる全ての損害について、作成もとは一切そ
 の責任を負わないものとします。プログラムのバグについてもできる限り迅速に対処しま
 すが、義務を負うものではありません。

  更に、このソフトウェアの一部または全てを無断で転載することは禁止します。雑誌な
 どへ紹介・収録の場合は事前にメールで連絡をお願い致します。また、このソフトウェア
 に対する感想・意見・要望・バグ情報などございましたら下記の宛先までメールをお願い
 致します。

  E-mail : yuji.katori.ak@renesas.com
  住所   : 東京都新宿区揚場町2−1 軽子坂MNビル
  部署   : ルネサスエレクトロニクス株式会社 半導体トレーニングセンター
  TEL    : 03-3266-9344 (担当 鹿取)
  FAX    : 03-3235-5940

先頭にもどる