H8¤ÇÍ·¤Ö»þ¤Î¥³¥Ä¡©







H8¤ÇÍ·¤Ö»þ¤Î¥³¥Ä¡©

2002/Mar-

¤Þ¡¦¥³¥Ä¤Ã¤Æ¤Û¤É¤Î¤â¤ó¤Ç¤â¤Ê¤¤¤Ç¤¹¤±¤É¡£
ROM¤Ë¤Ï¥â¥Ë¥¿¤ò¾Æ¤­¡¢ºî¤Ã¤¿¥×¥í¥°¥é¥à¤ÏRAM¾å¤Çư¤«¤·¡¢RAM¤¬¤¤¤Ã¤Ñ¤¤¤Ë¤Ê¤Ã¤¿¤é´Ø¿ôñ°Ì¤ÇROM¤Ë°Ü¤·¤Æ¤¤¤­¤Þ¤¹¡£ ¤³¤³¤ÇÌäÂê¤Ë¤Ê¤ë¤Î¤¬
(1) ROMÆâ¤Î¤É¤³¤Ë¾Æ¤«¤ì¤¿¤«RAM¦¤«¤é¤ï¤«¤ó¤Ê¤¤
(2) ROM¦¤«¤éRAM¾å¤Î´Ø¿ô¤ò¸Æ¤Ö»þ
¤Ç¤¹¡£¤½¤³¤Ç¤³¤ó¤ÊÉ÷¤Ë¤·¤Æ¤Þ¤¹¤¬¤É¤¦¤Ç¤·¤ç¤¦¡©

¤Þ¤º¤Ïmonitor.obj
½©·î¤µ¤ó¤«¤é¤Ï¥â¥Ë¥¿¡¼¤¬abs·Á¼°¤ämot·Á¼°¤Ç¶¡µë¤µ¤ì¤Þ¤¹¡£¤¬¡¢¼«Ê¬¤ÎROM¤Ë¤·¤¿¤¤´Ø¿ô¤È¥ê¥ó¥¯¤Ç¤­¤Ê¤¤¤¿¤áÉÔÊØ¤Ç¤¹¡£monitor.obj¤òºî¤ê¤Þ¤·¤ç¤¦¡£

(1) monitor.abs¤ämonitor.mot¤ò²òÀϤ·¡¢¤¿¤È¤¨¤ÐC¤Ê¤é
ulong monitor[] = {0x00000120,0x0002310,......}; ·Á¼°¤òºî¤ë¡£mot·Á¼°¤Ê¤é¤³¤ì¤¬¸½¼ÂŪ¤Ç¤¹¤«¤Í¡£abs·Á¼°¤ÏÆâÉô¹½Â¤Ä´¤Ù¤Ê¤¤¤È¤ï¤«¤ó¤Ê¤¤¤Ç¤¹¤±¤É¡£

(2) printf("0x%04x\r\n",*soko++); ¤ß¤¿¤¤¤Ê¤³¤È¤¬¤Ç¤­¤ë¤Ê¤é¤³¤Ã¤Á¤¬´Êñ¡£¤¢¤¿¤·¤Ï¤³¤ì¤Ç¤ä¤ê¤Þ¤·¤¿¡£

(3) ÆüΩ¤µ¤ó¤Î¥ª¥ê¥¸¥Ê¥ë¥½¡¼¥¹¤«¤éºî¤ë¡£¤È¤¤¤Ã¤Æ¤â80¸Ä°Ì¤Î¥½¡¼¥¹¤Ä¤Ê¤¤¤Çºî¤ë¤ó¤Ç¡¢.obj¤È.obj¤Ä¤Ê¤¤¤Ç.obj¤¬ºî¤ì¤ë¥ê¥ó¥«¤Ç¤Ê¤¤¤È¤Ä¤é¤¤¤Ç¤¹¡£¤¤¤ï¤æ¤ëLNK.EXE¤Ç¤Ï¤Ç¤­¤Ê¤«¤Ã¤¿¤è¤¦¤Ê¡Ä

¤Á¤Ê¤ß¤ËABS·Á¼°¤Ê¤écat monitor.abs rom.abs > romAll.abs ¤Ç¥ê¥ó¥¯¤â¤É¤­¤Ç¤­¤Á¤ã¤¦¤ß¤¿¤¤¤Ç¤¹¡£MOT·Á¼°¤Ç¤âS0/S8/S9¤¢¤¿¤ê¤Ä¤¸¤Ä¤Þ¤¢¤ï¤»¤ì¤Ð¤Ç¤­¤½¤¦¤Ç¤¹¤±¤É¡Ä
¤¤¤è¤¤¤è¥ê¥ó¥¯
monitor.obj¤Èrom.c¤òROM¤Ë¾Æ¤­¡¢ram.c¤òRAM¤Ë¤ª¤¤¤Æ"g f780"¤È¤«¤Çư¤«¤·¤Þ¤¹¡£
(1) monitor.obj¤Èrom.c¤ò¤Ä¤Ê¤¤¤Çrom.mot¤Èrom.map¤òºî¤ë
(2) rom.map¤ò²òÀϤ·¤ÆromSym.mar¤òºî¤ë(romSym.c¤òºî¤í¤¦¤È¤¹¤ë¤È·¿ÊÑ´¹¤Ç¶ìÏ«¤·¤Þ¤¹)
¤³¤³¤¬´Î¤Ç¡Ärom.map¤Ë"sci3Init()¤Ï0x5234¤«¤é»Ï¤Þ¤Ã¤Æ¤ë¤è"¤Ã¤Æ½ñ¤¤¤Æ¤¢¤ê¤Þ¤¹¤«¤é
.export _sci3Init
_sci3Init: .equ H'00005234
¤ß¤¿¤¤¤Ê¤Î¤òºî¤ê¤Þ¤¹¡£DOS/win¤ÇC¤ä¥Æ¥­¥¹¥È½èÍý¸À¸ì¤Î»È¤¨¤ëÊý¤Ê¤é´Êñ¤Ç¤¹¡£¤¢¤¿¤·¤Ïwsh+JScript¤Ç¤ä¤Ã¤Æ¤Þ¤¹¡£(¤ï¤©^^;)ÆüΩ¤µ¤ó¤Î¾¦ÍÑÈÇ¡©¥ê¥ó¥«¤Ç¤Ï¥ê¥ó¥«¤¬ÅǤ¤¤Æ¤¯¤ì¤ë¤ß¤¿¤¤¤Ç¤¹
¤³¤ÎJScript¥¹¥¯¥ê¥×¥È¤Ï ¤³¤³¤«¤é¥À¥¦¥ó¥í¡¼¥É¤Ç¤­¤Þ¤¹¡£[03/MAR/13]
(3) ram.c¤ÈromMap.mar¤ò¤Ä¤Ê¤¤¤Çram.abs¤Ê¤êram.mot¤Ê¤êºî¤ê¤Þ¤¹¡£
¤Á¤È¼ê½ç¤¬¹þ¤ßÆþ¤ê¤Þ¤¹¤Î¤Ç¡¢¤Á¤ã¤ó¤È¤·¤¿make.exe¤Ïɬ¼û¤Ç¤¹¡£¤Á¤Ê¤ß¤Ë¥¢¥»¥ó¥Ö¥éÎà¤Ï¥á¥Ã¥»¡¼¥¸¤¬¤¦¤ë¤µ¤¯¤Æ¤Þ¤ë¤ÇUNIXÉ÷¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢exit¥³¡¼¥É¤Ï¤­¤Á¤ó¤ÈÊÖ¤·¤Æ¤¯¤ì¤Þ¤¹¡£¥ê¥ó¥«¤¬¤«¤Ê¤ê¤ä¤Ð¤¤¾õ¶·¤Ç¤âWarning/exit(0)¤·¤Á¤ã¤¦¤Î¤¬º¤¤ê¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤¹¡£
¼¡¤ÎÌäÂê¡£
rom.c¤«¤éram.c¤ò¸Æ¤ó¤Ç¤ë¾ì¹ç¡Ä¤³¤ì¤Ïram.c¤Ï¤Á¤ç¤í¤Á¤ç¤íư¤­¤Þ¤¹¤Î¤Ç¡¢¥é¥ó¥¿¥¤¥à½èÍý¤¹¤ë¤·¤«¤Ê¤¤¤Ç¤·¤ç ¤¦¡£ram.c¤ÎÀèÆ¬¤À¤±¸ÇÄꤷ¤Æ¤ª¤­¡¢ÀèÆ¬¤Ë¤ÏmyGlue(int why,int what)¤òÃÖ¤­¤Þ¤¹¡£¥¤¥ó¥¿¥é¥×¥È¥É¥ê¥Ö¥ó¤Ê¤é

myGlue(int why,int what)
{
	switch(why) { 
	case INITPSE: myInitOnRAM(); for(;;) sleep();  /*MainLoop*/
	case GOT232C: got232cIntrOnRAM(what); break; 
	case TMVINTR: tmvIntrOnRAM(what); break;
	case MAKING: makingOnRAM(what); break; 
	} 
} 
¤Ã¤Æ¤Ê´¶¤¸¡£makingOnRAM(n) ¤ò¸Æ¤Ö¤È¤³¤Ï¥Þ¥¯¥í¤ÇmyGlue(MAKING,n)¤È¤Ç¤â¤·¤Æ¤ª¤¯¤È¤¤¤¤¤Ç¤·¤ç¤¦¡£

¤¹¤ë¤È¡¢"g f780"¤È¤«¤ÇmyGlue()¤ËÈô¤Ð¤·¤Æ¤·¤Þ¤¦¤È¡¢why¤¬ÉÔÄê(¡©)¤Ç¤¦¤Þ¤¯¤Ê¤¤¤Ç¤·¤ç¤¦¡£¤½¤³¤Ç¡¢¥â¥Ë¥¿¤Îľ¸å¤Ë
mov.w #INITPSE,d0
jmp @myGlue
¤È¤«Æþ¤ì¤Æ¤ª¤­¤Þ¤¹¡£¤³¤ì¤Ï³Ð¤¨¤ä¤¹¤¤¥¢¥É¥ì¥¹¤Ë¤ª¤¤¤È¤¯¤È¤¤¤¤¤Ç¤¹¡£

¤Þ¤À¤¢¤ëÌäÂê¡£staticÊÑ¿ô¡£

¤¢¤¿¤·¤Ï³ÎÊݤϰì³ç¤·¤Ærom.c¦¤Ç¼è¤ê¡¢ram.c¤Ç¤Ïrommap.mar·Ðͳ¤Ç¥¢¥É¥ì¥¹¤À¤±¤â¤é¤¦¤è¤¦¤Ë¤·¤Æ¤Þ¤¹¡£
#ifdef ROM
int a,b,c;
int myReserve[8];
#else
extern int a,b,c;
extern int myReserve[8];
#endif
¤Ê´¶¤¸¡£ram.c½ñ¤¤¤Æ¤ÆstaticÊÑ¿ôd¤¬Íߤ·¤¯¤Ê¤Ã¤¿¤È¤­¤Ï¡¢¤È¤ê¤¢¤¨¤º
¡¡¡¡¡¡¡¡#define¡¡¡¡d¡¡¡¡(myReserve[0])
¤Ë¤·¤Æ¤ª¤¤¤Æ¡¢¼¡²óROM¤ò¾Æ¤¯¤È¤­¤Ëint d¤Ë¾º³Ê¤µ¤»¤Þ¤¹¡£

¤Á¤Ê¤ß¤Ë
3067F¤Ç¤âƱÍͤλö¤ò¤·¤Æ¤¤¤Þ¤¹¤¬¡¢myGlue(long why,long what)¤Ë¤·¤¿Êý¤¬¤¤¤¤¤Ç¤¹¤Í¡£int what¤Ç¤Ï¥Ý¥¤¥ó¥¿¤¬ÅϤ»¤Þ¤»¤ó¡£Ä¾¤µ¤Ê¤­¤ã¤È»×¤Ã¤Æ¤ë¤¦¤Á¤Ëint,int¤Î¤Þ¤Þ¤É¤ó¤É¤ó¥Ç¥«¤¯¤Ê¤Ã¤Æ¤¤¤¯¡Ä

´°àú¡ªPowerON¤ÇΩ¤Á¾å¤¬¤ë¤è¤¦¤Ë¤·¤¿¤¤

¤Þ¤È¤â¤ÊROM²½¼êË¡¤Ï¤¢¤Á¤³¤Á¤Ë¾Ü¤·¤¯¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤³¤Ç¤Ï¥º¥ëµ»¤ò¡£¥â¥Ë¥¿´Ä¶­¤«¤é¤ÎÊѹ¹¤¬ºÇ¾®¸Â¤Ë¤Ê¤ë¤è¤¦¤Ë¹©Éפ·¤Þ¤¹¡£
(1) ram.c¤ÎÁ´¤Æ¤òROM¤Ë°Ü¤·¤Þ¤¹¡£¤³¤Î»þÅÀ¤Ç"g 4d00"¤À¤±¥­¡¼¥¤¥ó¤¹¤ì¤Ð(¥À¥¦¥ó¥í¡¼¥É¤Ê¤·¤Ç)ư¤­¤Þ¤¹¡£
(2) monitor¤Ë¥Ñ¥Ã¥Á¤òÅö¤Æ¤Þ¤¹¡£monitor¤ÏΩ¤Á¾å¤¬¤Ã¤¿¤¢¤ÈINSTRING¤«¤Ê¤ó¤«¤¤¤¦¥ë¡¼¥Á¥ó¤ò¥³¡¼¥ë¤·¤Þ¤¹¡£¤½¤³¤òmyINSTRING¤ò¸Æ¤Ö¤è¤¦¤Ë¥Ñ¥Ã¥Á¤·¤Þ¤¹¡£
mySTRING()
{
¡¡¡¡if(dipSW==ON)
¡¡¡¡¡¡¡¡INSTRING();/*¥ª¥ê¥¸¥Ê¥ë¤Î¥â¥Ë¥¿Æ°ºî*/
¡¡¡¡else
¡¡¡¡¡¡¡¡strcpy(KINBUF,"g 4d00\r");/*¥­¡¼ÆþÎÏ¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó*/
}
¤¦¤ï¤Ã¡£¤³¤ê¤ã½ñ¤¤¤Æ¤ß¤ÆÍð˽¤À¤Ê¤¡¡£
[ÄɲÃ.03/JUN/12]
¥¢¥é¥«¥ë¥È
3664F/3048F/3052F/3068F¤¢¤¿¤ê¤Ç¤Ï¡¢ROM¾Æ¤­²ó¿ôÀ©¸Â¤¬»ÅÍÍÊѹ¹¤Ë¤è¤ê¤ª¤ª¤Ï¤Ð¤Ë´ËÏ ¤µ¤ì¤Æ¤Þ¤¹¡£ ¾ÜºÙ¤Ï
¾¡¼ê¤Ëľ¥ê¥ó¥¯¤Ë¤¢¤ê¤Þ¤¹¡£
¤È¤Ï¸À¤¨¡¢¥Ç¥Ð¥Ã¥°ÍÑprintf()¤Ë²þ¹Ô¤Ä¤±Ëº¤ì¤ÇROM¾Æ¤­Ä¾¤·¤Ã¤Æ¤Î¤Ï¤ä¤Ã¤Ñ¤Ä¤é¤¤¤Ç¤¹¤Í¡£

ºÇ¶á¤Ï¥Ç¥Ð¥Ã¥¬¥â¥Ë¥¿(¥Ð¥¤¥Ê¥ê)¤ÎźÉÕ¤µ¤ì¤Ê¤¤¥Ü¡¼¥É¤¬Áý¤¨¤Æ¡¢ÆÈ¼«¤Ë¥½¡¼¥¹¤«¤é¥Ó¥ë¥É¤µ¤ì¤Æ ¤¤¤ëÊý¤â¿¤¤¤Ç¤·¤ç¤¦¡£¤Þ¤À²òÀÏÃæ(¤·¤«¤â3052F¤Ç)¤Ç¤¹¤¬ ¤³¤ÎÊդϤ⤦¤Á¤ç¤¤Ä´¤Ù¤Æ¤«¤é¤Þ¤È¤á¤ëͽÄê¤Ç¤¹¡£

[ÄɲÃ.03/JUN/14]
¤È¤¤¤¤¤Ä¤Äµ¡Ç½¶¯²½ÈÇ¥â¥Ë¥¿Í½¹ðÊÔ¡£(»ÃÄêÈǤËÉÕ¤­¤µ¤Ã¤¯¤êºï½ü¤¹¤ë¤«¤â)
¤É¤Ê¤¿¤«¥Ð¥°¤¿¤¿¤­¤´¶¨ÎϤ¤¤¿¤À¤±¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡©ÆÃ¤Ëgcc¤Ç¤ä¤Ã¤Æ¤ß¤¿¤¤¤È¸À¤¦Êý (sdb¤¬¤¢¤ë¤«¤é¤¢¤ó¤Þ¤ê°ÕÌ£¤Ê¤¤¤Î¤«¤Ê)¡¢306xF¤Çưºî³Îǧ¤·¤Æ¤¤¤¿¤À¤±¤ëÊý¡£

z¥³¥Þ¥ó¥É¡ÄWDT(¥¦¥©¥Ã¥Á¥É¥Ã¥°¥¿¥¤¥Þ)¤Ç¥ê¥»¥Ã¥È¤¹¤ë¤À¤±¤Ç¤¹(^^;)

: 
: z
 H8/3052 Advanced Mode Monitor Ver. 3.0A
 Copyright (C) 2003 Renesas Technology Corp.
: 

³ä¤ê¹þ¤ßÂбþ¡Ä¥â¥Ë¥¿¤Î¥³¥Þ¥ó¥ÉÂÔ¤ÁÃæ¤Ë³ä¤ê¹þ¤ß¤ò¼õ¤±ÉÕ¤±¤Þ¤¹(UNIX¤ÊÊý¤Ïa.out& ¤òÁÛÁü¤·¤Æ¤â¤é¤¦¤È´¶¤¸¤Ï¶á¤¤¤Ç¤¹)

: 
0022
0023
m 0;l
  000000  000046A2  ?  .
: 0024
0025



(itu¤Ç1Éäòºî¤ê¡¢printf()¤·¤Æ¤Þ¤¹¡£¥­¡¼ÆþÎϤ¬¤¢¤ì¤Ð¥ê¥¿¡¼¥óÆþÎϤޤdzä¹þ¤ß¶Ø»ß¤Ç¤¹)

USB¤«¤é¼«Æ°¥À¥¦¥ó¥í¡¼¥É¡Ä¤Ï·×²èÃæ¤Ç¤¹¡£¥³¥Þ¥ó¥ÉÂÔ¤Á¤ÇIRQ5¤µ¤¨¼õ¤±ÉÕ¤±¤ì¤Ð ¡Ö¤¤¤Ä¤Î¤Þ¤Ë¤«RAM¤ËŸ³«¤µ¤ì¤Æ¤ë¡×¤¬²Äǽ¤Ê¤Ï¤º¡Ä
n¥³¥Þ¥ó¥É¡Ä¥¢¥É¥ì¥¹¢Í¥·¥ó¥Ü¥ë¤ä¥·¥ó¥Ü¥ë¢Í¥¢¥É¥ì¥¹ÊÑ´¹

: n 782e
0000782E : _printf
: n _scanf
00007D88 : _scanf
: 

¤Û¤È¤ó¤É¤Î¥³¥Þ¥ó¥É¡Ä¥¢¥É¥ì¥¹¤Î¤«¤ï¤ê¤Ë¥é¥Ù¥ë¤¬»È¤¨¤Þ¤¹

: da _scanf
 ¡ãADDR¡ä  ¡ãCODE¡ä          ¡ãMNEMONIC¡ä ¡ãOPERAND¡ä
  007D88  01006DF6              PUSH.L     ER6
  007D8C  7A0600000004          MOV.L      #H'00000004:32,ER6
  007D92  7A0000000008          MOV.L      #H'00000008:32,ER0
  007D98  0AF0                  ADD.L      ER7,ER0
  007D9A  0AE0                  ADD.L      ER6,ER0

: m _intrCount ;l
  220492  00000AE5  ?  .
: 


´¶Áۤʤɤϥ᡼¥ë¤Ï¤³¤Á¤é ¤Þ¤¿¤Ï¤³¤Á¤é¤Î ¥Õ¥©¡¼¥à¤Ï¤³¤Á¤é ¤«¤é¤É¤¦¤¾¡£
¤Ä¤Ã¤³¤ß¤â¤ä¤ó¤ï¤ê¤È¤Ê¤é´¿·Þ¤·¤Þ¤¹¡£

¥È¥Ã¥×¥Ú¡¼¥¸¤Ø¤â¤É¤ë