こんにちは、西村@中央大学です。 日立製モニタデバッガに関して質問です。 最後にプログラムを添付しているので長文になってます、すみません。 AKI-H8に増設RAM128KBをエリア1につないでいます。 そして、ポートに接続されたスイッチを押しているときは モニタを実行、押されていないときは増設RAMのアドレスH'20000 からプログラムを実行するようにモニタデバッガ(バージョン2.1)をカスタマイズ したつもりなのですが、モニタプログラムを動かすとコマンド入力待ちの時に : ;;;;;;;;;;;;;;;;;; BufferOverflow! : ;;;;;;;;;;;;;;;;;; BufferOverflow! という、というエラーが連続してでてしまいます。RAMのプログラムは実行 されるので分岐が間違えているとは思えません。 H8からPCに向けて変なデータを送信しているようですが、その辺は いじったつもりはありません。 分岐の部分をなくすとモニタプログラムは正常に実行されるので やはり分岐の部分がおかしいのかもしれませんが、わかりません。 どなたか心当たりのあるかたがいらっしゃいましたら教えていただけると 助かります。以下に分岐の部分のソースと、サブコマンドファイルを添付します。 ;ソースファイル ;************************************************************************ ;* H8/300H Monitor Program (Advanced Mode) Ver. 2.0A * ;* Copyright (C) Hitachi, Ltd. 1995 * ;* Copyright (C) Hitachi Microcomputer System, Ltd. 1995 * ;************************************************************************ .PROGRAM INITIALIZE ; Program Name .CPU 300HA ; CPU is H8/300H Advanced .SECTION ROM,CODE,ALIGN=2 ; ROM Area Section ;************************************************************************ ;* Export Define * ;************************************************************************ .EXPORT INITIALIZE ; User Initialize Module ;************************************************************************ ;* User Initialize Module * ;* Input ER6 <-- Return Address * ;* Output Nothing * ;* Used Stack Area --> 0(0) Byte * ;************************************************************************ INITIALIZE: ; Line 19 MOV.L #H'000FFF00:32,ER7 ; Init Stack ptr.CHECK!!! ;ここからはバスの設定です。 ;アドレスの設定 MOV.B #H'FF:8,R0L ; Setup, MOV.B R0L,@H'0FFFFC0 ; A0-A7 Port1 ; Output mov.b R0L,@H'0FFFFC1 ; A8-A15 Port2 ; Output mov.b #h'f1:8,r0l ; Also setup, mov.b r0l,@H'0FFFFC8 ; A16 Port5 ; Output ;チップセレクトの設定 mov.b #h'e8:8,r0l ; Set RAM 111 CS0 - CS1 CS2 CS3 0 mov.b r0l,@H'0FFFFCD ; to CS1 ;バスコントローラの設定 ;バス幅コントロールレジスタ ABWCR mov.b #h'ff:8,r0l ; Set all areas, mov.b r0l,@H'0FFFFEC ; to 8bit access. ;アクセスステートコントロールレジスタ ASTCR 00-2state ff-3state mov.b #h'00:8,r0l ; Set all areas, mov.b r0l,@H'0FFFFED ; to 2 wait state access. ;ウェイトコントロールレジスタ WCR ;ウェイトステートコントローラ WSC mov.b #h'f0:8,r0l ; WSC is programmable, mov.b r0l,@H'0FFFFEE ; wait state is 0. ;ウェイトステートコントローラレジスタ WCER mov.b #h'ff:8,r0l ; In all areas mov.b r0l,@H'0FFFFEF ; use WSC. ;ここからがスイッチによる条件分岐の部分です。 P5DR: .EQU H'FFFFCA P5PCR: .EQU H'FFFFDB MOV.B #H'FF,R0L MOV.B R0L,@P5PCR ;pullup MOS -> ON MOV.B @P5DR,R0L ;input data -> R0L AND.B #H'08 , R0L CMP.B #H'08 , R0L BNE MON JMP @H'020000 MON: JMP @ER6 ; Goto Monitor Program .END ; ;ソース部分はここまで ;ここからサブコマンドファイル INPUT ADVANCED INPUT CMD01,CMD02 ,CMD04,CMD05, CMD08,CMD09,CMD10 INPUT CMD11, CMD13,CMD14 ,CMD16,CMD17, CMD19,CMD20 INPUT CMD21, CMD24,CMD25, CMD27,CMD28, CMD30 INPUT CMD31,CMD32,CMD33,CMD34,CMD35,CMD36,CMD37 INPUT DMY03,DMY06,DMY07,DMY12,DMY15,DMY18,DMY23,DMY26,DMY29,DMY38 INPUT int03,int04,int05,int06,int08,int09,int10 INPUT int11,int12,int13,int14,int15,int16,int17,int18,int19,int20 INPUT int21,int22,int23,int24,int25,int26,int27,int28,int29,int30 INPUT int31,int32,int33,int34,int35,int36,int37,int38,int39,int40 INPUT int41,int42,int43,int44,int45,int46,int47,int48,int49,int50 INPUT int51,int52,int53,int54,int55,int56,int57,int58,int59,int60 INPUT int61,int62,int63 INPUT mod01,mod02,mod03,mod04,mod05,mod06,mod07,mod08,mod09,mod10 INPUT mod11,mod12,mod13,mod14,mod15,mod16,mod17,mod18,mod19,mod20 INPUT mod21,mod22,mod23,mod24,mod25,mod26,mod27,mod28,mod29,mod30 INPUT mod31,mod32,mod33,mod34,mod35,mod36, mod38,mod39,mod40 INPUT cpu01,cpu02,cpu03,cpu04 INPUT MONITOR DEFINE $BRR(0C) DEFINE $STACK(0FFF00) PRINT MONITOR.MAP OUTPUT MONITOR.ABS START VECTOR(0),ROM(100),RAM(0FEF10),USER(0FF000),SCI(0FFFFB8) EXIT ♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪ 中央大学理工学部精密機械工学科4年 西村賢治 k_nishimura@xxxxxxxxxxxxxxx ♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪