ããã«ã¡ã¯ïŒãã®ããã°ã§ã¯ãã³ã³ãã¥ãŒã¿ãŒã®æŽå²ã«ãããŠéåžžã«éèŠãªåœ¹å²ãæããã8ããããã€ã¯ãããã»ããµãMOS Technology 6502ãã®ã¢ã»ã³ããªèšèªã«ã€ããŠãåºæ¬ãã解説ããŠãããŸããçŸä»£ã®ããã°ã©ãã³ã°èšèªã«æ £ããŠããæ¹ã«ãšã£ãŠã¯ãå°ãç°è³ªãªäžçã«èŠãããããããŸããããã³ã³ãã¥ãŒã¿ãŒãã©ã®ããã«åäœããŠããã®ãããã®æ ¹æºçãªéšåã«è§Šããããšãã§ãããéåžžã«å¥¥æ·±ãé åçãªããŒãã§ããðª
ããªãä»ããå€ãCPUã®ã¢ã»ã³ããªèšèªãïŒããšæããããããŸããããããã6502ãåŠã¶ããšã«ã¯å€ãã®ã¡ãªããããããŸãã
- ã³ã³ãã¥ãŒã¿ã®åºç€ç解: ã¡ã¢ãªãCPUã¬ãžã¹ã¿ãçŽæ¥æäœããããšã§ãã³ã³ãã¥ãŒã¿ã®åºæ¬çãªä»çµã¿ãæ·±ãç解ã§ããŸãã
- ã¬ããã³ã³ãã¥ãŒãã£ã³ã°: Apple IIãã³ã¢ããŒã«64ããã¡ããªãŒã³ã³ãã¥ãŒã¿ïŒNESïŒãªã©ãæŽå²çãªåæ©ã§äœ¿ãããCPUã§ããããããã®ãã·ã³åãã®ããã°ã©ãã³ã°ïŒäŸãã°NESã®èªäœã²ãŒã éçºãªã©ïŒãå¯èœã«ãªããŸãã
- åŠç¿ã®ãããã: çŸä»£ã®CPUïŒäŸãã°x86-64ã¯çŽ3000åœä»€ïŒãšæ¯èŒããŠã6502ã®åœä»€ã»ããã¯çŽ50çš®é¡ãšéåžžã«å°ãªããå šäœåãææ¡ããããã§ããäœã¬ãã«ããã°ã©ãã³ã°ã®å ¥éãšããŠæé©ã§ãã
- ããã°ã©ãã³ã°ã¹ãã«ã®åäž: ãªãœãŒã¹ãéãããç°å¢ã§ã®ããã°ã©ãã³ã°ã¯ãå¹ççãªã³ãŒããæžãããã®æèåãé€ããŸãã
ãããäžç·ã«6502ã¢ã»ã³ããªèšèªã®æãéããŠã¿ãŸãããïŒðª
æŽå²çèæ¯: 6502ãšã¯ïŒ
MOS Technology 6502ã¯ã1975幎ã«ã¢ã¹ãã¯ãããžãŒç€Ÿã«ãã£ãŠéçºããã8ããããã€ã¯ãããã»ããµã§ããåœæã競å補åã§ãã£ãã¢ãããŒã©ã®MC6800ãªã©ãåèã«ãã€ã€ããããã·ã³ãã«ã§ããã€äœäŸ¡æ ŒïŒåœåã¯çŽ$25ãMC6800ã®çŽ1/6ïŒãå®çŸããããšã§ã倧ããªæ³šç®ãéããŸããã
ãã®äœäŸ¡æ Œãšé«æ§èœïŒç¹å®ã®åŠçã«ãããŠïŒããããŒãœãã«ã³ã³ãã¥ãŒã¿é©åœã®ç«ä»ã圹ãšãªããŸãããç¹ã«æåãªæ¡çšäŸãšããŠã¯ã
- Apple II (1977幎): ããŒãœãã«ã³ã³ãã¥ãŒã¿ã®æ®åã«å€§ããè²¢ç®ãããã·ã³ã
- ã³ã¢ããŒã«PET 2001 (1977幎): æè²åžå Žãªã©ã§äººæ°ãåããã
- Atari 400/800 (1979幎): ã²ãŒã æ©ãšããŠã人æ°ããã£ãã
- ã³ã¢ããŒã« VIC-20 (1980幎): Linuxéçºè ã®ãªãŒãã¹ã»ããŒãã«ãºæ°ãæåã«ããã°ã©ãã³ã°ãåŠãã ãã·ã³ãšããŠãç¥ãããŠããŸãã
- ã³ã¢ããŒã«64 (1982幎): æŽå²äžæã売ããã³ã³ãã¥ãŒã¿ã®äžã€ã
- ãã¡ããªãŒã³ã³ãã¥ãŒã¿ (NES) (1983幎): 任倩å ãçºå£²ãã家åºçšã²ãŒã æ©ã6502ã®ã«ã¹ã¿ã çïŒãªã³ãŒè£œ2A03ïŒãæèŒãããäžçäžã§å€§ãããããŸãããå 任倩å 瀟é·ã®æ ã»å²©ç°è¡æ°ããPET2001ã§6502ããã°ã©ãã³ã°ã«ç²Ÿéããå€ãã®ãã¡ãã³ã³ãœããéçºã«é¢ãããŸããã
- PCãšã³ãžã³ (TurboGrafx-16) (1987幎): ãã¡ãã6502ã®äºæCPU (HuC6280) ãæèŒãããŸããã
ãããã®ãã·ã³ã§åäœãããœãããŠã§ã¢ã®å€ããã6502ã¢ã»ã³ããªèšèªã§æžãããŠããŸãããçŸåšã§ããã¬ããã²ãŒã éçºãçµã¿èŸŒã¿ã·ã¹ãã ããããŒçšéãªã©ã§æŽ»çšãããŠããŸãã
6502ã¢ãŒããã¯ãã£ã®åºæ¬
6502ã¢ã»ã³ããªãç解ããã«ã¯ããŸãCPUã®åºæ¬çãªæ§é ïŒã¢ãŒããã¯ãã£ïŒãç¥ãå¿ èŠããããŸãã6502ã¯æ¯èŒçã·ã³ãã«ãª8ãããCPUã§ãã
ã¬ãžã¹ã¿
CPUå éšã«ãããé«éãªäžæèšæ¶é åã®ããšãã¬ãžã¹ã¿ãšåŒã³ãŸãã6502ã«ã¯ããã€ãã®äž»èŠãªã¬ãžã¹ã¿ããããŸãããããã¯ããã°ã©ã ã«ãŠã³ã¿(PC)ãé€ãããã¹ãŠ8ãããïŒ0ãã255ãŸã§ã®å€ãæ±ããïŒã§ãã
ã¬ãžã¹ã¿ | å称 | 説æ |
---|---|---|
A | ã¢ãã¥ã ã¬ãŒã¿ (Accumulator) | æŒç®ã®äžå¿ãšãªãã¬ãžã¹ã¿ãå ç®ãæžç®ãè«çæŒç®ãªã©ã®çµæã¯äž»ã«ããã«æ ŒçŽãããŸãã |
X | ã€ã³ããã¯ã¹ã¬ãžã¹ã¿X (Index Register X) | ã¡ã¢ãªã¢ãã¬ã¹ã®ä¿®é£ŸïŒã€ã³ããã¯ã¹ã¢ãã¬ãã·ã³ã°ïŒããã«ãŠã³ã¿ãšããŠäœ¿çšãããŸãã |
Y | ã€ã³ããã¯ã¹ã¬ãžã¹ã¿Y (Index Register Y) | Xã¬ãžã¹ã¿ãšåæ§ã«ãã¡ã¢ãªã¢ãã¬ã¹ã®ä¿®é£Ÿãã«ãŠã³ã¿ãšããŠäœ¿çšãããŸããäžéšã®ã¢ãã¬ãã·ã³ã°ã¢ãŒãã§ã¯Xãšã¯ç°ãªã䜿ããæ¹ãããŸãã |
PC | ããã°ã©ã ã«ãŠã³ã¿ (Program Counter) | 次ã«å®è¡ããåœä»€ãæ ŒçŽãããŠããã¡ã¢ãªã¢ãã¬ã¹ãæã16ãããã®ã¬ãžã¹ã¿ãåœä»€ãå®è¡ããããã³ã«èªåçã«ã€ã³ã¯ãªã¡ã³ããããŸãããžã£ã³ãåœä»€ãªã©ã§å€ãå€æŽã§ããŸãã |
SP | ã¹ã¿ãã¯ãã€ã³ã¿ (Stack Pointer) | ã¹ã¿ãã¯ãšåŒã°ããã¡ã¢ãªé åã®ã次ã«å ¥ããå ŽæïŒã®ãªãã»ããïŒãæã8ãããã®ã¬ãžã¹ã¿ã6502ã§ã¯ã¹ã¿ãã¯é åã¯ã¡ã¢ãªã®$0100ãã$01FFãŸã§ã®256ãã€ãã«åºå®ãããŠããŸãããµãã«ãŒãã³åŒã³åºããå²ã蟌ã¿æã«ãæ»ãã¢ãã¬ã¹ãªã©ãäžæçã«ä¿åããããã«äœ¿ãããŸãã |
P | ããã»ããµã¹ããŒã¿ã¹ã¬ãžã¹ã¿ (Processor Status Register) / ãã©ã°ã¬ãžã¹ã¿ | æŒç®çµæã®ç¶æ ïŒãŒãããè² ããæ¡ããµãããããªã©ïŒããCPUã®åäœã¢ãŒãã瀺ããã©ã°ïŒãããïŒãéãŸã£ã8ãããã®ã¬ãžã¹ã¿ãæ¡ä»¶åå²åœä»€ãªã©ã§åç §ãããŸãã |
ã¹ããŒã¿ã¹ã¬ãžã¹ã¿ (P) ã®ãã©ã°
Pã¬ãžã¹ã¿ã®åãããã«ã¯æå³ããããŸãã
ããã | èšå· | å称 | 説æ |
---|---|---|---|
7 | N | ãã¬ãã£ã (Negative) | æŒç®çµæã®æäžäœããã(bit 7)ã1ïŒã€ãŸãè² ã®æ°ãšã¿ãªããå ŽåïŒã®ãšãã«ã»ãã(1)ãããŸãã |
6 | V | ãªãŒããŒãã㌠(Overflow) | 笊å·ä»ãæŒç®ã§ãªãŒããŒãããŒïŒçµæãè¡šçŸã§ããç¯å²ãè¶ ããïŒãçºçãããšãã«ã»ãããããŸããADC, SBC, BITåœä»€ãªã©ã§åœ±é¿ãåããŸãã |
5 | – | äºçŽæžã¿ (Reserved) | åžžã«ã»ãããããŠããŸããéåžžã¯ç¡èŠãããŸãã |
4 | B | ãã¬ãŒã¯ (Break) | BRKåœä»€ã§å²ã蟌ã¿ãçºçãããšãã«ã»ãããããIRQå²ã蟌ã¿ã®å Žåã¯ã¯ãªã¢(0)ãããŸããå²ã蟌ã¿ãã³ãã©å ã§ã©ã¡ãã®å²ã蟌ã¿ãåºå¥ããã®ã«äœ¿ãããŸãã |
3 | D | ãã·ãã« (Decimal) | ã»ãããããšãADCããã³SBCåœä»€ãBCDïŒäºé²ååé²æ°ïŒã¢ãŒãã§åäœããŸããå€ãã®6502ïŒç¹ã«ãã¡ãã³ã³çïŒã§ã¯ãã®æ©èœã¯åé€ãŸãã¯æªå®è£ ã§ããCLDåœä»€ã§ã¯ãªã¢ãSEDåœä»€ã§ã»ããããŸãã |
2 | I | å²ã蟌ã¿çŠæ¢ (Interrupt Disable) | ã»ãããããŠããéãIRQå²ã蟌ã¿ãç¡å¹ã«ãªããŸããNMIå²ã蟌ã¿ã¯åœ±é¿ãåããŸãããCLIåœä»€ã§ã¯ãªã¢ãSEIåœä»€ã§ã»ããããŸãã |
1 | Z | ãŒã (Zero) | æŒç®ãããŒãåœä»€ã®çµæã0ã«ãªã£ããšãã«ã»ãããããŸãã |
0 | C | ãã£ãªãŒ (Carry) | å ç®ã§æ¡ããµããçºçããå ŽåããŸãã¯æžç®ã§ãããŒïŒåãå ¥ãïŒãçºçããªãã£ãå Žåã«ã»ãããããŸããã·ããåœä»€ã§ã¯ãã¯ã¿åºããããããããã«å ¥ããŸããCLCåœä»€ã§ã¯ãªã¢ãSECåœä»€ã§ã»ããããŸãã |
ã¡ã¢ãª
6502ã¯16ãããã®ã¢ãã¬ã¹ãã¹ãæã€ãããæ倧ã§64KBïŒ65536ãã€ããã¢ãã¬ã¹$0000ãã$FFFFãŸã§ïŒã®ã¡ã¢ãªç©ºéãæ±ãããšãã§ããŸãããã®ã¡ã¢ãªç©ºéã«ã¯ãããã°ã©ã ã³ãŒããããŒã¿ãã¹ã¿ãã¯ããããŠã¡ã¢ãªããããI/OïŒããŒããŒããç»é¢ããµãŠã³ããªã©ã®ããŒããŠã§ã¢ãã¡ã¢ãªã®äžéšãšããŠã¢ã¯ã»ã¹ããä»çµã¿ïŒãªã©ãé 眮ãããŸãã
ããã€ãã®ç¹å¥ãªã¡ã¢ãªé åããããŸãã
- ãŒãããŒãž ($0000 – $00FF): æåã®256ãã€ãããã®é åãžã®ã¢ã¯ã»ã¹ã¯ãä»ã®ã¡ã¢ãªã¢ãã¬ã¹ãžã®ã¢ã¯ã»ã¹ãããé«éãªåœä»€ïŒãŒãããŒãžã¢ãã¬ãã·ã³ã°ïŒãçšæãããŠãããé »ç¹ã«ã¢ã¯ã»ã¹ããå€æ°ããã€ã³ã¿ïŒéæ¥ã¢ãã¬ã¹ïŒã®çœ®ãå ŽæãšããŠéèŠã§ãã
- ã¹ã¿ã㯠($0100 – $01FF): 2çªç®ã®256ãã€ããã¹ã¿ãã¯ãã€ã³ã¿(SP)ã«ãã£ãŠç®¡çããããµãã«ãŒãã³ã³ãŒã«æã®æ»ãã¢ãã¬ã¹ãã¬ãžã¹ã¿ã®äžæéé¿ã«äœ¿ãããŸãããã®å Žæã¯å€æŽã§ããŸããã
- å²ã蟌ã¿ãã¯ã¿ ($FFFA – $FFFF): ã¡ã¢ãªã®æåŸã®6ãã€ããNMIïŒãã³ãã¹ã«ãã«å²ã蟌ã¿ïŒãRESETïŒãªã»ããïŒãIRQïŒå²ã蟌ã¿èŠæ±ïŒ/BRKïŒãã¬ãŒã¯åœä»€ïŒãçºçãããšãã«ãCPUããžã£ã³ãããå
ã®ã¢ãã¬ã¹ãæ ŒçŽãããŠããŸãã
- $FFFA/$FFFB: NMIãã³ãã©ã®ã¢ãã¬ã¹ïŒãªãã«ãšã³ãã£ã¢ã³ïŒ
- $FFFC/$FFFD: RESETãã³ãã©ïŒããã°ã©ã éå§å°ç¹ïŒã®ã¢ãã¬ã¹ïŒãªãã«ãšã³ãã£ã¢ã³ïŒ
- $FFFE/$FFFF: IRQ/BRKãã³ãã©ã®ã¢ãã¬ã¹ïŒãªãã«ãšã³ãã£ã¢ã³ïŒ
6502ã¯ãªãã«ãšã³ãã£ã¢ã³æ¹åŒãæ¡çšããŠããŸããããã¯ã16ãããã®ã¢ãã¬ã¹ãªã©ã®è€æ°ãã€ãã®ããŒã¿ãã¡ã¢ãªã«æ ŒçŽããéã«ãäžäœãã€ããå ïŒå°ããã¢ãã¬ã¹ïŒã«ãäžäœãã€ããåŸïŒå€§ããã¢ãã¬ã¹ïŒã«æ ŒçŽããæ¹åŒã§ããäŸãã°ãã¢ãã¬ã¹$1234ã$FFFCã«æ ŒçŽããå Žåãã¡ã¢ãªã®$FFFCã«ã¯$34ãã$FFFDã«ã¯$12ãæ ŒçŽãããŸãã
ã¢ãã¬ãã·ã³ã°ã¢ãŒã аЎÑеÑПваÑа
6502ã®å€§ããªç¹åŸŽã®äžã€ããè±å¯ïŒåœæãšããŠã¯ïŒãªã¢ãã¬ãã·ã³ã°ã¢ãŒãã§ããã¢ãã¬ãã·ã³ã°ã¢ãŒããšã¯ãåœä»€ãæäœããããŒã¿ïŒãªãã©ã³ãïŒãã©ãã«ããã®ããæå®ããæ¹æ³ã®ããšã§ããããã«ãããå°ãªãåœä»€æ°ã§ãæè»ãªã¡ã¢ãªã¢ã¯ã»ã¹ãå¯èœã«ãªã£ãŠããŸããã¢ãã¬ãã·ã³ã°ã¢ãŒãã«ãã£ãŠãåœä»€ã®ãã€ãæ°ãå®è¡é床ãå€ãããŸãã
ã¢ã»ã³ãã©ã§ã¯ã16é²æ°ã `$` ã§å§ãïŒäŸ: `$1A`ïŒã2é²æ°ã `%` ã§å§ããã®ãäžè¬çã§ããïŒç°å¢ã«ãã£ãŠç°ãªãå ŽåããããŸãïŒ
ã¢ãŒã | ã¢ã»ã³ãã©è¡šèšäŸ | 説æ | ãã€ãæ° |
---|---|---|---|
Implied (Implied) | CLC |
ãªãã©ã³ããå¿ èŠãšããªãåœä»€ã察象ã¯æé»çã«æ±ºãŸã£ãŠããŸãïŒäŸ: ãã£ãªãŒãã©ã°ãã¯ãªã¢ïŒã | 1 |
Accumulator (Accumulator) | ASL A |
ã¢ãã¥ã ã¬ãŒã¿(Aã¬ãžã¹ã¿)ã察象ãšããåœä»€ãImpliedã®äžçš®ã§ãããæ瀺çã« `A` ãšæžãããšãå€ãã§ãã | 1 |
Immediate (Immediate) | LDA #$10 |
åœä»€ã®çŽåŸã«ç¶ããã€ãããæäœããå€ãã®ãã®ã§ãïŒå³å€ïŒã `#` ãã€ããŠç€ºããŸãã | 2 |
Zero Page (Zero Page) | LDA $80 |
ãŒãããŒãžïŒ$0000-$00FFïŒå ã®ã¢ãã¬ã¹ã8ãããã§æå®ããŸããé«éã«ã¢ã¯ã»ã¹ã§ããŸãã | 2 |
Zero Page, X (Zero Page, Indexed with X) | LDA $80,X |
ãŒãããŒãžã¢ãã¬ã¹ã«Xã¬ãžã¹ã¿ã®å€ãå ç®ããå®å¹ã¢ãã¬ã¹ãæå®ããŸãããŒãããŒãžå ã§ããŒãã«ãæ±ãã®ã«äŸ¿å©ã§ããã¢ãã¬ã¹ã$FFãè¶ ããå Žåã$00ã«ã©ããã¢ã©ãŠã³ãããŸããïŒ$01xxçªå°ã«ã¯ãªããŸããïŒããããŸã§ãŒãããŒãžå ã®ã¢ãã¬ã¹èšç®ã§ãã | 2 |
Zero Page, Y (Zero Page, Indexed with Y) | LDX $80,Y |
ãŒãããŒãžã¢ãã¬ã¹ã«Yã¬ãžã¹ã¿ã®å€ãå ç®ããå®å¹ã¢ãã¬ã¹ãæå®ããŸããLDAãSTAã§ã¯äœ¿ããŸãããLDX, STXåœä»€ã§ã®ã¿å©çšå¯èœã§ãã | 2 |
Absolute (Absolute) | LDA $1234 |
16ãããã§ã¡ã¢ãªäžã®ä»»æã®ã¢ãã¬ã¹ãçŽæ¥æå®ããŸãã | 3 |
Absolute, X (Absolute, Indexed with X) | LDA $1234,X |
16ãããã¢ãã¬ã¹ã«Xã¬ãžã¹ã¿ã®å€ãå ç®ããå®å¹ã¢ãã¬ã¹ãæå®ããŸããããŒãžå¢çããŸããå Žåã«äœåãªã¯ããã¯ãµã€ã¯ã«ãå¿ èŠã«ãªãããšããããŸãã | 3 |
Absolute, Y (Absolute, Indexed with Y) | LDA $1234,Y |
16ãããã¢ãã¬ã¹ã«Yã¬ãžã¹ã¿ã®å€ãå ç®ããå®å¹ã¢ãã¬ã¹ãæå®ããŸããXã®å Žåãšåæ§ã«ãããŒãžå¢çããŸãããšé ããªãããšããããŸãã | 3 |
Relative (Relative) | BEQ label |
åå²åœä»€ã§ã®ã¿äœ¿çšãããŸããçŸåšã®ããã°ã©ã ã«ãŠã³ã¿(PC)ããã®çžå¯Ÿçãªãªãã»ããïŒ-128ãã+127ãã€ãïŒã8ãããã§æå®ããŸããåå²ãæåãããšPCã«ãªãã»ãããå ç®ãããŸãã | 2 |
Indirect (Indirect) | JMP ($1234) |
JMPåœä»€å°çšãæå®ãã16ãããã¢ãã¬ã¹ïŒäŸ: $1234ïŒã«æ ŒçŽãããŠãã16ãããå€ããžã£ã³ãå ã¢ãã¬ã¹ãšããŠäœ¿çšããŸãããã ããããŒããŠã§ã¢ã®ãã°ããããã¢ãã¬ã¹ã®äžäœãã€ãã$FFã®å ŽåïŒäŸ: $xxFFïŒãäžäœãã€ãã¯$xxFFã®æ¬¡ã®ã¢ãã¬ã¹ïŒ$xx00 ã§ã¯ãªã $(xx+1)00$ïŒããèªã¿èŸŒãŸããŠããŸããŸãã | 3 |
Indexed Indirect (Indirect, Indexed with X) | LDA ($80,X) |
ãŒãããŒãžã¢ãã¬ã¹ã«Xã¬ãžã¹ã¿ã®å€ãå ç®ããŸãããã®çµæã®ã¢ãã¬ã¹ïŒãŒãããŒãžå ïŒãã16ãããã®éæ¥ã¢ãã¬ã¹ïŒãªãã«ãšã³ãã£ã¢ã³ïŒãèªã¿åºãããã®ã¢ãã¬ã¹ãå®å¹ã¢ãã¬ã¹ãšããŠäœ¿çšããŸãããŒãããŒãžã«ãã€ã³ã¿ã®ããŒãã«ã眮ãå Žåãªã©ã«äœ¿ãããŸãã | 2 |
Indirect Indexed (Indirect, Indexed with Y) | LDA ($80),Y |
ãŒãããŒãžã¢ãã¬ã¹ãã16ãããã®éæ¥ã¢ãã¬ã¹ïŒãªãã«ãšã³ãã£ã¢ã³ïŒãèªã¿åºããŸãããã®ã¢ãã¬ã¹ã«Yã¬ãžã¹ã¿ã®å€ãå ç®ãããã®ãå®å¹ã¢ãã¬ã¹ãšããŠäœ¿çšããŸãããã€ã³ã¿ãæãããŒã¹ã¢ãã¬ã¹ããYã¬ãžã¹ã¿ã§ãªãã»ãããæå®ãããå Žåã«äŸ¿å©ã§ããããŒãžå¢çããŸããå Žåã«äœåãªã¯ããã¯ãµã€ã¯ã«ãå¿ èŠã«ãªãããšããããŸãã | 2 |
ã¢ãã¬ãã·ã³ã°ã¢ãŒããç解ããããšã¯ãå¹ççãª6502ã³ãŒããæžãäžã§éåžžã«éèŠã§ããð€
åºæ¬çãªåœä»€ã»ãã
6502ã®åœä»€ã»ããã¯æ¯èŒçå°ãªãã§ãããåºæ¬çãªæäœã¯ç¶²çŸ ãããŠããŸããããã§ã¯äž»èŠãªåœä»€ãããã€ã玹ä»ããŸããåœä»€ã¯éåžžãåäœã瀺ã3æåã®ããŒã¢ããã¯ïŒèŠããããèšå·ïŒã§è¡šçŸãããŸãã
ããŒã¿è»¢éåœä»€
ããŒã¢ãã㯠| æ©èœ | 圱é¿ãããã©ã° |
---|---|---|
LDA (LoaD Accumulator) | ã¡ã¢ãªãŸãã¯å³å€ãã¢ãã¥ã ã¬ãŒã¿(A)ã«ããŒããã | N, Z |
LDX (LoaD X register) | ã¡ã¢ãªãŸãã¯å³å€ãXã¬ãžã¹ã¿ã«ããŒããã | N, Z |
LDY (LoaD Y register) | ã¡ã¢ãªãŸãã¯å³å€ãYã¬ãžã¹ã¿ã«ããŒããã | N, Z |
STA (STore Accumulator) | ã¢ãã¥ã ã¬ãŒã¿(A)ã®å€ãã¡ã¢ãªã«ã¹ãã¢ãã | ãªã |
STX (STore X register) | Xã¬ãžã¹ã¿ã®å€ãã¡ã¢ãªã«ã¹ãã¢ãã | ãªã |
STY (STore Y register) | Yã¬ãžã¹ã¿ã®å€ãã¡ã¢ãªã«ã¹ãã¢ãã | ãªã |
TAX (Transfer Accumulator to X) | Aã¬ãžã¹ã¿ã®å€ãXã¬ãžã¹ã¿ã«è»¢éãã | N, Z |
TAY (Transfer Accumulator to Y) | Aã¬ãžã¹ã¿ã®å€ãYã¬ãžã¹ã¿ã«è»¢éãã | N, Z |
TXA (Transfer X to Accumulator) | Xã¬ãžã¹ã¿ã®å€ãAã¬ãžã¹ã¿ã«è»¢éãã | N, Z |
TYA (Transfer Y to Accumulator) | Yã¬ãžã¹ã¿ã®å€ãAã¬ãžã¹ã¿ã«è»¢éãã | N, Z |
ç®è¡æŒç®åœä»€
ããŒã¢ãã㯠| æ©èœ | 圱é¿ãããã©ã° |
---|---|---|
ADC (ADd with Carry) | ã¡ã¢ãª/å³å€ãšãã£ãªãŒãã©ã°(C)ãã¢ãã¥ã ã¬ãŒã¿(A)ã«å ç®ãã (A = A + M + C) | N, V, Z, C |
SBC (SuBtract with Carry) | ã¢ãã¥ã ã¬ãŒã¿(A)ããã¡ã¢ãª/å³å€ãšãããŒãã©ã°ïŒãã£ãªãŒãã©ã°ã®å転ïŒãæžç®ãã (A = A – M – (1-C)) | N, V, Z, C |
INC (INCrement memory) | ã¡ã¢ãªã®å€ã1å¢ãã | N, Z |
INX (INcrement X register) | Xã¬ãžã¹ã¿ã®å€ã1å¢ãã | N, Z |
INY (INcrement Y register) | Yã¬ãžã¹ã¿ã®å€ã1å¢ãã | N, Z |
DEC (DECrement memory) | ã¡ã¢ãªã®å€ã1æžãã | N, Z |
DEX (DEcrement X register) | Xã¬ãžã¹ã¿ã®å€ã1æžãã | N, Z |
DEY (DEcrement Y register) | Yã¬ãžã¹ã¿ã®å€ã1æžãã | N, Z |
泚æ: SBCåœä»€ã®ãã£ãªãŒãã©ã°ã®æ±ãã¯å°ãçŽæçã§ãªããããããŸãããæžç®åã«CLCïŒãã£ãªãŒã¯ãªã¢ïŒã§ã¯ãªãSECïŒãã£ãªãŒã»ããïŒããã®ãäžè¬çã§ããããã¯ã`A – M` ã `A + (-M)` ãšããŠèšç®ãããã£ãªãŒããããŒã®ä»£ããã«äœ¿ãããã§ãã
è«çæŒç®ã»ã·ããã»æ¯èŒåœä»€
ããŒã¢ãã㯠| æ©èœ | 圱é¿ãããã©ã° |
---|---|---|
AND (bitwise AND with accumulator) | ã¡ã¢ãª/å³å€ãšAã¬ãžã¹ã¿ã§ãããåäœã®ANDæŒç®ãè¡ããçµæãAã«å ¥ãã | N, Z |
ORA (bitwise OR with Accumulator) | ã¡ã¢ãª/å³å€ãšAã¬ãžã¹ã¿ã§ãããåäœã®ORæŒç®ãè¡ããçµæãAã«å ¥ãã | N, Z |
EOR (bitwise Exclusive OR) | ã¡ã¢ãª/å³å€ãšAã¬ãžã¹ã¿ã§ãããåäœã®XORæŒç®ãè¡ããçµæãAã«å ¥ãã | N, Z |
ASL (Arithmetic Shift Left) | Aã¬ãžã¹ã¿ãŸãã¯ã¡ã¢ãªã®å€ã1ãããå·Šã«ã·ãããããæäžäœããã(bit 7)ã¯Cãã©ã°ãžãæäžäœããã(bit 0)ã«ã¯0ãå ¥ãã | N, Z, C |
LSR (Logical Shift Right) | Aã¬ãžã¹ã¿ãŸãã¯ã¡ã¢ãªã®å€ã1ãããå³ã«ã·ãããããæäžäœããã(bit 0)ã¯Cãã©ã°ãžãæäžäœããã(bit 7)ã«ã¯0ãå ¥ãã | N(åžžã«0), Z, C |
ROL (ROtate Left) | Aã¬ãžã¹ã¿ãŸãã¯ã¡ã¢ãªã®å€ã1ãããå·Šã«ããŒããŒããããæäžäœããã(bit 7)ã¯Cãã©ã°ãžãå ã®Cãã©ã°ã®å€ãæäžäœããã(bit 0)ã«å ¥ãã | N, Z, C |
ROR (ROtate Right) | Aã¬ãžã¹ã¿ãŸãã¯ã¡ã¢ãªã®å€ã1ãããå³ã«ããŒããŒããããæäžäœããã(bit 0)ã¯Cãã©ã°ãžãå ã®Cãã©ã°ã®å€ãæäžäœããã(bit 7)ã«å ¥ãã | N, Z, C |
BIT (test BITs) | Aã¬ãžã¹ã¿ãšã¡ã¢ãªã®å€ã§ANDæŒç®ãè¡ãããçµæã¯Aã«æ ŒçŽããªããã¡ã¢ãªã®å€ã®bit 7ãNãã©ã°ã«ãbit 6ãVãã©ã°ã«ã³ããŒãããANDã®çµæã0ãªãZãã©ã°ãã»ããã | N, V, Z |
CMP (CoMPare accumulator) | Aã¬ãžã¹ã¿ãšã¡ã¢ãª/å³å€ãæ¯èŒããïŒå éšçã«æžç® A – M ãè¡ããçµæã¯æšãŠãããïŒãçµæã«å¿ããŠN, Z, Cãã©ã°ãã»ããããã | N, Z, C |
CPX (ComPare X register) | Xã¬ãžã¹ã¿ãšã¡ã¢ãª/å³å€ãæ¯èŒããïŒX – MïŒãçµæã«å¿ããŠN, Z, Cãã©ã°ãã»ããã | N, Z, C |
CPY (ComPare Y register) | Yã¬ãžã¹ã¿ãšã¡ã¢ãª/å³å€ãæ¯èŒããïŒY – MïŒãçµæã«å¿ããŠN, Z, Cãã©ã°ãã»ããã | N, Z, C |
ãžã£ã³ãã»åå²åœä»€
ããŒã¢ãã㯠| æ©èœ | åå²æ¡ä»¶ |
---|---|---|
JMP (JuMP) | æå®ããã¢ãã¬ã¹ã«ç¡æ¡ä»¶ã§ãžã£ã³ãããã | ãªã |
JSR (Jump to SubRoutine) | æå®ããã¢ãã¬ã¹ã®ãµãã«ãŒãã³ãåŒã³åºããæ»ãã¢ãã¬ã¹ïŒJSRåœä»€ã®æ¬¡ã®ã¢ãã¬ã¹-1ïŒãã¹ã¿ãã¯ã«ããã·ã¥ããã | ãªã |
RTS (ReTurn from Subroutine) | ãµãã«ãŒãã³ããæ»ããã¹ã¿ãã¯ããæ»ãã¢ãã¬ã¹ããããããããã«1ãå ããã¢ãã¬ã¹ã«ãžã£ã³ãããã | ãªã |
BPL (Branch if PLus) | Nãã©ã°ãã¯ãªã¢(0)ãªãåå²ïŒçµæãæ£ãŸãã¯0ïŒ | N=0 |
BMI (Branch if MInus) | Nãã©ã°ãã»ãã(1)ãªãåå²ïŒçµæãè² ïŒ | N=1 |
BVC (Branch if oVerflow Clear) | Vãã©ã°ãã¯ãªã¢(0)ãªãåå²ïŒãªãŒããŒãããŒãªãïŒ | V=0 |
BVS (Branch if oVerflow Set) | Vãã©ã°ãã»ãã(1)ãªãåå²ïŒãªãŒããŒãããŒããïŒ | V=1 |
BCC (Branch if Carry Clear) | Cãã©ã°ãã¯ãªã¢(0)ãªãåå²ïŒãã£ãªãŒ/ãããŒãªãïŒ | C=0 |
BCS (Branch if Carry Set) | Cãã©ã°ãã»ãã(1)ãªãåå²ïŒãã£ãªãŒ/ãããŒããïŒ | C=1 |
BNE (Branch if Not Equal) | Zãã©ã°ãã¯ãªã¢(0)ãªãåå²ïŒçµæã0ã§ãªãïŒ | Z=0 |
BEQ (Branch if EQual) | Zãã©ã°ãã»ãã(1)ãªãåå²ïŒçµæã0ïŒ | Z=1 |
åå²åœä»€ã¯Relativeã¢ãã¬ãã·ã³ã°ã¢ãŒãã䜿çšããçŸåšã®PCããã®çžå¯Ÿäœçœ®ã«ãžã£ã³ãããŸãã
ã¹ã¿ãã¯æäœåœä»€
ããŒã¢ãã㯠| æ©èœ | 圱é¿ãããã©ã° |
---|---|---|
PHA (PusH Accumulator) | Aã¬ãžã¹ã¿ã®å€ãã¹ã¿ãã¯ã«ããã·ã¥ãã | ãªã |
PHP (PusH Processor status) | Pã¬ãžã¹ã¿ïŒã¹ããŒã¿ã¹ãã©ã°ïŒã®å€ãã¹ã¿ãã¯ã«ããã·ã¥ãã | ãªã |
PLA (PuLl Accumulator) | ã¹ã¿ãã¯ããå€ããããããAã¬ãžã¹ã¿ã«å ¥ãã | N, Z |
PLP (PuLl Processor status) | ã¹ã¿ãã¯ããå€ããããããPã¬ãžã¹ã¿ã«å ¥ãã | å šãŠã®ãã©ã° |
TSX (Transfer Stack pointer to X) | ã¹ã¿ãã¯ãã€ã³ã¿(SP)ã®å€ãXã¬ãžã¹ã¿ã«è»¢éãã | N, Z |
TXS (Transfer X to Stack pointer) | Xã¬ãžã¹ã¿ã®å€ãã¹ã¿ãã¯ãã€ã³ã¿(SP)ã«è»¢éãã | ãªã |
ãã©ã°æäœåœä»€
ããŒã¢ãã㯠| æ©èœ | 圱é¿ãããã©ã° |
---|---|---|
CLC (CLear Carry flag) | ãã£ãªãŒãã©ã°(C)ãã¯ãªã¢(0)ãã | C=0 |
SEC (SEt Carry flag) | ãã£ãªãŒãã©ã°(C)ãã»ãã(1)ãã | C=1 |
CLI (CLear Interrupt disable bit) | å²ã蟌ã¿çŠæ¢ãã©ã°(I)ãã¯ãªã¢(0)ããIRQãèš±å¯ãã | I=0 |
SEI (SEt Interrupt disable bit) | å²ã蟌ã¿çŠæ¢ãã©ã°(I)ãã»ãã(1)ããIRQãçŠæ¢ãã | I=1 |
CLV (CLear oVerflow flag) | ãªãŒããŒãããŒãã©ã°(V)ãã¯ãªã¢(0)ãã | V=0 |
CLD (CLear Decimal mode) | ãã·ãã«ã¢ãŒããã©ã°(D)ãã¯ãªã¢(0)ãã | D=0 |
SED (SEt Decimal mode) | ãã·ãã«ã¢ãŒããã©ã°(D)ãã»ãã(1)ãã | D=1 |
ãã®ä»
ããŒã¢ãã㯠| æ©èœ | 圱é¿ãããã©ã° |
---|---|---|
NOP (No OPeration) | äœãããªãã1ãã€ãæ¶è²»ããæ°ã¯ããã¯åŸ ã€ã ãã | ãªã |
BRK (BReaK) | ãœãããŠã§ã¢å²ã蟌ã¿ãçºçããããPCãšPã¬ãžã¹ã¿ãã¹ã¿ãã¯ã«ããã·ã¥ãã$FFFE/$FFFFã®IRQ/BRKãã¯ã¿ã«ãžã£ã³ããããBãã©ã°ãã»ããããã | I=1, B=1 (pushæ) |
RTI (ReTurn from Interrupt) | å²ã蟌ã¿ãã³ãã©ãã埩垰ãããã¹ã¿ãã¯ããPã¬ãžã¹ã¿ãšPCããããããã | å šãŠã®ãã©ã°ïŒããããããå€ã«ããïŒ |
ç°¡åãªããã°ã©ã äŸ: 2ã€ã®æ°ã足ã
å®éã«ç°¡åãªããã°ã©ã ãèŠãŠã¿ãŸããããããã§ã¯ãã¡ã¢ãªã®ç¹å®çªå°ã«ãã2ã€ã®8ãããã®æ°ã足ãåãããçµæãå¥ã®çªå°ã«æ ŒçŽããäŸã瀺ããŸãã
; ããã°ã©ã éå§å°ç¹ (ORGç䌌åœä»€ã¯ã¢ã»ã³ãã©ã«å¯Ÿããæ瀺)
ORG $C000 ; ãã®ã³ãŒãã $C000 çªå°ããé
眮ãã
START:
CLC ; ãŸããã£ãªãŒãã©ã°ãã¯ãªã¢ (ADCã®ãã)
LDA $0010 ; ã¡ã¢ãªã¢ãã¬ã¹ $0010 ããæåã®æ°ã A ã¬ãžã¹ã¿ã«ããŒã
ADC $0011 ; ã¡ã¢ãªã¢ãã¬ã¹ $0011 ã®æ°ã A ã¬ãžã¹ã¿ã«å ç® (ãã£ãªãŒãèæ
®)
STA $0012 ; çµæãã¡ã¢ãªã¢ãã¬ã¹ $0012 ã«ã¹ãã¢
BRK ; ããã°ã©ã çµäº (ã·ãã¥ã¬ãŒã¿çã§åæ¢ããããã)
; ããŒã¿é å (äŸãšããŠå€ãèšå®)
ORG $0010
NUM1: DB $05 ; çªå° $0010 ã«å€ 5 ã眮ã
NUM2: DB $0A ; çªå° $0011 ã«å€ 10 (=$0A) ã眮ã
RESULT: DS 1 ; çªå° $0012 ã«çµæçšã®1ãã€ããç¢ºä¿ (DSç䌌åœä»€)
ãã®ã³ãŒããã¢ã»ã³ãã«ããŠå®è¡ãããšã$0012çªå°ã«ã¯ $05 + $0A = $0F (10é²æ°ã§15) ãæ ŒçŽãããŸãã
ORG $C000
: ã¢ã»ã³ãã©ã«å¯ŸããŠããã以éã®ã³ãŒããããŒã¿ãã¡ã¢ãªã®$C000çªå°ããé 眮ããããã«æ瀺ããŸããSTART:
: `START`ãšããã©ãã«ãå®çŸ©ããŸããããã°ã©ã ã®éå§å°ç¹ã瀺ãããã«äœ¿ãããŸããCLC
: å ç®åœä»€(ADC)ã¯ãã£ãªãŒãã©ã°ãäžç·ã«è¶³ã蟌ããããåçŽãªå ç®ãè¡ãããå Žåã¯äºåã«ãã£ãªãŒãã©ã°ã0ã«ããŠããå¿ èŠããããŸããLDA $0010
: Zero Pageã¢ãã¬ãã·ã³ã°ã¢ãŒãã䜿ãã$0010çªå°ã®å 容ïŒããã§ã¯$05ïŒãã¢ãã¥ã ã¬ãŒã¿(A)ã«èªã¿èŸŒã¿ãŸããADC $0011
: Zero Pageã¢ãã¬ãã·ã³ã°ã¢ãŒãã䜿ãã$0011çªå°ã®å 容ïŒããã§ã¯$0AïŒãã¢ãã¥ã ã¬ãŒã¿(A)ã«å ç®ããŸããAã¬ãžã¹ã¿ã¯ $05 + $0A + 0(ãã£ãªãŒ) = $0F ãšãªããŸããSTA $0012
: Zero Pageã¢ãã¬ãã·ã³ã°ã¢ãŒãã䜿ããAã¬ãžã¹ã¿ã®å 容ïŒ$0FïŒã$0012çªå°ã«æžã蟌ã¿ãŸããBRK
: ãœãããŠã§ã¢å²ã蟌ã¿ãçºçãããããã°ã©ã ã®å®è¡ãåæ¢ãããŸãïŒãšãã¥ã¬ãŒã¿ãã¢ãã¿ããã°ã©ã ã§åŠçãæ¢ããããã«ãã䜿ãããŸãïŒãORG $0010
: ããŒã¿é åã®é çœ®å Žæãæ瀺ããŸããNUM1: DB $05
: `NUM1`ãšããã©ãã«ã$0010çªå°ã«å²ãåœãŠãããã«1ãã€ãã®å€ `$05` (Define Byte) ã眮ããŸããNUM2: DB $0A
: åæ§ã«ã$0011çªå°ã«`NUM2`ã©ãã«ãšå€ `$0A` ã眮ããŸããRESULT: DS 1
: $0012çªå°ã«`RESULT`ã©ãã«ãå²ãåœãŠã1ãã€ãåã®é åã確ä¿ããŸã (Define Storage)ãåæå€ã¯äžå®ã§ãã
ãã®ããã«ãã¬ãžã¹ã¿ãšã¡ã¢ãªã®éã§ããŒã¿ãããåãããæŒç®ãè¡ããçµæãã¡ã¢ãªã«æžãæ»ãããšããã®ãã¢ã»ã³ããªããã°ã©ãã³ã°ã®åºæ¬çãªæµãã«ãªããŸãã
éçºããŒã«ãšç°å¢ ð ïž
6502ã¢ã»ã³ããªããã°ã©ãã³ã°ãå§ããã«ã¯ãããã€ãããŒã«ãå¿ èŠã§ãã
-
ã¢ã»ã³ãã©: 人éãèªããããŒã¢ããã¯åœ¢åŒã®ã³ãŒãïŒãœãŒã¹ã³ãŒãïŒããCPUãçŽæ¥å®è¡ã§ããæ°å€ã®åïŒæ©æ¢°èª/ãªããžã§ã¯ãã³ãŒãïŒã«å€æããããã°ã©ã ã§ãã
- ca65: cc65 Cã³ã³ãã€ã©ã¹ã€ãŒãã«å«ãŸããé«æ©èœãªã¯ãã¹ã¢ã»ã³ãã©ãå€ãã®ã¬ãããã©ãããã©ãŒã éçºã§äœ¿ãããŠããŸãã
- vasm: æ§ã ãªCPUã«å¯Ÿå¿ããããŒã¿ãã«ãªã¯ãã¹ã¢ã»ã³ãã©ã6502ã«ã察å¿ããŠããŸãã
- ACME: ã³ã¢ããŒã«ç³»ã§äººæ°ã®ããã¯ãã¹ã¢ã»ã³ãã©ã
- MASM (Microsoft Macro Assembler): å€å žçãªã¢ã»ã³ãã©ã§ããã6502çšã§ã¯ãããŸããã
- Easy6502 Assembler (Web): Nick Morganæ°ã«ããEasy6502ãã¥ãŒããªã¢ã«ãµã€ãã«ããJavaScriptããŒã¹ã®ã¢ã»ã³ãã©å Œã·ãã¥ã¬ãŒã¿ããã©ãŠã¶äžã§æ軜ã«è©ŠããŸãã
- 6502js (Web): Easy6502ãããŒã¹ã«ãããMaksim Korzhæ°ã«ããJavaScriptããŒã¹ã®ã¢ã»ã³ãã©å Œã·ãã¥ã¬ãŒã¿ããã¡ãããã©ãŠã¶ã§åäœããŸãã
-
ãšãã¥ã¬ãŒã¿/ã·ãã¥ã¬ãŒã¿: 6502 CPUãããããæèŒãããŠããã³ã³ãã¥ãŒã¿ïŒApple II, NES, C64ãªã©ïŒã®åäœããœãããŠã§ã¢ã§åçŸãããã®ã§ããäœæããããã°ã©ã ãå®éã®ããŒããŠã§ã¢ãªãã§ãã¹ãã»ãããã°ã§ããŸãã
- VICE: ã³ã¢ããŒã«è£œã³ã³ãã¥ãŒã¿ïŒC64, VIC-20, PETãªã©ïŒã®éåžžã«é«æ©èœãªãšãã¥ã¬ãŒã¿ã
- Mesen: é«ç²ŸåºŠãªNES/ãã¡ãã³ã³ãšãã¥ã¬ãŒã¿ããããã°æ©èœãå å®ããŠããŸãã
- FCEUX: å®çªã®NES/ãã¡ãã³ã³ãšãã¥ã¬ãŒã¿ã®äžã€ããããã°æ©èœãè±å¯ã
- AppleWin: Windowsåãã®Apple IIãšãã¥ã¬ãŒã¿ã
- Virtual 6502 (Web): ãã©ãŠã¶äžã§åäœãã6502ã·ãã¥ã¬ãŒã¿ã
- Sim6502 (Web): Neil Parkeræ°ã«ããã·ã³ãã«ãªWebããŒã¹ã·ãã¥ã¬ãŒã¿ã
- å€ãã®ãšãã¥ã¬ãŒã¿ã«ã¯ãã¬ãžã¹ã¿ã®ç¶æ ãã¡ã¢ãªã®å 容ãå®è¡äžã®ã³ãŒããªã©ã衚瀺ã»å€æŽã§ãããããã¬æ©èœãæèŒãããŠãããéçºã«äžå¯æ¬ ã§ãã
- ããã¹ããšãã£ã¿: ãœãŒã¹ã³ãŒããæžãããã®ãšãã£ã¿ãããã°ã©ãã³ã°çšã®æ©èœïŒã·ã³ã¿ãã¯ã¹ãã€ã©ã€ããªã©ïŒããããšäŸ¿å©ã§ãïŒäŸ: VS Code, Sublime Text, Vim, Emacsãªã©ïŒã
æåã¯ãWebãã©ãŠã¶ã§åäœããã·ãã¥ã¬ãŒã¿ä»ãã¢ã»ã³ãã©ïŒEasy6502ã6502jsãªã©ïŒããå§ããŠã¿ããšãç°å¢æ§ç¯ã®æéãªãæ軜ã«äœéšã§ããŸããð
ãŸãšããšæ¬¡ã®ã¹ããã
ä»åã¯ã6502ã¢ã»ã³ããªèšèªã®å ¥éãšããŠããã®æŽå²çèæ¯ãåºæ¬çãªã¢ãŒããã¯ãã£ïŒã¬ãžã¹ã¿ãã¡ã¢ãªïŒãã¢ãã¬ãã·ã³ã°ã¢ãŒããäž»èŠãªåœä»€ããããŠç°¡åãªããã°ã©ã äŸãšéçºããŒã«ã«ã€ããŠçŽ¹ä»ããŸããã
6502ã¢ã»ã³ããªã¯ãçŸä»£ã®èŠç¹ããèŠããšå¶çŽãå€ãã§ããããã®ã·ã³ãã«ãããã«CPUã®åäœåçãåŠã¶ã«ã¯æé©ã§ããã¬ãžã¹ã¿ãããããããã¡ã¢ãªãå¹ççã«äœ¿ããåœä»€ã工倫ããŠç®çãéæããããã»ã¹ã¯ãããºã«ã解ããããªé¢çœãããããŸãð§©ã
ããèå³ãæã£ããããã²ä»¥äžã®ã¹ãããã«é²ãã§ã¿ãŠãã ããã
- Webäžã®ãã¥ãŒããªã¢ã«ïŒEasy6502ãªã©ïŒãã·ãã¥ã¬ãŒã¿ã䜿ã£ãŠãå®éã«ã³ãŒããæžããŠåãããŠã¿ãã
- ããè€éãªããã°ã©ã ïŒã«ãŒããæ¡ä»¶åå²ããµãã«ãŒãã³ã䜿ã£ããã®ïŒãäœæããŠã¿ãã
- ç¹å®ã®ãã©ãããã©ãŒã ïŒNESãC64ãªã©ïŒã®ãšãã¥ã¬ãŒã¿ãšã¢ã»ã³ãã©ãå°å ¥ãããã®ããŒããŠã§ã¢ç¹æã®æ©èœïŒç»é¢è¡šç€ºããµãŠã³ããå ¥åãªã©ïŒãå¶åŸ¡ããããã°ã©ã ã«ææŠããŠã¿ãã
- åçš®ãªãœãŒã¹ïŒæžç±ãWebãµã€ããã³ãã¥ããã£ïŒã掻çšããŠãããã«ç¥èãæ·±ããã
äœã¬ãã«ããã°ã©ãã³ã°ã®äžçã¯å¥¥æ·±ããæ¢æ±ãããã®ããåéã§ãããã®å ¥éèšäºããããªãã®6502ã¢ã»ã³ããªèšèªãžã®æ ã®ç¬¬äžæ©ãšãªãã°å¹žãã§ããHappy coding! ð
åèæ å ±
- 6502.org: 6502ã«é¢ããæ
å ±ããã¥ãŒããªã¢ã«ããã©ãŒã©ã ãªã©ãéãŸããµã€ãã
URL: http://www.6502.org/ - Easy 6502 by Nick Morgan: ãã©ãŠã¶äžã§åŠã¹ãã€ã³ã¿ã©ã¯ãã£ããª6502ãã¥ãŒããªã¢ã«ã
URL: https://skilldrick.github.io/easy6502/ - Mass:werk online 6502 assembler & simulator: WebããŒã¹ã®å€æ©èœãª6502ã·ãã¥ã¬ãŒã¿ã
URL: https://www.masswerk.at/6502/assembler.html
ã³ã¡ã³ã