MAX-IDEã®äœ¿çšã«ããã£ãŠ
èŠçŽ
MAX-IDEã¯ãMAXQ®ãã€ã¯ãã³ã³ãããŒã©ãã¡ããªã®ããã®ããã«æ©èœã®ã¢ããªã±ãŒã·ã§ã³éçº/ãããã°ç°å¢ã§ããMAX-IDEã¯ãMAXQã®ãã¹ãŠã®æšæºè©äŸ¡ãããã§åäœããããã«èšèšãããŠããããããžã§ã¯ãããŒã¹ã®éçºç°å¢ãMAXQã®æšæºãããã°æ©èœãžã®ã¢ã¯ã»ã¹ãçµ±åãã¯ãã¢ã»ã³ãã©ãããã³JTAGã€ã³ã¿ãã§ãŒã¹ã䜿çšããã€ã³ãµãŒãããã¢ããªã±ãŒã·ã§ã³ã®ããŒãã£ã³ã°ãå®çŸããŠããŸãã
æŠèŠ
MAX-IDEã¯ãMAXQâ¢ãã€ã¯ãã³ã³ãããŒã©ãã¡ããªã®ããã®ããã«æ©èœã®ã¢ããªã±ãŒã·ã§ã³éçº/ãããã°ç°å¢ã§ããMAXQã®ãã¹ãŠã®æšæºè©äŸ¡ãããã§åäœãã以äžã®æ©èœãçšæãããŠããŸãã
- MAXQã¢ã»ã³ããªã¢ããªã±ãŒã·ã§ã³çšãããžã§ã¯ãããŒã¹ã®éçºç°å¢
- ãã¹ãŠã®MAXQãã€ã¯ãã³ã³ãããŒã©çšã®æšæºããããã¡ã€ã«ãå«ãMAXQãã¯ãã¢ã»ã³ãã©ãå èµ
- JTAG/TAPã€ã³ã¿ãã§ãŒã¹ãšROMããŒãããŒãã䜿çšããã€ã³ãµãŒãããã¢ããªã±ãŒã·ã§ã³ã®ããŒãã£ã³ã°(ãã©ãã·ã¥ãŸãã¯EEPROMããã°ã©ã ã¡ã¢ãªãåããMAXQãã€ã¯ãã³ã³ãããŒã©çš)
- JTAG/TAPã€ã³ã¿ãã§ãŒã¹ãçµç±ããŠå©çšå¯èœãªã€ã³ãµãŒããããããã°æ©èœ(ãã¬ãŒã¯ãã€ã³ãæ©èœãã¹ããããã€ã¹ãããã®ããã°ã©ã å®è¡ãããã³ã¡ã¢ãª/ã¬ãžã¹ã¿ã®å 容衚瀺ãå«ã)
詳现ã«ã€ããŠã¯ãMAXQ2000è©äŸ¡ãããã®ããŒã¿ã·ãŒããåç §ããŠãã ããããã®ããŒã¿ã·ãŒãã¯ãè©äŸ¡ãããCDãŸãã¯ãªã³ã©ã€ã³ããããŠã³ããŒãããããšãã§ããŸãã
MAX-IDEã®ã€ã³ã¹ããŒã«
ã·ã¹ãã èŠä»¶
- ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ïŒWindows® 98ãWindows NTãWindows 2000ãWindows MEããŸãã¯Windows XP®
- å°ãªããšã1ã€ã®ç©ºãã·ãªã¢ã«COMããŒã(MAXQè©äŸ¡ããããšã®éä¿¡ã«å¿ èŠ)ããŸãã¯USB-to-serialã¢ããã¿ãš1ã€ã®ç©ºãUSBããŒã
ã€ã³ã¹ããŒã«ããã°ã©ã ã®å®è¡
- MAX-IDEçšã®ã€ã³ã¹ããŒã«ããã±ãŒãžã¯MAX-IDE.zipã
- ãã®ããã±ãŒãžãããŠã³ããŒãããŠè§£åããsetup.exeãå®è¡ããŠMAX-IDEãããŒããã©ã€ãã«ã€ã³ã¹ããŒã«ããŸãã
- [InstallShield]ãã€ã¢ãã°ã§ã[Typical installation]ãéžæãããšãè©äŸ¡ããããçšããŠMAXQã¢ããªã±ãŒã·ã§ã³ãéçºããã®ã«å¿ èŠãªãã¹ãŠã®ãã¡ã€ã«ãã€ã³ã¹ããŒã«ãããŸãã
- ã€ã³ã¹ããŒã«ãå®äºããã°ã[ã¹ã¿ãŒã]ã¡ãã¥ãŒããMAX-IDEãèµ·åããããšãã§ããŸãã
MAX-IDEã®ã€ã³ã¹ããŒã«ãã¡ã€ã«
MAX-IDEã®ã¡ã€ã³å®è¡ãã¡ã€ã«ãšãã«ããã¡ã€ã«ã¯ãMAX-IDEã®ã«ãŒããã£ã¬ã¯ããªã«ãããŸããããã©ã«ãã§ã¯ããã®ãã£ã¬ã¯ããªã¯ãProgram Files\MAX-IDEã§ãããã®ä»ã®ãã¡ã€ã«ã¯ã以äžã®ãµããã£ã¬ã¯ããªã«ãããŸãã
- Compilersãµããã£ã¬ã¯ããªã«ã¯ãMAX-IDEã§ã€ã³ã¹ããŒã«ããããã¹ãŠã®ã³ã³ãã€ã©ãšã¢ã»ã³ãã©ã®ããã®å®è¡ãã¡ã€ã«ãšããŒã¿ãã¡ã€ã«ãæ ŒçŽãããŠããŸããããã«ã¯ãå°ãªããšãMAXQã®æšæºã¢ã»ã³ãã©ãå«ãŸããŸãã䜿çšããé åžããŒãžã§ã³ã«ãã£ãŠã¯ãä»ã®ã¢ã»ã³ãã©ãã³ã³ãã€ã©ãã€ã³ã¹ããŒã«ãããå ŽåããããŸãã
- Devicesãµããã£ã¬ã¯ããªã«ã¯ãã©ã€ãã©ãªããã©ã€ããããã³æ§æãã¡ã€ã«ãæ ŒçŽãããŠããŸãããããã¯ããã¹ãŠã®MAXQãã€ã¯ãã³ã³ãããŒã©ãšè©äŸ¡ãããã®ããã®ã¢ããªã±ãŒã·ã§ã³ã察象ãšãããã®ã§ãããããã«ããããšéä¿¡ããããã®ãã®ã§ãã
JTAGã€ã³ã¿ãã§ãŒã¹ã®ã»ããã¢ãã
Serial-to-JTAGã¢ããã¿ããŒã
MAX-IDEã¯ãJTAG IEEEèŠæ Œ1149ã«æºæ ããå°çšã®JTAGãã¹ãã¢ã¯ã»ã¹ããŒã(TAP)ã€ã³ã¿ãã§ãŒã¹ãçµç±ããŠãMAXQãã€ã¯ãã³ã³ãããŒã©ã®ããŒãããŒããšãããã°ãšã³ãžã³æ©èœã«ã€ã³ã¿ãã§ãŒã¹æ¥ç¶ãããŸãããã®ã€ã³ã¿ãã§ãŒã¹ã¯ãTMS (Test Mode Select)ãTCK (Test Clock)ãTDI (Test Data In)ãããã³TDO (Test Data Out)ã®ä¿¡å·ã§æ§æãããéåžžãããŒã端åã§å€éåãããŸãã
å³1ã¯ããã¹ãŠã®MAXQãã€ã¯ãã³ã³ãããŒã©ã®è©äŸ¡ãããã«æèŒãããŠããSerial-to-JTAGã¢ããã¿ããPCã®ã·ãªã¢ã«COMããŒããšMAXQãã€ã¯ãã³ã³ãããŒã©ã®JTAGã€ã³ã¿ãã§ãŒã¹éã®ã€ã³ã¿ãã§ãŒã¹å±€ãæäŸããä»çµã¿ã瀺ããŠããŸãã
å³1. MAXQçšã®Serial-to-JTAGã€ã³ã¿ãã§ãŒã¹
JTAGã€ã³ã¿ãã§ãŒã¹ã®ä¿¡å·ãšã±ãŒãã«
Serial-to-JTAGã¢ããã¿ããŒãã¯ã䞡端ã«2 x 5ã®ãœã±ãã(0.100"éé)ãåãã10è¯ãªãã³ã±ãŒãã«ãçšããŠMAXQè©äŸ¡ãããããŒããšæ¥ç¶ãããŸãããã®ã±ãŒãã«ã§äŒéãããä¿¡å·ã以äžã®è¡š1ã«ç€ºããŸãã
衚1. JTAGã€ã³ã¿ãã§ãŒã¹ã®ä¿¡å·
Pin Number | Signal Type | Signal Name | Signal Description |
1 | Input to MAXQ | TCK | JTAG/TAP Test Clock |
2 | Ground | GND | Ground |
3 | Output from MAXQ | TDO | JTAG/TAP Test Data Out |
4 | Reference | VREF | Supplied by MAXQ kit to set the reference level for JTAG signals output by the Serial-to-JTAG board |
5 | Input to MAXQ | TMS | JTAG/TAP Test Mode Select |
6 | Input to MAXQ | nRST | Open-drain drive, connected to MAXQ reset line |
7 | None | KEY | Keyed pin for JTAG cable alignment |
8 | Power | VCC5 | +5.0V (±5%) supply provided by JTAG board |
9 | Input to MAXQ | TDI | JTAG/TAP Test Data In |
10 | Ground | GND | Ground |
è©äŸ¡ãããã®æ¥ç¶
䜿çšããè©äŸ¡ãããã®çš®é¡ã«ãã£ãŠã¯ãSerial-to-JTAGã€ã³ã¿ãã§ãŒã¹ããŒããŸãã¯è©äŸ¡ãããããŒãããããã¯ãã®äž¡æ¹ã§é»æºãå¿ èŠãšãªãå ŽåããããŸããäž¡æ¹ã®ããŒããèšå®ããããã®æé ãããã§ç°¡åã«èª¬æããŸã(衚2)ãæé ã®è©³çްã«ã€ããŠã¯ãè©äŸ¡ãããã®ããŒã¿ã·ãŒããåç §ããŠãã ãããSerial-to-JTAGããŒããŸãã¯MAXQè©äŸ¡ãããããŒãã§äœ¿çšãã黿ºã¯ãã¹ãŠDCã®ã¿(ã»ã³ã¿ãŒãã¹ãããã©ã¹)ã§ããããšã«çæããŠãã ããã
衚2. è©äŸ¡ãããã®ã»ããã¢ãã
Evaluation Kit | JTAG Power Supply | Kit Power Supply | Jumper Settings | JTAG Header |
MAXQ2000 | 5V, ±5% | None | JTAGâClose JH1, JH2, JH3KitâClose JU11; Close 1+2 on JU1, JU2, JU3 | J4 |
MAX-IDEã§äœ¿çšããããšãã§ããããã«ãMAXQè©äŸ¡ããããšSerial-to-JTAGããŒã(å³2)ãã»ããã¢ããããæ¹æ³ïŒ
- äžè¿°ã®ããã«Serial-to-JTAGããŒãã«é»æºãæ¥ç¶ããŸãã
- äžè¿°ã®ããã«è©äŸ¡ããããšSerial-to-JTAGããŒãã®ãžã£ã³ããèšå®ããŸãããããã®ç¹å®ã®æ©èœã«ã¢ã¯ã»ã¹ããããã«ã¯ãè©äŸ¡ãããããŒãäžã§ãžã£ã³ããDIPã¹ã€ããã远å ã§èšå®ããããšãå¿ èŠãšãªãããšããããŸãã詳现ã«ã€ããŠã¯ãè©äŸ¡ãããã®ããŒã¿ã·ãŒããåç §ããŠãã ããã
- 2 x 5ã®10è¯ãªãã³ã±ãŒãã«ãSerial-to-JTAGããŒãã®P2ãããããè©äŸ¡ãããããŒãã®å¯Ÿå¿ãããããã«æ¥ç¶ããŸããã³ãã¯ã¿ã¯äžæ¹åã«ã®ã¿æ¥ç¶å¯èœãªããã«èª¿ç¯ãããŠããŸãã調ç¯ãããŠããªãå Žåã¯ãèµ€ãã¯ã€ã€ãäž¡æ¹ã®ãããã®åã端åã«æ¥ç¶ãããããã«ããŠãã ããã
- ã¹ãã¬ãŒãã·ãªã¢ã«ã±ãŒãã«ãSerial-to-JTAGããŒãã®J1ããPCã®COMããŒãã«æ¥ç¶ããŸãã
- ãã¹ãŠã®é»æºããªã³ã«ããŸãã

å³2. MAXQ2000ã®è©äŸ¡ããããšSerial-to-JTAGããŒã
MAX-IDEã§ã®ãããžã§ã¯ãã®åŠç
æ°ããMAXQã¢ã»ã³ããªãããžã§ã¯ãã®äœæ
MAX-IDEã§æ°ãã«MAXQã¢ã»ã³ããªèšèªã®ãããžã§ã¯ããäœæããã«ã¯ã以äžã®æé ã«ãããããŸãã
- [MAX-IDE]ã¡ãã¥ãŒãã[Device] â [MAXQ JTAG]ãé ã«éžæããŸãã
- [Project] â [New Project]ãé ã«éžæããŸããç¡é¡ã®ãããžã§ã¯ããäœæãããŸãã
- [Project] â [Save Project As]ãéžæããŸãããããžã§ã¯ã(.prjãã¡ã€ã«)ãä¿åãããå ŽæãéžæããŸãã
- æ°ããã¢ã»ã³ããªèšèªãã¡ã€ã«ãäœæããã«ã¯ã[File] â [New File]ãéžæããŸãããã¡ã€ã«ã«ã¢ã»ã³ããªã³ãŒããå ¥åããåŸã[File] â [Save As]ãéžæããæ°ããäœæãã.asmãã¡ã€ã«ããããžã§ã¯ããã£ã¬ã¯ããªã«ä¿åããŸããæ¬¡ã«ã[Project] â [Add Files]ãéžæããæ°ããäœæãããã¡ã€ã«ãéžæããŠãããžã§ã¯ãã«è¿œå ããŸãã
- æ¢åã®ã¢ã»ã³ããªèšèªãã¡ã€ã«ããããžã§ã¯ãã«è¿œå ããã«ã¯ãåã«[Project] â [Add Files]ãéžæãããããžã§ã¯ãã«è¿œå ãããã¡ã€ã«ãéžæããã ãã§ãã
- ã€ã³ã¯ã«ãŒããã¡ã€ã«ã¯ããããããããžã§ã¯ãã«è¿œå ããå¿ èŠã¯ãããŸãããã¢ã»ã³ããªããã»ã¹æã«èªåçã«èªã¿åãããŸãã
$include (..\api\maxQ2000.inc) org 0000h main: jump $ endäžèšã®$includeè¡ã¯ãã€ã³ã¯ã«ãŒããã¡ã€ã«ã®å Žæã«ãã£ãŠç°ãªããŸãã$includeãšorgåœä»€ã®è©³çްã«ã€ããŠã¯ãæ¬æžã®ïœ¢MAX-IDEã¢ã»ã³ãã©ã®äœ¿çšïœ£ã®é ãåç §ããŠãã ããã
ã¢ã»ã³ããªãã¡ã€ã«ãšã€ã³ã¯ã«ãŒããã¡ã€ã«ã«é¢ããæ³šèš
- ãã¹ãŠã®MAXQãã€ã¯ãã³ã³ãããŒã©ã«å ±éã®ã·ã¹ãã ã¬ãžã¹ã¿(ã¢ãã¥ã ã¬ãŒã¿ãããŒã¿ãã€ã³ã¿ãã«ãŒãå¶åŸ¡ã¬ãžã¹ã¿ãªã©)ã¯ãMAX-IDEã¢ã»ã³ãã©ã§ãããããå®çŸ©ãããŠããŸããããã€ã¹ããšã«ç°ãªãåšèŸºæ©åšã¬ãžã¹ã¿ã¯ãã€ã³ã¯ã«ãŒããã¡ã€ã«ã§å®çŸ©ããå¿ èŠããããŸããæšæºã€ã³ã¯ã«ãŒããã¡ã€ã«ã¯ãåMAXQãã€ã¯ãã³ã³ãããŒã©çšã®MAX-IDEã®ã€ã³ã¹ããŒã«ã«å«ãŸããŠããŸãããããã£ãŠãäžã®äŸã§ç€ºããã€ã³ã¯ã«ãŒããã¡ã€ã«ã¯MAXQ2000çšã«ãªããŸãã
- ããªããã»ããµåœä»€(çåŒãå®çŸ©ããã¯ããªã©)ãããããžã§ã¯ãå ã®ãã¡ã€ã«ãããã¡ã€ã«ã«æã¡è¶ãããããšã¯ãããŸãããMAX-IDEã¢ã»ã³ããªãããžã§ã¯ãã«è€æ°ã®ã¢ã»ã³ããªãã¡ã€ã«ãå«ãŸããå Žåã¯ããããã®ããªããã»ããµåœä»€ãŸãã¯ã€ã³ã¯ã«ãŒããã¡ã€ã«åœä»€ãããã®åœä»€ã䜿çšããåã¢ã»ã³ããªãã¡ã€ã«ã«å«ãŸããŠããªããã°ãªããŸããã
- ãããžã§ã¯ãå ã®ã¢ã»ã³ããªãã¡ã€ã«ã®æ°ã«ããããããåã¢ã»ã³ããªãã¡ã€ã«ã®æ«å°Ÿã«ïœ¢endã¹ããŒãã¡ã³ããèšå ¥ããå¿ èŠããããŸãã
- ã€ã³ã¯ã«ãŒããã¡ã€ã«ã®æ«å°Ÿã«ã¯ãendã¹ããŒãã¡ã³ããé 眮ããªãããã«ããŠãã ããã
- è€æ°ã®ã¢ã»ã³ããªãã¡ã€ã«ããããžã§ã¯ãã«å«ãŸããŠããå Žåããã¹ãŠã®ãã¡ã€ã«ã®ãã¹ãŠã®èå¥åãå®è³ªçã«ãããªãã¯ã«ãªããŸããããªãã¡ããããã®ã¢ã»ã³ããªãã¡ã€ã«ã®ã³ãŒããããã®ãããžã§ã¯ãå ã®ä»ã®ã¢ã»ã³ããªãã¡ã€ã«ã§å®çŸ©ãããã«ãŒãã³ãåŒã³åºããããã©ãã«ãåç §ãããããããšãã§ãããšããããšã§ãã
æ¢åã®ãããžã§ã¯ããéã
以åã«äœæããMAX-IDEãããžã§ã¯ããéãã«ã¯ãã¡ãã¥ãŒãã[Project] â [Open Project]ãéžæããéããããããžã§ã¯ãã®.prjãã¡ã€ã«ãéžæããŸããSerial-to-JTAGããŒããšè©äŸ¡ãããããŒããæ£ããæ¥ç¶ããªãã§é»æºãæå ¥ããå Žåã«MAXQ JTAGãããžã§ã¯ããéããšããšã©ãŒã¡ãã»ãŒãžã衚瀺ãããå ŽåããããŸãã
ãããžã§ã¯ããäœæããŠéããšããããžã§ã¯ãã«å«ãŸããã¢ã»ã³ããªã³ãŒããã¡ã€ã«ãå·ŠåŽã®ããã«ã«äžèŠ§è¡šç€ºãããŸãããã¡ã€ã«åãããã«ã¯ãªãã¯ãããšã以äžã®å³3ã«ç€ºãããã«ããã®ãã¡ã€ã«ãéããŠMAX-IDEã§ç·šéããããšãã§ããããã«ãªããŸãã
å³3. MAX-IDEã®ãããžã§ã¯ãç°å¢
ã³ãŒãã®å®è¡ãšãããã°
ãããžã§ã¯ãã®ã³ã³ãã€ã«
ãããžã§ã¯ããã¡ã€ã«ãã³ã³ãã€ã«ããã«ã¯ãã¡ãã¥ãŒãã[Debug] â [Make]ãŸãã¯[Debug] â [Build All]ãé ã«éžæããããŒã«ããŒã®ãããã®ã³ãã³ãã«å¯Ÿå¿ããã·ã§ãŒãã«ãããã¿ã³ãã¯ãªãã¯ããããF7 ([Make]ãšåã)ãæŒããŸããMAXQã¢ã»ã³ãã©ãèµ·åããŸãããšã©ãŒãçºçããªããã°ãCompiling...Build Successfulã®ã¡ãã»ãŒãžã[Messages]ãŠã£ã³ããŠã«è¡šç€ºãããŸããæ§ç¯ã«ãã£ãŠäœããã®ãšã©ãŒãããå Žåããã®ãšã©ãŒã[Messages]ãŠã£ã³ããŠã«è¡šç€ºãããŸãã
ãããžã§ã¯ãã®å®è¡
ãããžã§ã¯ãã®ã³ã³ãã€ã«ãæ£åžžã«å®äºããã°ã以äžã®ããããã®æ¹æ³ã䜿çšããŠãããã¬ã§ãããžã§ã¯ããå®è¡ããããšãã§ããŸãã
- [Debug] â [Run] (F5)ãéžæãããšãJTAGã€ã³ã¿ãã§ãŒã¹ãçµç±ããŠãã³ã³ãã€ã«ããããããžã§ã¯ãã³ãŒããMAXQãã€ã¯ãã³ã³ãããŒã©ã«ããŒããããŠå®è¡ãéå§ãããŸããããã°ã©ã ã®å®è¡ã¯ã[Debug] â [Stop] (Shift+F5)ãéžæãããŸã§ããŸãã¯[Pause]ãã¿ã³ãã¯ãªãã¯ãããŸã§ããããã¯ãã¬ãŒã¯ãã€ã³ããçŸãããŸã§ç¶ç¶ãããŸãã
- [Debug] â [Step Into] (F11)ãéžæãããšãã³ã³ãã€ã«ãããããã°ã©ã ãããŒããããŠããœãŒã¹ã³ãŒãã®æåã®è¡ã§å®è¡ã忢ããŸãã
- [Debug] â [Run to Cursor] (Control+F10)ãéžæãããšãã³ã³ãã€ã«ãããããã°ã©ã ãããŒããããŠå®è¡ãéå§ãããŸããå®è¡ã¯ãå®è¡ãã€ã³ãããç·šéã«ãŒãœã«ã®é 眮ãããè¡ã«å°éãããããã¬ãŒã¯ãã€ã³ãã«å°éãããŸã§(ããããæ©ãæ¹)ãç¶ç¶ãããŸããã«ãŒãœã«ããœãŒã¹ã³ãŒãè¡ã«çœ®ãããŠããªãå Žåã«ãã®ãªãã·ã§ã³ãéžæãããšãšã©ãŒãçããŸãã
- ãã¬ãŒã¯ãã€ã³ããã»ãããããè¡ã«ã«ãŒãœã«ãç§»åãã[Debug] â [Toggle Breakpoint]ãé ã«éžæããŸãã
- ãã¬ãŒã¯ãã€ã³ããã»ãããããè¡ã«ã«ãŒãœã«ãç§»åããããŒã«ããŒã®åæ¢ä¿¡å·ã®ã¢ã€ã³ã³ãã¯ãªãã¯ããŸãã
- ç·šéãŠã£ã³ããŠã§ããã¬ãŒã¯ãã€ã³ããã»ãããããè¡ã®è¡çªå·ãã¯ãªãã¯ããŸãã
[Debug] â [Stop]ãéžæãããšããããã¯ããŒã«ããŒã®[Stop]ã¢ã€ã³ã³ãã¯ãªãã¯ãããšãããã°ã©ã ã®å®è¡ã¯å®å šã«åæ¢ããŸããããããå®è¡ãæåã®è¡(Step Into)ãã«ãŒãœã«è¡(Run to Cursor)ããŸãã¯ãã¬ãŒã¯ãã€ã³ããèšå®ããè¡ã§åæ¢ããå Žåãããã°ã©ã ã¯ãã¹ããããã€ã¹ãããã¢ãŒãã§å®è¡ãããããšããããŸããã¹ããããã€ã¹ãããã¢ãŒãã«ã¯ã[Pause]ãã¿ã³ãã¯ãªãã¯ããŠç§»è¡ããããšãã§ããŸãããã®ã¢ãŒãã§ã¯ãçŸåšã®å®è¡ãã€ã³ããç·ã®ç¢å°ã§ããŒã¯ããã以äžã®ã³ãã³ãã䜿çšããããšãã§ããŸãã
- [Debug] â [Step Into] (F11)ã[Debug] â [Step Over] (F10)ãããã³[Debug] â [Step Out] (Shift+F10)ã¯ããã¹ãŠã¢ã»ã³ããªãããã°ã¢ãŒãã§ã¯åãåäœã«ãªããŸããããªãã¡ã1ã€ã®åœä»€ãå®è¡ããå®è¡ãã€ã³ããæ¬¡ã®åœä»€ã«ç§»åããŸãã
- [Debug] â [Run]ã¯ãäžè¿°ã®ããã«çŸåšã®å®è¡ãã€ã³ããããæ¬¡ã®ãã¬ãŒã¯ãã€ã³ãã«å°éãããŸã§å®è¡ãç¶ç¶ãããŸãã
- [Debug] â [Run To Cursor]ã¯ãäžè¿°ã®ããã«çŸåšã®å®è¡ãã€ã³ããããã«ãŒãœã«è¡ã«å°éãããŸã§å®è¡ãç¶ç¶ãããŸãã
ããã»ããµã®ã¬ãžã¹ã¿ã衚瀺ããŠç·šé
ããã°ã©ã ãããŒããããŠãå°ãªããšã1ã€ã®åœä»€ãå®è¡ããããšããããã¬ã䜿çšããŠMAXQãã€ã¯ãã³ã³ãããŒã©ã®ã¬ãžã¹ã¿ã衚瀺ããŠç·šéããããšãã§ããŸãã[Window] â [Show] â [Registers]ãé ã«éžæãããšã¬ãžã¹ã¿ã»ããã®ç»é¢ã衚瀺ãããŸãããããã®å€ã¯ããããã¬ã§ã³ãŒããå®è¡ããã«ã€ããŠæŽæ°ãããŸããæžèŸŒã¿å¯èœãªã¬ãžã¹ã¿ã¯ããã®æ°å€ãã£ãŒã«ããããã«ã¯ãªãã¯ããŠæ°ããå€ã16é²ã10é²ããŸãã¯2é²ã§å ¥åããããšã«ãã£ãŠç·šéããããšãã§ããŸãã
MAXQ2000ãããã«é¢ããæ³šèšïŒLCDããŒã¿ãŒããŒããåãä»ããããŠããå Žåãã¬ãžã¹ã¿PO0ãPD0ãPO1ãPD1ãPO2ãPD2ãPO3ããŸãã¯PD3ã®å€ãæåã§ç·šéããªãã§ãã ãããLCDãåãä»ããç¶æ
ã§ãããã®ç«¯ååºåã«å€ãéçã«èšå®ãããšãLCDãã£ã¹ãã¬ã€ã«æå·ãäžãããããããããŸãã
ããã»ããµã®ã¡ã¢ãªã衚瀺ããŠç·šé
ããã°ã©ã ãããŒããããŠãå°ãªããšã1ã€ã®åœä»€ãå®è¡ããããšãMAXQãã€ã¯ãã³ã³ãããŒã©ã®å éšã¡ã¢ãªã衚瀺ããŠç·šéããããšãã§ããŸãã[Window] â [Show] â [Memory]ãé ã«éžæãããšå éšã¡ã¢ãªã®ç»é¢ã衚瀺ãããŸããç»é¢äžã®ããããããŠã³ãªã¹ãããéžæããããšã§ãã³ãŒããããŒã¿ããŸãã¯ã¹ã¿ãã¯ã¡ã¢ãªã衚瀺ããããšãã§ããŸããã¡ã¢ãªã¯ãã³ãŒããšã¹ã¿ãã¯ã¹ããŒã¹ã«ã€ããŠã¯16ãããå¹ ã§ãããŒã¿ã¹ããŒã¹ã§ã¯8ãããå¹ ã§è¡šç€ºãããŸããããŒã¿ãŸãã¯ã¹ã¿ãã¯ã¹ããŒã¹ã®ã¡ã¢ãªå€ã¯ãã¡ã¢ãªã®äœçœ®ãããã«ã¯ãªãã¯ããŠæ°ããå€ãå ¥åããããšã«ãã£ãŠç·šéããããšãã§ããŸãã
MAX-IDEã¢ã»ã³ãã©ã®äœ¿çš
MAX-IDEã«ã¯ããã«ããã¹ã¢ã»ã³ãã©ãçšæãããŠãããããã䜿çšããŠMAXQã®ã¢ã»ã³ããªèšèªã§ã¢ããªã±ãŒã·ã§ã³ãéçºããããšãã§ããŸãããã®ã¢ã»ã³ãã©ã«ã¯ãã€ã³ã¯ã«ãŒããã¡ã€ã«ãã·ã³ããªãã¯çåŒãæ¡ä»¶ä»ãã¢ã»ã³ããªãããã³ãã¯ãã®äœ¿çšãå¯èœãªã·ã³ã°ã«ãã¹ã®ããªããã»ããµãå«ãŸããŠããŸããã¢ã»ã³ãã©ãšããªããã»ããµã¯ãMAX-IDEç°å¢ã«å®å šã«çµ±åãããŠããŸãã
ãã¯ããšãã®ä»ã®ããªããã»ããµåœä»€ã®äœ¿ç𿹿³ã®äŸã«ã€ããŠã¯ãMacroãããžã§ã¯ãäŸãåç §ããŠãã ããã
äžè¬æ§æ
MAXQã¢ã»ã³ãã©ãšããªããã»ããµã¯ãã©ã¡ãã倧æå/å°æåãåºå¥ããŸãããã¢ã»ã³ããªã®ã¹ããŒãã¡ã³ãã¯ã以äžã®æžåŒã«ãããããŸãïŒ
[label:] [opcode [parameter [, parameter]]] [;comment]以äžã®ã³ãŒãã§å®äŸã瀺ããŸãïŒ
main: move Acc, A[2] ; copy A[2] to active accumulatoräžã«ç€ºãmainã©ãã«ã®ãããªèå¥åã«ã¯ã[a-zA-Z_?$0-9]ã®æåãå«ããããšãã§ããŸããã0ïœ9ã®æ°åã§å§ããããšã¯ã§ããŸãããèå¥åã¯127æåã®é·ããŸã§å ¥åå¯èœã§ãã
ã¢ãŒããã¯ãã£ãåœä»€ã»ãããã¢ãã¬ã¹æå®ã¢ãŒããããã³MAXQãã€ã¯ãã³ã³ãããŒã©ãã¡ããªã®ã³ã¢ã¬ãžã¹ã¿ã®è©³çްãªèª¬æã«ã€ããŠã¯ãMAXQãã¡ããªã®ãŠãŒã¶ã¬ã€ããåç §ããŠãã ããã
ãœãŒã¹ãã¡ã€ã«
MAX-IDEã®ãããžã§ã¯ããŠã£ã³ããŠã«äžèŠ§è¡šç€ºããããã¹ãŠã®ã¢ã»ã³ããªãœãŒã¹(.asm)ãã¡ã€ã«ã¯ããããžã§ã¯ããã³ã³ãã€ã«ãããšãã«ããŠã£ã³ããŠã«è¡šç€ºãããé åºã§ã¢ã»ã³ãã«ãããŸãããªã³ã«ã¯çšæãããŠããªããããè€æ°ã®ãã¡ã€ã«ã¯ã1ã€ã®ãã¡ã€ã«ã«çµåãããŠããã¢ã»ã³ããªãããå Žåãšåæ§ã®æ¹æ³ã§ã¢ã»ã³ãã«ãããŸãã
ãœãŒã¹ãã¡ã€ã«ã«ã¯ãã€ã³ã¯ã«ãŒãåœä»€ãçåŒ/å®çŸ©ããã¯ããæ¡ä»¶ä»ãã¢ã»ã³ããªãããã¯ãããã³ã¹ããŒãã¡ã³ããå«ããããšãã§ããŸãããããã®ãœãŒã¹ãã¡ã€ã«ããæåŸã®è¡ã¯ENDåœä»€ã§æ§æãããå¿ èŠããããŸãã
end
ã€ã³ã¯ã«ãŒããã¡ã€ã«
ã€ã³ã¯ã«ãŒã(.inc)ãã¡ã€ã«ã¯ãæç€ºçã«ãããžã§ã¯ãã«è¿œå ããå¿ èŠã¯ãããŸãããã€ã³ã¯ã«ãŒãåœä»€ã«ãã£ãŠèªåçã«èªã¿èŸŒãŸããŠè§£æãããŸããããã«ãã£ãŠãã€ã³ã¯ã«ãŒããã¡ã€ã«ã¯ããã®ãã¹ãŠã®ããã¹ããã€ã³ã¯ã«ãŒãåœä»€ã®ä»£ããã«ãœãŒã¹ãã¡ã€ã«å ã«ãããã®ãšããŠè§£æãããããã«ãªããŸãã
(source file): (equates.inc): $include(equates.inc) ---> MASK1 equ 0FFh MASK2 equ 0FEh (resume parsing in source <--- file)ã€ã³ã¯ã«ãŒããã¡ã€ã«ã«ã¯ãã€ã³ã¯ã«ãŒãåœä»€ãçåŒããã¯ããããã³DB/DWããŒã¿ã¹ããŒãã¡ã³ããå«ããããšãã§ããŸãããã¢ã»ã³ããªã«ãŒãã³ãå«ããããšã¯ã§ããŸãããã€ã³ã¯ã«ãŒããã¡ã€ã«ã¯å¿ ãããENDåœä»€ã§çµããå¿ èŠã¯ãããŸããã
MAX-IDEã«ã¯ãåMAXQãã€ã¯ãã³ã³ãããŒã©ã®æšæºã€ã³ã¯ã«ãŒããã¡ã€ã«ãçšæãããŠããŸãããã®ã€ã³ã¯ã«ãŒããã¡ã€ã«ãããã€ã¯ãã³ã³ãããŒã©ã®åšèŸºæ©åšã¬ãžã¹ã¿ã»ãããããã³ãŠãŒãã£ãªãã£ROMãæäŸãã颿°ã®ã¢ãã¬ã¹ãå®çŸ©ããŠããŸãããããã®ã€ã³ã¯ã«ãŒããã¡ã€ã«ã¯ããã¹ãŠã®ã¢ã»ã³ãã«èšèªãããžã§ã¯ãã§äœ¿çšããããšãå¯èœã§ãããããã®ãã¡ã€ã«ã¯ãMAX-IDEã®ã¡ã€ã³ã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªã®äžã®Examplesãµããã£ã¬ã¯ããªã«ãããŸãã
宿°
ã¹ããŒãã¡ã³ããŸãã¯çåŒå®çŸ©ã®å³å€ãšããŠäœ¿çšããããã®å®æ°å€ã¯ã以äžã®4ã€ã®åœ¢åŒã®ããããã§èšè¿°ããããšãã§ããŸãã
- 10鲿°(ããã©ã«ã) - æ«å°Ÿãæåã§ãªãããŸãã¯ïœ¢dã§ãããäŸïŒ10ã07d
- 2鲿° - æ«å°Ÿãbã§ãããäŸïŒ01bã1101101b
- 16鲿° - 0ïœ9ã®æ°åã§å§ãŸã£ãŠãæ«å°Ÿãhã§ãããäŸïŒ10hã09FFEh
- åäžæå - ASCIIã®ãã€ãå€ã«å€æããããäŸïŒïœ¢A
move Acc, #(1+1) ; 2 : Addition move Acc, #(4-1) ; 3 : Subtraction move Acc, #(2*2) ; 4 : Multiplication move Acc, #(25/5) ; 5 : Division (truncated to integer) move Acc, #(MIN(6,7)) ; 6 : Minimum of two values move Acc, #(MAX(6, 7)) ; 7 : Maximum of two values move Acc, #'A' ; ASCII value of 'A' move Acc, #(550h | 055h) ; 555h : Logical OR move Acc, #(550h & 055h) ; 050h : Logical AND move Acc, #(550h ^ 055h) ; 505h : Logical XOR move Acc, HIGH(#1234h) ; 12h : Select high byte of word move Acc, LOW(#1234h) ; 34h : Select low byte of word move Acc, NOT(#0000h) ; FFFFh : Bitwise negation move Acc, #001h << 7 ; 080h : Shift left move Acc, #080h >> 7 ; 001h : Shift right
çåŒ
çåŒã¯EQUåœä»€ã䜿çšããŠå®çŸ©ãããéåžžã宿°å€ã䜿çšãããå Žæã§æ°å€ã«çœ®ãæããããã«äœ¿çšãããŸããçåŒã¯ã宿°ã«ã€ããŠäžèšã§å®çŸ©ãããã¹ãŠã®åœ¢åŒãšå®æ°æŒç®åã䜿çšããããšãã§ããŸããã©ãã«ã¯å®æ°ãšããŠèªèãããŸããã
ONE equ 01 TWO equ 02 move Acc, #ONE move Acc, #(ONE+TWO)çåŒã¯ããã®åŸã«ç¶ãçåŒã®å®çŸ©ã§ã䜿çšããããšãã§ããŸãã
ONE equ 01 TWO equ ONE+ONE
å®çŸ©
å®çŸ©ã䜿çšãããšãCã¹ã¿ã€ã«ã®ããã¹ãã®ãŸãŸã§ã®çœ®æãå¯èœãšãªããŸããäœåãªåŠçã¯å¿ èŠãããŸãããã€ã³ã¯ã«ãŒããã¡ã€ã«ã§åšèŸºæ©åšã¬ãžã¹ã¿ãå®çŸ©ããå Žåã«ãã䜿çšãããŸãã眮æããã¹ãã¯1è¡ã«éå®ãããŸããèªèãããç¶ç¶æåã¯ãããŸãããCã¹ã¿ã€ã«ã®ãã¯ãã¯èªèãããŸããã
#define PO[0] M0[0] move Acc, PO[0] ; Parses as 'move Acc, M0[0]'
ããŒã¿ããŒã¯ãŒã
DBãšDWã®åœä»€ã¯ãæªåŠçã®ãã€ã(ã¹ããªã³ã°å€ã®ãã€ããå«ã)ãã¯ãŒããçŸåšäœçœ®ã®16é²ãã¡ã€ã«ã«æ¿å ¥ããå Žåã«äœ¿çšãããŸãã
db 055h, 0AAh, 055h, 0AAh ; byte values dw 0AAAAh, 05555h ; word values db "MAX-IDE Environment " ; byte value for each char (padded to even count)ãããããŒã¿å€ã¯ã³ãŒãã¹ããŒã¹ã«æ¿å ¥ãããããšã«çæããŠãã ããããã®ããã2ã€ã®åœä»€ã¹ããŒãã¡ã³ãã»ããã®éã«DBã¹ããŒãã¡ã³ããæ¿å ¥ããå Žåãå®çŸ©ããããã€ãæ°ã¯ã¯ãŒãã¢ã©ã€ã³ã¡ã³ãã®ã¢ã»ã³ããªãšã©ãŒãé²ãããã«å¶æ°ã§ãªããã°ãªããŸããã
æ¡ä»¶ä»ãã¢ã»ã³ããª
æ¡ä»¶ä»ãã¹ããŒãã¡ã³ãã«ãã£ãŠãç¹å®ã®ããŒã«æ¡ä»¶ãæºããããå Žåã«ã®ã¿ã³ãŒããããã¯ãã¢ã»ã³ãã«ããããšãã§ããŸãã以äžã®åœ¢åŒã«ãªããŸãã
IF (<boolean statement>) statements ... ENDIFããŒã«ã¹ããŒãã¡ã³ãã¯ã宿°ãçåŒãããã³ããŒã«æŒç®å(=ã!=ã<ã<=ã>ãããã³>=)ã䜿çšããŠå®çŸ©ãããŸããã³ãŒããšã€ã³ã¯ã«ãŒãã¹ããŒãã¡ã³ãã ãããæ¡ä»¶ä»ãã¢ã»ã³ããªãããã¯å ã§äœ¿çšããããšãã§ããŸãããã¯ããšçåŒã¯äœ¿çšã§ããŸããã
DEBUG equ 0 DOINC equ 1 IF (DEBUG != 0) call RoutineDbg ENDIF IF (DEBUG = 0) call Routine ENDIF IF (DOINC = 1) $include(defines.inc) ENDIF
ãã¯ã
ãã¯ãã«ãã£ãŠã颿°ãåŒã³åºããããã³ã«ãçŽåçã«å±éãããŠã¢ã»ã³ãã«ãããã³ãŒããããã¯ã䜿çšããŠé¢æ°ãå®çŸ©ããããšãã§ããŸãã以äžã®åœ¢åŒã«ãªããŸãã
<identifier> MACRO [[PARAM <parm1>] [whitespace AND/OR comma] [<parm2>] ...] [LOCAL <local1> [whitespace AND/OR comma] [<local2>] ...] <macro assembly statements, local labels> ... ENDMãã¯ãã®æãç°¡åãªã¿ã€ãã¯ãåç §ããããã³ã«ã³ãŒãã®æ¿å ¥ã ããè¡ããšãããã®ã§ããæ¿å ¥ãããã³ãŒãå ã®ãçåŒãå®çŸ©ãããã³ãã¹ãããããã¯ãåŒåºãã¯ãã¹ãŠæ£åžžã«åŠçãããŸãã
ThreeNops MACRO nop nop nop ENDM ThreeNops --> nop nop nopãã¯ãã¯ãªãã·ã§ã³ãšããŠ1ã€ä»¥äžã®ãã©ã¡ãŒã¿ãå®çŸ©ããããšãã§ããŸããããã¯ããã¯ããåç §ããããšãã«æž¡ãããå€ã§ãããããã®å€ã¯å±éãããã³ãŒãã«è²Œãä»ããããŸãã以äžã®ãã¯ãã¯ãã¹ã¿ãã¯ã¹ããŒã¹ã®1ã¬ãã«ãç ç²ã«ããŠãæžèŸŒã¿å¯èœãªããããã¬ãžã¹ã¿(Accãé€ã)ã«ïœ¢INCïœ£é¢æ°ãæäŸãããã©ã¡ãŒã¿ã䜿çšããŠããŸãã
Inc MACRO PARAM Register push Acc move Acc, Register add #1 move Register, Acc pop Acc ENDM Inc LC[0] --> push Acc move Acc, LC[0] add #1 move LC[0], Acc pop Accãã¯ãã«ã¯ããŒã«ã«èå¥åãå«ããããšãã§ããŸãããã®èå¥åã¯ããã¯ãã®ååç §ã§äžæã«ãªãããã«ãå±éãããã³ãŒãå ã§ååã倿ŽãããŸãã
LoopN MACRO PARAM Count LOCAL L1 move LC[0], Count L1: djnz LC[0], L1 ENDMäžèšã®ãã¯ãã§ã¯ããã¯ããåç §ãããŠãã®ã³ãŒããæ¿å ¥ããããã³ã«ãL1ã©ãã«ã®ååãå¥ã®äžæçãªå€ã«å€æŽãããŠããŸãã
åèè³æ
For more details, see the MAXQ2000 Evaluation Kit data sheet which is included on your evaluation kit CD or available online.