ååã®çã
èšäºã§ã 70幎代ããã®å€ãCHIP-8ã²ãŒã ãã©ãããã©ãŒã ã®ãšãã¥ã¬ãŒã¿ãŒãæ§ç¯ããåçã«ã€ããŠèª¬æããŸããã ããã§ã¯ãçžç¶äººã®äžçš®ã§ããCHIP16ã«ã€ããŠèª¬æããŸãã CHIP16ãšã¯æ£ç¢ºã«ã¯äœã§ããïŒ
CHIP16-ãæ¶ç©ºã®ãã²ãŒã ã³ã³ãœãŒã«ããéãã«ã¯ååšããŸããã§ããã ãã®ä»æ§å
šäœã¯ã
è±èªã話ã1ã€ã®ãã©ãŒã©ã ããïŒæ奜家ã«ãã£ãŠïŒéçºãããŸããã éèŠãªç¹ã¯ããšãã¥ã¬ãŒã¿ãŒã®èšè¿°ãå¯èœãªéãåçŽåããŠãé©åãªææžãšã³ãã¥ããã£ãŒã®ãµããŒããåŸãããšã«ãããŸãã ãããã£ãŠãããã°ã©ãã³ã°ã®åå¿è
ã§ããã»ãŒãã¹ãŠã®ããã°ã©ãã³ã°èšèªã§å®å
šã«æ©èœãããšãã¥ã¬ãŒã¿ãŒããŒãããäœæã§ããŸãã ããã«ããã§ãšãã¥ã¬ãŒã¿ã³ãŒãã®äŸãæäŸããªãããšãäºçŽããŠãã ãããç®æšã¯åã«ãã®ãã©ãããã©ãŒã ã«ã€ããŠè©±ãããšã§ãã ãããŠããã¡ããããã¹ãŠã楜ãã¿ã®ããã ãã§ãïŒ
èæ¯
ãããŠãä»æ§ã¯ããŒãžã§ã³1.1ãååŸããäž»ãªæ¬ é¥ãä¿®æ£ããããã®ãã©ãããã©ãŒã çšã®ã²ãŒã ããã®ä»ã®ããã°ã©ã ïŒã¢ã»ã³ãã©ãŒããããã¬ãŒãã€ã¡ãŒãžã³ã³ããŒã¿ãŒãªã©ïŒãäœæããããã®äž»èŠãªããŒã«ãäœæããããã
ã2010幎ã®ã©ããã§ãã¹ãŠãå§ãŸããŸããã åãCHIP-8ãšã®äž»ãªéãã¯ããã倧ããªç»é¢è§£å床ãããå€ãã®è²ãããå€ãã®æŒç®ããã³ãã®ä»ã®åœä»€ã®ååšãæ¹åããããµãŠã³ããµããŒããããã³ææžåãããŠããªãæ©èœã®æ¬ åŠã§ãã
ãã¬ãã£ãã¯ã¹ã«ã¯ã16ãããããã»ããµãã¡ã¢ãªã2ã€ã®å
¥åããã€ã¹ïŒDendyãªã©ã®ãžã§ã€ã¹ãã£ãã¯ïŒããµãŠã³ãããã³ãããªãµãã·ã¹ãã ããããŸãã ãã®æå
šäœããã詳现ã«æ€èšããŠãã ããã
CPU
ããã»ããµã«ã¯ä»¥äžãå«ãŸããŸãã
- 1ã€ã®16ãããåœä»€ã«ãŠã³ã¿ãŒïŒPCïŒ
- 1ã€ã®16ãããã¹ã¿ãã¯ãã€ã³ã¿ãŒïŒSPïŒ
- 16åã®16ãããæ±çšã¬ãžã¹ã¿ïŒR0-RFïŒ
- 1ã€ã®8ããããã©ã°ã¬ãžã¹ã¿
åãªãã³ãŒãïŒããã»ããµã³ãã³ãïŒã®å®è¡ã«ã¯æ£ç¢ºã«1ãµã€ã¯ã«ããããããã»ããµã¯1 Mhzã®åšæ³¢æ°ã§å®è¡ãããŸãã ããã§ã¯ãå®éã«ãåšæ³¢æ°ãæåŸãŸã§æ確ã«ãªããŸã§äºçŽãè¡ããããããã1 Mhzãããé«éã§ãšãã¥ã¬ãŒã¿ã§ã³ãã³ããå®è¡ããŸãã ãšãã¥ã¬ãŒã·ã§ã³é床ãæ倧ã«ãªãå ŽåããããŸãã äžè¬çã«ãããã«ã€ããŠæ°ã«ããããšã¯ã§ããŸãããã
èšæ¶
64KbïŒ65536ãã€ãïŒã®ã¿ã ã¡ã¢ãªã¯æ¬¡ã®ããã«å²ãåœãŠãããŸãã
0x0000-ãã€ããªããŒã¿ã®éå§
0xFDF0-ã¹ã¿ãã¯ã®å
é ïŒ512ãã€ãïŒã
0xFFF0-I / OããŒãïŒãžã§ã€ã¹ãã£ãã¯ã®ç¶æ
ã远跡ããããã®I / OïŒã
æ å
ç»é¢ã®è§£å床ã¯320x240ãã¯ã»ã«ã§ãã åæã«è¡šç€ºãããè²ã®æ°ã¯ãæšæºãã¬ãããã16ã§ãã
ãã¬ããã®ã€ã³ããã¯ã¹ | 16ã äŸ¡å€ | è² |
---|
0x0 | 0x000000 | èæ¯ã¬ã€ã€ãŒã§éæãªé» |
0x1 | 0x000000 | é» |
0x2 | 0x888888 | ç°è² |
0x3 | 0xBF3932 | èµ€ |
0x4 | 0xDE7AAE | ãã³ã¯ |
0x5 | 0x4C3D21 | ããŒã¯ãã©ãŠã³ |
0x6 | 0x905F25 | ãã©ãŠã³ |
0x7 | 0xE49452 | ãªã¬ã³ãžè² |
0x8 | 0xEAD979 | é»è² |
0x9 | 0x537A3B | ç·è² |
0xA | 0xABD54A | èç· |
0xB | 0x252E38 | 玺 |
0xC | 0x00467F | é |
0xD | 0x68ABCC | æ°Žè² |
0xE | 0xBCDEE4 | ã¹ã«ã€ãã«ãŒ |
0xF | 0xFFFFFF | çœ |
ç¬èªã®ã«ã©ãŒãã¬ãããèšå®ããããšãã§ããŸãã ç»é¢ã®ãªãã¬ãã·ã¥ã¬ãŒãã¯60ãã¬ãŒã /ç§ã§ãåãã¬ãŒã ã¯Vblankå
éšãã©ã°ãèšå®ããŸãïŒçŽ16ããªç§ããšïŒã ããã»ããµã«ã¯ã
VBLNKåœä»€ã䜿çšããŠãã¬ãŒã ã¬ã³ããªã³ã°ã®å®äºãåŸ
ã€æ©èœããããŸãã ç»åã¯ã¹ãã©ã€ããã圢æããããããªã¡ã¢ãªãžã®çŽæ¥ã¢ã¯ã»ã¹ã¯ãããŸããã ã¹ãã©ã€ããæç»ãããã¡ã€ã³ã¬ã€ã€ãŒã«å ããŠãç»é¢å
šäœã16è²ã®ããããã§å¡ãã€ã¶ãèæ¯ã¬ã€ã€ãŒããããŸãã
ç»é¢ã¯ãã©ãŒãªã³ã°ãããŠããªããããç©ç座æšã«åãŸããªããã®ã¯ãã¹ãŠç»é¢ã®èåŸã«æ®ãã衚瀺ãããŸããã ã¹ãã©ã€ãã¯è² ã®åº§æšïŒãŸãã¯320x200ãè¶
ããïŒãæã€ããšãã§ããŸãã 4x4ãã¯ã»ã«ã®ã¹ãã©ã€ããååŸããããšãã°åº§æšïŒ-2ã-2ïŒã«æç»ããã³ãã³ããäžãããšãç»é¢ã®å·Šäžé
ã«2x2ãã¯ã»ã«ã®ã¹ãã©ã€ãã®äžéšã衚瀺ãããŸãã
ãããã£ãŠããã¬ããã«ã¯16ã®å¯èœãªè²ããããããç»é¢äžã®1ãã€ã³ãããšã³ã³ãŒãããã«ã¯4ããããå¿
èŠã§ãã 1ãã€ãã¯2ãã€ã³ãã®ãããã¯ã§ãã æå°ã®ã¹ãã©ã€ãã¯1ãã€ãã§æ§æãããŸã-ããã¯2x1ã¹ãã©ã€ãïŒ2ãã€ã³ãïŒã§ãã æšæºãã¬ããã®çœè²ã¯ã€ã³ããã¯ã¹0xFhã®è²ã§ãããé»è²ã¯ã€ã³ããã¯ã¹0x1hã®è²ã§ããããšãèæ
®ããŠã8x5ãã¯ã»ã«ã®ã¹ãã©ã€ãããšã³ã³ãŒãããæ¹æ³ã®äŸãèŠãŠã¿ãŸããã
åèš20ãã€ãã ã€ãŸãïŒ8 x 5ïŒ/ 2 = 20
æ°ããã¹ãã©ã€ããç»é¢äžã®æ¢åã®ãã¯ã»ã«ãšéè€ããå ŽåïŒè²ããŒãã®ãã¯ã»ã«ãé€ã-éæïŒããã£ãªãŒãã©ã°ãèšå®ãããŸãã ãããã£ãŠãã²ãŒã å
ã®ç»é¢äžã®è¡çªããªããžã§ã¯ãã®è¡çªã远跡ã§ããŸãã
æšæºã§ã¯ãªãç¬èªã®ã«ã©ãŒãã¬ãããå²ãåœãŠãããã«ãç¹å¥ãª
PALããã»ããµã³ãã³ãããããŸãã ãã¬ããã®åè²ã¯ãRGB圢åŒã®3ãã€ãã§æ§æãããŠããŸãã 16è²ã®ã¿ã䜿çšããããããPALã³ãã³ãã¯ã¡ã¢ãªãã48ãã€ãã®é
åãèªã¿åããRGBã³ã³ããŒãã³ããã€ã³ããã¯ã¹0x0ã0x1ã..ã0xFã®è²ã«å²ãåœãŠãŸãã ããã»ããµ
ãVBLNKã³ãã³ããåä¿¡ãããš ããã¬ãããå€æŽãããŸãã
é³
åæããŒãžã§ã³ã§ã¯ãäžå®ã®ããªç§æ°ã®éã3ã€ã®åºå®ããŒã³ïŒ500Hzã1000Hzã1500HzïŒã®ã¿ãåçããæ©èœããããŸãããããã®åŸã
ADSRã¿ã€ãã®ãµãŠã³ããžã§ãã¬ãŒã¿ãŒã䜿çšããæ©èœãè¿œå ãããŸãã
å
¥åããã€ã¹ïŒãžã§ã€ã¹ãã£ãã¯ïŒ
ãžã§ã€ã¹ãã£ãã¯ããã®æ
å ±ãžã®ã¢ã¯ã»ã¹ã¯ãã¡ã¢ãªI / OããŒããä»ããŠè¡ãããŸãã æåã®ãžã§ã€ã¹ãã£ãã¯ã¯0xFFF0ã2çªç®ã¯0xFFF2ã§ãã
ããã[0]-ã¢ãã
ããã[1]-ããŠã³
ããã[2]-å·Š
ããã[3]-å³
ããã[4]-éžæ
ããã[5]-éå§
ããã[6]-A
ããã[7]-B
ããã[8-15]-æªäœ¿çšãåžžã«ãŒãã
ãããã£ãŠã0xFFF0ã®ã¡ã¢ãªããã¬ãžã¹ã¿ã«å€ãèªã¿åãã察å¿ããèšå®ãããããã§ãã¯ããããšã«ãããæåã®ãžã§ã€ã¹ãã£ãã¯ã§ã©ã®ãã¿ã³ãçŸåšæŒãããŠãããã远跡ã§ããŸãã
ç»åãã¡ã€ã«åœ¢åŒïŒROMãã¡ã€ã«ïŒ
ROMãã¡ã€ã«ïŒæšæºæ¡åŒµå.c16ïŒã«ã¯ãããããŒãšããããŒã®çŽåŸã®ãã€ããªããŒã¿ãå«ãŸããŠããŸãã ããããŒããã®æ
å ±ã䜿çšããŠãä»æ§ã®ããŒãžã§ã³ãªã©ãå€æã§ããŸããããããŒã®ãµã€ãºã¯16ãã€ãã®äžå®ã§ãã ãã®ãã©ãŒãããïŒ
ãªãã»ãã | äºå® |
---|
0x00 | ããžãã¯ãã³ããŒãCH16ã |
0x04 | äºçŽæžã¿ |
0x05 | ä»æ§ããŒãžã§ã³ïŒæåã®4ããã=ã¡ãžã£ãŒããŒãžã§ã³ã2çªç®ã®4ããã=ãµãããŒãžã§ã³ãã€ãŸã0.7 = 0x07ããã³1.0 = 0x10ïŒ |
0x06 | ROMãã¡ã€ã«ãµã€ãºïŒããããŒãå«ãŸãããã€ãåäœïŒ |
0x0A | éå§ã¢ãã¬ã¹ïŒPCã³ãã³ãã«ãŠã³ã¿ãŒå€ïŒ |
0x0C | CRC32ãã§ãã¯ãµã ïŒããããŒãå«ãŸããå€é
åŒ= 0x04c11db7ïŒ |
ããåŸã«ãã€ããªããŒã¿ãç¶ããŸãããã€ããªããŒã¿ã¯åžžã«ã¢ãã¬ã¹0x0000ããå§ãŸãã¡ã¢ãªã«èªã¿èŸŒãŸããå¿
èŠããããŸãã ã³ãã³ãã«ãŠã³ã¿ãŒã¯ãããããŒã®å€ã«åŸã£ãŠèšå®ããå¿
èŠããããŸãã éåžžãããã¯0x0000ã§ãã
ROMãã¡ã€ã«ã¯æ¯èŒçæè¿ä»æ§ã«å°å
¥ããããããããããŒããŸã£ãããªãå ŽåããããŸãã
ãã©ã°ã¬ãžã¹ã¿
ããã[0] | äºçŽæžã¿ |
ããã[1] | c-ãã£ãªãŒãã©ã°ïŒç¬Šå·ãªããªãŒããŒãããŒïŒ |
ããã[2] | z-ãŒããã©ã° |
ããã[3] | äºçŽæžã¿ |
ããã[4] | äºçŽæžã¿ |
ããã[5] | äºçŽæžã¿ |
ããã[6] | o-ãªãŒããŒãããŒïŒç¬Šå·ä»ãæ°å€ã®ãªãŒããŒãããŒïŒ |
ããã[7] | n-è² ïŒè² 笊å·ãã©ã°ïŒ |
æ¡ä»¶ä»ããžã£ã³ãã³ãã³ãã®æ¡ä»¶ã¿ã€ã
æ¡ä»¶ã¯ãæ¡ä»¶ä»ããžã£ã³ãïŒãžã£ã³ãïŒåœä»€ãŸãã¯æ¡ä»¶ä»ãåŒã³åºããµãã«ãŒãã³åœä»€ã«äœ¿çšãããŸãã ããšãã°ããjle labelããŸãã¯ãcno some_label2ãã è§æ¬åŒ§ã¯ãæ¡ä»¶ãããªã¬ãŒããããšãã®ãã©ã°ã®ç¶æ
ã瀺ããŸãã
Z | 0x0 | [z == 1] | çããïŒãŒãïŒ |
Nz | 0x1 | [z == 0] | çãããªãïŒéãŒãïŒ |
N | 0x2 | [n == 1] | è² |
Nn | 0x3 | [n == 0] | éè² ïŒæ£ãŸãã¯ãŒãïŒ |
P | 0x4 | [n == 0 && z == 0] | ããžãã£ã |
O | 0x5 | [o == 1] | ãªãŒããŒãã㌠|
ãã | 0x6 | [o == 0] | ãªãŒããŒãããŒãªã |
A | 0x7 | [c == 0 && z == 0] | äžèšïŒç¬Šå·ãªããã倧ããïŒ |
ãã | 0x8 | [c == 0] | çããïŒç¬Šå·ãªã以äžïŒ |
B | 0x9 | [c == 1] | 以äžïŒçœ²åãªãïŒ |
BE | 0xA | [c == 1 || z == 1] | çããïŒç¬Šå·ãªãã以äžïŒ |
G | 0xB | [o == n && z == 0] | ãã倧ãã眲å |
GE | 0xC | [o == n] | ãã倧ãããŸãã¯çãã眲å |
L | 0xD | [oïŒ= n] | æªæºçœ²å |
LE | 0xE | [oïŒ= n || z == 1] | æªæºãŸãã¯çãã眲å |
代æ¿ããŒã¢ããã¯ã䜿çšã§ããŸãã
NC | 0x8 | [c == 0] | ãã£ãªãŒãªãïŒAEãšåãïŒ |
C | 0x9 | [c == 1] | ãã£ãªãŒïŒBãšåãïŒ |
CPUã³ãã³ã
CHIP16ãªãã³ãŒãã¯ãæ£ç¢ºã«4ãã€ãïŒ32ãããïŒããããŸãã
HHã¯æäžäœãã€ãã§ãã
LLã¯ãã€ããŒãªæŠãã§ãã
N-ããã«ïŒ4ãããå€ïŒã
XãYãZ-4ãããã®ã¬ãžã¹ã¿èå¥åã
ãªãã³ãŒã | ããŒã¢ãã㯠| 䜿çšãã |
---|
00 00 00 00 | ãã | æäœãªãã1ããã»ããµãµã€ã¯ã«ã®ã¿ |
01 00 00 00 | CLS | ã¹ã¯ãªãŒã³ã¯ãªãŒãã³ã°ïŒã¡ã€ã³ã¬ã€ã€ãŒã¯ã¯ãªã¢ãããèæ¯è²ã¯ã€ã³ããã¯ã¹0ã®è²ã«èšå®ãããŸãïŒ |
02 00 00 00 | Vblnk | åçŽåæãæåŸ
ããŠãã ããã ãã¬ãŒã ãæç»ãããªãã£ãå ŽåãPC- = 4 |
03 00 0N 00 | BGC N | ã€ã³ããã¯ã¹Nã§èæ¯è²ãèšå®ããŸããã€ã³ããã¯ã¹ã0ã®å Žåãèæ¯è²ã¯é»ã§ã |
04 00 LL HH | SPR HHLL | ã¹ãã©ã€ããµã€ãºã®èšå®ïŒå¹
ïŒLLïŒããã³é«ãïŒHHïŒ |
05 YX LL HH | DRW RXãRYãHHLL | Xããã³Yã¬ãžã¹ã¿ã§æå®ããã座æšã§HHLLã¡ã¢ãªã®ã¢ãã¬ã¹ããã¹ãã©ã€ããæç»ããŸããçµæã¯ãã£ãªãŒãã©ã°ã«åœ±é¿ããŸã |
06 YX 0Z 00 | DRW RXãRYãRZ | ã¬ãžã¹ã¿Xããã³Yã§æå®ããã座æšã§ãã¬ãžã¹ã¿Zãæãã¡ã¢ãªã®ã¢ãã¬ã¹ããã¹ãã©ã€ããæç»ããŸããçµæã¯ãã£ãªãŒãã©ã°ã«åœ±é¿ããŸã |
07 0X LL HH | RND RXãHHLL | ã¬ãžã¹ã¿Xã«ä¹±æ°ãå
¥ããŸããæ倧å€ã¯HHLLã«ãã£ãŠèšå®ãããŸã |
08 00 00 00 | ããªãã0ã0 | ã¹ãã©ã€ã衚瀺ã®æ¹åãèšå®ããŸãã æ°Žå¹³ããªãã= NOãåçŽããªãã= NO |
08 00 00 01 | ããªãã0ã1 | ã¹ãã©ã€ã衚瀺ã®æ¹åãèšå®ããŸãã æ°Žå¹³å転= NOãåçŽå転= YES |
08 00 00 02 | ããªãã1ã0 | ã¹ãã©ã€ã衚瀺ã®æ¹åãèšå®ããŸãã æ°Žå¹³ããªãã= YESãåçŽããªãã= NO |
08 00 00 03 | ããªãã1ã1 | ã¹ãã©ã€ã衚瀺ã®æ¹åãèšå®ããŸãã æ°Žå¹³ããªãã= YESãåçŽããªãã= YES |
09 00 00 00 | SND0 | åæ¢é³ |
0A 00 LL HH | SND1 HHLL | 500HzããŒã³HHLLããªç§ã§åç |
0B 00 LL HH | SND2 HHLL | 1000HzããŒã³HHLLããªç§ã§åç |
0C 00 LL HH | SND3 HHLL | 1500Hz HHLLããŒã³ããªç§ãåç |
0D 0X LL HH | SNP RXãHHLL | HHLLã§æå®ãããçŸåšã®ãµãŠã³ããžã§ãã¬ãŒã¿ãŒã«åŸã£ãŠãHHLLããªç§ã®ãµãŠã³ãããŒã³ãåçããŸãã |
0E AD SR VT | SNG ADãVTSR | ãµãŠã³ããžã§ãã¬ãŒã¿ãŒADSR
A =æ»æïŒ0..15ïŒ | D =æžè¡°ïŒ0..15ïŒ | S =æç¶ïŒ0..15ãããªã¥ãŒã ïŒ | R =ãªãªãŒã¹ïŒ0..15ïŒ | V =ããªã¥ãŒã ïŒ0..15ïŒ | T =é³ã®çš®é¡ïŒ | - 00 =äžè§æ³¢
- 01 =ã®ãããæ³¢
- 02 =èæ³¢ïŒä»ã®ãšããã¯æ£æ¹åœ¢ã§ãïŒ
- 03 =ãã€ãº
- å€ãæ£ãããªãå ŽåããµãŠã³ãã¯åçãããŸãã
|
|
10 00 LL HH | JMP HHLL | æå®ãããHHLLã¢ãã¬ã¹ã«ç§»åããŸã |
12 0x LL HH | Jx hhll | ãxãæ¡ä»¶ã«åŸã£ãŠãæå®ãããHHLLã¢ãã¬ã¹ã«ç§»åããŸãã ïŒæ¡ä»¶ã®ã¿ã€ããåç
§ïŒ |
13 YX LL HH | JME RXãRYãHHLL | ã¬ãžã¹ã¿Xãã¬ãžã¹ã¿Yãšçããå Žåãæå®ãããHHLLã¢ãã¬ã¹ã«ç§»åããŸã |
16 0X 00 00 | JMP RX | ã¬ãžã¹ã¿Xã§æå®ãããã¢ãã¬ã¹ã«ç§»åããŸã |
14 00 LL HH | CALL HHLL | HHLLã§ã«ãŒãã³ãåŒã³åºããŸãã [SP]ã§PCãä¿åããSPã2å¢ãããŸã |
15 00 00 00 | ã¬ãã | ãµãã«ãŒãã³ããæ»ããŸãã SPã2æžããã[SP]ããPCã埩å
ããŸã |
17 0x LL HH | Cx hhll | æ¡ä»¶ 'x'ãæºããããŠããå Žåããµãã«ãŒãã³ãåŒã³åºããŸãã ïŒæ¡ä»¶ã®ã¿ã€ããåç
§ïŒ |
18 0X 00 00 | rxãåŒã³åºã | ã¬ãžã¹ã¿Xã®ã¢ãã¬ã¹ã§ãµãã«ãŒãã³ãåŒã³åºããŸããPCã[SP]ã«ä¿åããSPã2å¢ãããŸã |
20 0X LL HH | LDI RXãHHLL | ã¬ãžã¹ã¿Xã«HHLLå³å€ãå
¥ããŸã |
21 00 LL HH | LDI SPãHHLL | ã¹ã¿ãã¯ãã€ã³ã¿ãŒãHHLLã¢ãã¬ã¹ã«èšå®ããŸãã ã¹ã¿ãã¯äžã®å€ãå€ãæ°ããã¢ãã¬ã¹ã«ç§»åããŸãã |
22 0X LL HH | LDM RXãHHLL | ã¢ãã¬ã¹HHLLã®ã¡ã¢ãªããã¬ãžã¹ã¿X 16ãããå€ãå
¥åããŸã |
22 YX 00 00 | LDM RXãRY | ã¬ãžã¹ã¿Yãæãã¢ãã¬ã¹ã®ã¡ã¢ãªããã¬ãžã¹ã¿Xã«16ãããå€ãå
¥ããŸãã |
24 YX 00 00 | MOV RXãRY | ã¬ãžã¹ã¿Yã®å€ãã¬ãžã¹ã¿Xã«ã³ããŒããŸã |
30 0X LL HH | STM RXãHHLL | ã¬ãžã¹ã¿Xã®å€ãã¡ã¢ãªã®ã¢ãã¬ã¹HHLLã«ä¿åããŸã |
31 YX 00 00 | STM RXãRY | ã¬ãžã¹ã¿Xã®å€ãã¡ã¢ãªã®ã¬ãžã¹ã¿Yã«ããã¢ãã¬ã¹ã«ä¿åããŸã |
40 0X LL HH | ADDI RXãHHLL | ããã«HHLLå€ãXã¬ãžã¹ã¿ã«è¿œå ããŸããã©ã°[cãzãoãn]ã«åœ±é¿ããŸã |
41 YX 00 00 | RXãRYãè¿œå | ã¬ãžã¹ã¿Yã®å€ãã¬ãžã¹ã¿Xã«è¿œå ããŸããçµæã¯ã¬ãžã¹ã¿Xã«é
眮ãããŸãããã©ã°[cãzãoãn]ã«åœ±é¿ããŸã |
42 YX 0Z 00 | RXãRYãRZãè¿œå | ã¬ãžã¹ã¿Xã«ã¬ãžã¹ã¿Yã®å€ãè¿œå ããŸããçµæã¯ã¬ãžã¹ã¿Zã«é
眮ãããŸãããã©ã°[cãzãoãn]ã«åœ±é¿ããŸã |
50 0X LL HH | SUBI RXãHHLL | ã¬ãžã¹ã¿Xããå³æHHLLå€ãæžç®ããŸããçµæã¯ã¬ãžã¹ã¿Xã«ãããŸãããã©ã°[cãzãoãn]ã«åœ±é¿ããŸã |
51 YX 00 00 | SUB RXãRY | ã¬ãžã¹ã¿Xããã¬ãžã¹ã¿Yã®å€ãæžç®ããŸããçµæã¯ã¬ãžã¹ã¿Xã«æ ŒçŽãããŸãããã©ã°[cãzãoãn]ã«åœ±é¿ããŸã |
52 YX 0Z 00 | SUB RXãRYãRZ | ã¬ãžã¹ã¿Xããã¬ãžã¹ã¿Yã®å€ãæžç®ããŸããçµæã¯ã¬ãžã¹ã¿Zã«é
眮ãããŸãããã©ã°[cãzãoãn]ã«åœ±é¿ããŸã |
53 0X LL HH | CMPI RXãHHLL | ã¬ãžã¹ã¿Xããå³æHHLLå€ãæžç®ããŸããçµæã¯ä¿åãããŸããã ãã©ã°[cãzãoãn]ã«åœ±é¿ããŸã |
54 YX 00 00 | CMP RXãRY | ã¬ãžã¹ã¿Xããã¬ãžã¹ã¿Yã®å€ãæžç®ããŸããçµæã¯ä¿åãããŸããã ãã©ã°[cãzãoãn]ã«åœ±é¿ããŸã |
60 0X LL HH | ã¢ã³ãã£RXãHHLL | ã¬ãžã¹ã¿Xãžã®çŽæ¥å€HHLLã®è«çæŒç®ãANDããã¬ãžã¹ã¿Xã®çµæããã©ã°[zãn]ã«åœ±é¿ |
61 YX 00 00 | ããã³RXãRY | ã¬ãžã¹ã¿Xããã¬ãžã¹ã¿Xãžã®è«çæŒç®ãANDãå€ãçµæã¯ã¬ãžã¹ã¿Xã«é
眮ãããŸãããã©ã°[zãn]ã«åœ±é¿ããŸã |
62 YX 0Z 00 | RXãRYãRZ | ã¬ãžã¹ã¿Yããã¬ãžã¹ã¿Xãžã®è«çæŒç®ãANDãå€ãçµæã¯ã¬ãžã¹ã¿Zã«é
眮ãããŸãããã©ã°[zãn]ã«åœ±é¿ããŸãã |
63 0X LL HH | TSTI RXãHHLL | ã¬ãžã¹ã¿Xãžã®HHLLã®çŽæ¥å€ã®è«çæŒç®ãANDããçµæã¯ä¿åãããŸããã ãã©ã°[zãn]ã«åœ±é¿ããŸã |
64 YX 00 00 | TST RXãRY | ã¬ãžã¹ã¿Xã«å¯Ÿããã¬ãžã¹ã¿Yã®è«çæŒç®ãANDãå€ãçµæã¯ä¿åãããŸããã ãã©ã°[zãn]ã«åœ±é¿ããŸã |
70 0X LL HH | ORI RXãHHLL | ã¬ãžã¹ã¿Xãžã®HHLLã®çŽæ¥å€ã®è«çæŒç®ãORããçµæã¯ã¬ãžã¹ã¿Xã«ãããŸãããã©ã°[zãn]ã«åœ±é¿ããŸã |
71 YX 00 00 | ãŸãã¯RXãRY | ã¬ãžã¹ã¿Xã«å¯Ÿããã¬ãžã¹ã¿Yã®è«çæŒç®ãORãå€ãçµæã¯ã¬ãžã¹ã¿Xã«é
眮ãããŸãããã©ã°[zãn]ã«åœ±é¿ããŸã |
72 YX 0Z 00 | ãŸãã¯RXãRYãRZ | ã¬ãžã¹ã¿Yããã¬ãžã¹ã¿Xãžã®è«çæŒç®ãORãå€ãçµæã¯ã¬ãžã¹ã¿Zã«æ ŒçŽãããŸãããã©ã°[zãn]ã«åœ±é¿ããŸãã |
80 0X LL HH | XORI RXãHHLL | ã¬ãžã¹ã¿Xãžã®HHLLã®çŽæ¥å€ã®è«çæŒç®ãXORããçµæã¯ã¬ãžã¹ã¿Xã«ãããŸãããã©ã°[zãn]ã«åœ±é¿ããŸã |
81 YX 00 00 | XOR RXãRY | ã¬ãžã¹ã¿Xããã¬ãžã¹ã¿Xãžã®è«çæŒç®ãXORãå€ãçµæã¯ã¬ãžã¹ã¿Xã«é
眮ãããŸãããã©ã°[zãn]ã«åœ±é¿ããŸãã |
82 YX 0Z 00 | XOR RXãRYãRZ | ã¬ãžã¹ã¿Xããã¬ãžã¹ã¿Xãžã®è«çæŒç®ãXORãå€ãçµæã¯ã¬ãžã¹ã¿Zã«é
眮ãããŸãããã©ã°[zãn]ã«åœ±é¿ããŸã |
90 0X LL HH | MULI RXãHHLL | å³æHHLLå€ã«ã¬ãžã¹ã¿Xãä¹ç®ããŸããçµæã¯ã¬ãžã¹ã¿Xã«ãããŸãã[cãzãn]ãã©ã°ã«åœ±é¿ããŸã |
91 YX 00 00 | MUL RXãRY | ã¬ãžã¹ã¿Yã®å€ã«ã¬ãžã¹ã¿Xãä¹ç®ããŸããçµæã¯ã¬ãžã¹ã¿Xã«é
眮ãããŸãããã©ã°[cãzãn]ã«åœ±é¿ããŸã |
92 YX 0Z 00 | MUL RXãRYãRZ | ã¬ãžã¹ã¿Yã®å€ã«ã¬ãžã¹ã¿XãæããŸããçµæã¯ã¬ãžã¹ã¿Zã«é
眮ãããŸãããã©ã°[cãzãn]ã«åœ±é¿ããŸã |
A0 0X LL HH | DIVI RXãHHLL | ã¬ãžã¹ã¿XãHHLLã®å³å€ã«åå²ããŸãã çµæã¯ã¬ãžã¹ã¿Xã«ãããŸãããã©ã°[cãzãn]ã«åœ±é¿ããŸã |
A1 YX 00 00 | DIV RXãRY | ã¬ãžã¹ã¿Xãã¬ãžã¹ã¿Yã®å€ã§é€ç®ããŸããçµæã¯ã¬ãžã¹ã¿Xã«é
眮ãããŸãããã©ã°[cãzãn]ã«åœ±é¿ããŸã |
A2 YX 0Z 00 | DIV RXãRYãRZ | ã¬ãžã¹ã¿Xãã¬ãžã¹ã¿Yã®å€ã§é€ç®ããŸããçµæã¯ã¬ãžã¹ã¿Xã«é
眮ãããŸãããã©ã°[cãzãn]ã«åœ±é¿ããŸã |
B0 0X 0N 00 | SHL RXãN | ã¬ãžã¹ã¿Xã®å€ã®å·ŠNåãžã®è«çã·ããã ãã©ã°[zãn]ã«åœ±é¿ããŸã |
B1 0X 0N 00 | SHR RXãN | ã¬ãžã¹ã¿Xã®å€ãå³ã«Nåè«ççã«ã·ããããŸãã ãã©ã°[zãn]ã«åœ±é¿ããŸã |
B0 0X 0N 00 | SAL RXãN | ã¬ãžã¹ã¿Xã®å€ãå·Šã«Nåç®è¡ã·ããããŸãã ãã©ã°[zãn]ã«åœ±é¿ããŸãã SHLãšåã |
B2 0X 0N 00 | SAR RXãN | ã¬ãžã¹ã¿Xã®å€ãå³ã«Nåç®è¡çã«ã·ããããŸãã ãã©ã°[zãn]ã«åœ±é¿ããŸã |
B3 YX 00 00 | SHL RXãRY | ã¬ãžã¹ã¿Xã®å€ãã¬ãžã¹ã¿Yã®å€ã ãå·Šã«è«çã·ããããŸãããã©ã°[zãn]ã«åœ±é¿ããŸã |
B4 YX 00 00 | SHR RXãRY | ã¬ãžã¹ã¿Xã®å€ãã¬ãžã¹ã¿Yã®å€ã ãå³ã«è«çã·ããããŸãããã©ã°[zãn]ã«åœ±é¿ããŸã |
B3 YX 00 00 | SAL RXãRY | ã¬ãžã¹ã¿Yã®å€ã«ããã¬ãžã¹ã¿Xã®å€ã®å·Šãžã®ç®è¡ã·ããããã©ã°[zãn]ã«åœ±é¿ããŸãã SHLãšåã |
B5 YX 00 00 | SAR RXãRY | ã¬ãžã¹ã¿Xã®å€ãã¬ãžã¹ã¿Yã®å€ã ãå³ã«ç®è¡ã·ããããŸãããã©ã°[zãn]ã«åœ±é¿ããŸã |
C0 0X 00 00 | PUSH RX | ã¬ãžã¹ã¿Xã®å€ãã¹ã¿ãã¯ã«ããã·ã¥ããŸãã SPã2å¢å |
C1 0X 00 00 | ãããRX | SPã2æžãããŸããã¹ã¿ãã¯ããã¬ãžã¹ã¿Xã®å€ã埩å
ããŸãã |
C2 00 00 00 | ããã·ã¥ | ã¹ã¿ãã¯äžã®ãã¹ãŠã®æ±çšã¬ãžã¹ã¿ãŒïŒr0-rfïŒã®å€ãä¿åããŸãã SPã32å¢å |
C3 00 00 00 | ãããŒã« | SPã32æžãããŸãããã¹ãŠã®æ±çšã¬ãžã¹ã¿ãŒïŒr0-rfïŒã®å€ãã¹ã¿ãã¯ãã埩å
ããŸãã |
C4 00 00 00 | ãã·ã¥ã | ãã©ã°ã¬ãžã¹ã¿ã®ç¶æ
ãã¹ã¿ãã¯ã«ä¿åããŸãã ããã0ã7ã¯ã¡ã€ã³ãã©ã°ãããã8ã15ã¯ç©ºïŒåžžã«ãŒãïŒã§ãã SPã2å¢å |
C5 00 00 00 | ãã·ã¥ã | SPã2æžãããã¹ã¿ãã¯ãããã©ã°ã¬ãžã¹ã¿ã®ç¶æ
ã埩å
ãã |
D0 00 LL HH | PAL HHLL | HHLLã16 * 3ãã€ããRGB圢åŒã«ãããã¬ãããããŠã³ããŒãããŸãã æåŸã®VBlankã®çŽåŸã«æå¹ã«ãªããŸã |
D1 0x 00 00 | ãã«RX | ã¬ãžã¹ã¿Xã16 * 3ãã€ããRGB圢åŒã®ã¢ãã¬ã¹ã«ãããã¬ãããããŠã³ããŒãããŸãã æåŸã®VBlankã®çŽåŸã«æå¹ã«ãªããŸã |
ãã詳现ã«èªãå Žæããæãããæ¹æ³
ç§ãèšã£ãããã«ãè±èªã®ãã©ãŒã©ã ã§è©³çŽ°ãèªãããšãã§ããŸãã
-CHIP16ã®è°è«ãå«ã
æåã® ïŒãããŠãã§ã«å»æ¢ããããéããããïŒãããã¯
-è°è«
ã®ãã2çªç®ã®ãããã¯ïŒã¡ã€ã³ïŒã ããã§ã¯ããã¹ãŠã®æ
å ±ããããã¯ã®æåã®æçš¿ã§åéãããŸãã ä»æ§ãããŒã«ãããã°ã©ã ã®äŸããããŸãã ãã©ãŒã©ã ããäœããããŠã³ããŒãããã«ã¯ç»é²ãå¿
èŠã§ãã
åªããRefCHIP16ãšãã¥ã¬ãŒã¿ãŒïŒ
code.google.com/p/refchip16/downloads/list C ++ãœãŒã¹ãåçŽãªè§£éãšAOTïŒAhead Of TimeïŒã³ã³ãã€ã«ã®äž¡æ¹ã®å¯èœæ§ããããééããªãé
ä¿¡ãããŸãã ãããããä»æ§1.1ïŒç¹ã«ADSRãµãŠã³ãïŒãæ£ããåŠçããå¯äžã®éåžžã®ãšãã¥ã¬ãŒã¿ãŒã§ãã
CHIP16çšã®ããæ代é
ãã®ã²ãŒã ããã¢ããã¹ãã€ã¡ãŒãžã®ã»ããã ã»ãšãã©ã®ããã°ã©ã ã«ã¯
ã¢ã»ã³ãã©ãŒãœãŒã¹ããããŸã
ãrghost.ru /
38862474æ°ããã²ãŒã ãšããã°ã©ã ã¯ããã©ãŒã©ã ã¹ã¬ããã«é
眮ãããŠããŸãã
éçº
CHIP16ã®ããã°ã©ã ãšã²ãŒã ã¯ãå§åçã«ã¢ã»ã³ãã©ãŒã§èšè¿°ãããŠããŸãã ããããããŠã³ããŒãã§ããŸãïŒ
code.google.com/p/tchip16/downloads/listããšãã°ããã®ãããã¯ïŒç¢å°ïŒããã¹ãã©ã€ããåãåºããŠç»é¢ã«è¡šç€ºããŸãã ãããè¡ãã«ã¯ãä»»æã®ããã¹ããšãã£ã¿ãŒãéãã空ã®
habr.asmãã¡ã€ã«ãäœæããããã«ã³ãã³ããèšè¿°ããŸãã
spr #0504 ; 8x5 ldi r0,10 ; r0 - X ldi r1,10 ; r1 - Y drw r0,r1,arrow ; (10,10) end: jmp end ; ; arrow: db #f1, #11, #11, #ff db #f1, #1f, #ff, #ff db #f1, #f1, #ff, #ff db #f1, #ff, #1f, #ff db #f1, #ff, #f1, #ff
次ã«ããã®ã³ãã³ãã䜿çšããŠããã°ã©ã ãã³ã³ãã€ã«ããŸãã
tchip16.exe habr.asm -o habr.c16
次ã«ãçµæã®
habr.c16ãã¡ã€ã«ããšãã¥ã¬ãŒã¿ãŒã§éããçœãèæ¯ã«é»ãç¢å°ã®å€èŠ³ã楜ãã¿ãŸã:)
è€éãªã¢ã«ãŽãªãºã ããããã°ããã«ã¯ããããã¬ãŒ-chip16debuggerã䜿çšã§ããŸãïŒ
code.google.com/p/chip16debugger/downloads/listã¢ã«ãã¡çãgovnokodããããããã°ããããŸãããäœããªãããã¯ãŸãã§ãã æã«ã¯ãã°ãèŠã€ããã®ã«æ¬åœã«åœ¹ç«ã¡ãŸãã
ãšãã¥ã¬ãŒã¿ãŒ...ãããŠãä»ã«ã¯ãŒã«ãªãã®ãããæ··ããããšãã§ããŸããïŒ
ããŠãäŸãã°ãé«æ°Žæºèšèªã®ã³ã³ãã€ã©ïŒãŸãã¯ç¿»èš³è
ïŒã§ãã äŸãã°ãç§ã¯Pascalã®ãããªèšèªãã翻蚳è
ãæžã蟌ãããšããŸããã 確ãã«äœããèµ·ãããŸããããæããã«æ¬æ Œçãªèšèªã«ã¯å±ããŸããã ãããã®ããã°ã©ã ã¯ããã§æžãããšãã§ããŸãïŒ
var xPixels, yPixels, xStart, yStart, Xsize, YSize, maxiter : integer; xStep, yStep : integer; ix,iy,x,y,x0,y0,iteration,xtemp : integer; dist : byte; temp : byte; xx,yy : byte; begin XPixels := 160; YPixels := 100; XStart := $FF9c; YStart := $FFce; XSize := 160; YSize := 100; MaxIter := 16; XStep := XSize div XPixels; YStep := YSize div YPixels; yy := 20; For iy := 0 to yPixels do begin xx := 0; For ix := 0 to xPixels do begin x := xStart + ix * xStep; y := yStart + iy * yStep; x0 := x; y0 := y; iteration := 0; Repeat xtemp := ((x*x) div 48) - ((y*y) div 48) + x0; y := 2*((x*y) div 48) + y0; x := xtemp; iteration := iteration + 1; dist := ((x*x) div 48) + ((y*y) div 48); If iteration = maxiter then dist := 4000; Until dist > 192; If iteration <> maxiter then If iteration > 1 then begin temp := ((iteration shl 4) or iteration) shl 8; temp := temp or ((iteration shl 4) or iteration); DrawSprite(xx,yy,$0201,^temp); end; xx := xx + 2; end; yy := yy + 2; end; end.
åºåã¯ãäžèšã®ã¢ã»ã³ãã©tchip16ã«ãã£ãŠã³ã³ãã€ã«ããã倧éã®ã¢ã»ã³ãã©govnokodaã§ããã ãã®çµæãäœããã®åœ¢ã§æ©èœãã次ã®å³ã瀺ããŸããã
æ®å¿µãªãããç§ã¯ãããæŸæ£ããŸããããã¹ãŠããªãªãŒã¹ããããå°ãªããšãããŒã¿çã«ããããã®ååãªã¹ãã«ããããŸããã§ããã
ä»ã«äœã...ãããããèå³æ·±ãã±ãŒã¹ããããŸãã-圌ãã¯ãäž»é¡ã®äžã§ãã¢ãæžããªã©ãCHIP16ãã¢ã³ã³ããããç«ãŠããã£ãã§ãã ãŸããå€ãåŠæ ¡ããªãœãŒã¹ã¯éãããŠããŸãããããã¯æè¡ã®ã®ã°ãæã€ã·ã§ãŒããŒã§ã¯ãããŸããã çè«çã«ã¯ããã¬ãŒã ãããã¡ããªããç»é¢å
šäœã®ãµã€ãºã®ã¹ãã©ã€ãã«32Kbã®RAMãããããã«ãå€ããšãã§ã¯ããå®å
šã«ã²ããããšãã§ããŸãã ãŸããã³ãŒãããšã«32 KBãæ®ããŸãã ç»é¢ãç¹æ»
ãããªããŠãã§ããŸãã ç§ã®å°ããª
ãã¢ã¯ãã·ããããã§ã ïŒãã®ãããªç¹ã¯ç©ºéå
ã§å転ããå®éã«ã¯3次å
ã«ãªããŸãïŒã 確ãã«ãç§ã¯ããã«è¶³ãèžã¿å
¥ããç¹ïŒ1ãã€ãã®ã¹ãã©ã€ãïŒã§æ£ç¢ºã«ç¹ãæšæž¬ããŸãããããããŸã°ããã®çµæã§ãã
ãã©ãããã©ãŒã å
šäœãããŒããŠã§ã¢ã§äœæã§ããŸãïŒFPGAããã³ãã®ä»ã®ãã©ã³ãžã¹ã¿ã®ãã¡ã³çšïŒã ãããŠããã®ããŒããŠã§ã¢çšã«ãšãã¥ã¬ãŒã¿ãæžããããããŸããã
ãŸããããŒããŠã§ã¢ã®èŠ³ç¹ã§ã¯å®å
šã«ããŒããŠã§ã¢ã§ã¯ãããŸããïŒéåžžã®MIPSããã»ããµããããŸãïŒããããã§ãèå³æ·±ããã®ã§ãã
çããã«å¹žéãïŒ