Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
homecomputer:chip8 [2014/06/23 11:30] – [CHIP-8] volkerphomecomputer:chip8 [2021/02/23 09:54] (aktuell) – [Links] volkerp
Zeile 28: Zeile 28:
   * http://oldcomputers.net/rca-cosmac-vip.html Infos zum COSMAC VIP   * http://oldcomputers.net/rca-cosmac-vip.html Infos zum COSMAC VIP
   * http://mattmik.com/documents.html die komplette Sammlung der VIPER-Magazine für die COSMAC VIP-Computer.   * http://mattmik.com/documents.html die komplette Sammlung der VIPER-Magazine für die COSMAC VIP-Computer.
 +
 +weitere Dokumente
 +  * http://www.mattmik.com/files/chip8/mastering/chip8.html
 +  * https://github.com/trapexit/chip-8_documentation/tree/master/Misc
 +  * https://github.com/trapexit/chip-8_documentation/tree/master/VIPER
 +
 +Octo - eine moderne Chip8 IDE
 +  * https://internet-janitor.itch.io/octo A Chip8 IDE, eigene Programmiersprache "octo" *.8o, Start online http://octo-ide.com/ 
 +  * https://github.com/JohnEarnest/Octo Anleitung/Quellen etc.
 +  * https://github.com/JohnEarnest/chip8Archive  Spiele etc.
  
 ===== CHIP-8 ===== ===== CHIP-8 =====
Zeile 133: Zeile 143:
   * x und y: 4-Bit-Register    * x und y: 4-Bit-Register 
  
-^ Hex ^ Symbolisch ^ Beschreibung ^ +^ Hex   ^ Symbolisch      ^ Assembler           ^ Beschreibung                                                                                                                                                                                       
-| 1mmm | GO mmm | Go to 0MMM |  +| 1mmm  | GO mmm          | JP addr             | Go to 0MMM                                                                                                                                                                                         
-| Bmmm | GO mmm+V0 | Go to 0MMM + V0 |  +| Bmmm  | GO mmm+V0       | JP V0, addr         | Go to 0MMM + V0                                                                                                                                                                                    
-| 2mmm | DO mmm | Do subroutine at 0MMM (must end with 00EE) |  +| 2mmm  | DO mmm          | CALL addr           | Do subroutine at 0MMM (must end with 00EE)                                                                                                                                                         
-| 00EE | RET | Return from subroutine |  +| 00EE  | RET             | RET                 | Return from subroutine                                                                                                                                                                             
-| 3xkk | SKIP;Vx EQ kk | Skip next instruction if VX = KK |  +| 3xkk  | SKIP;Vx EQ kk   | SE Vx, byte         | Skip next instruction if VX = KK                                                                                                                                                                   
-| 4xkk | SKIP;Vx NE kk | Skip next instruction if VX <> KK |  +| 4xkk  | SKIP;Vx NE kk   | SNE Vx, byte        | Skip next instruction if VX <> KK                                                                                                                                                                  
-| 5xy0 | SKIP;Vx EQ Vy | Skip next instruction if VX = VY |  +| 5xy0  | SKIP;Vx EQ Vy   | SE Vx, Vy           | Skip next instruction if VX = VY                                                                                                                                                                   
-| 9xy0 | SKIP;Vx NE Vy | Skip next instruction if VX <> VY |  +| 9xy0  | SKIP;Vx NE Vy   | SNE Vx, Vy          | Skip next instruction if VX <> VY                                                                                                                                                                  
-| Ex9E | SKIP;Vx EQ KEY | Skip next instruction if VX = Hex key (LSD) |  +| Ex9E  | SKIP;Vx EQ KEY  | SKP Vx              | Skip next instruction if VX = Hex key (LSD)                                                                                                                                                        
-| ExA1 | SKIP;Vx NE KEY | Skip next instruction if VX <> Hex key (LSD) |  +| ExA1  | SKIP;Vx NE KEY  | SKNP Vx             | Skip next instruction if VX <> Hex key (LSD)                                                                                                                                                       
-| 6xkk | Vx=kk | Let VX = KK |  +| 6xkk  | Vx=kk           | LD Vx, byte         | Let VX = KK                                                                                                                                                                                        
-| Cxkk | Vx=RND | Let VX = Random Byte (KK = Mask) |  +| Cxkk  | Vx=RND          | RND Vx, byte        | Let VX = Random Byte (KK = Mask)                                                                                                                                                                   
-| 7xkk | Vx=Vx+kk | Let VX = VX + KK |  +| 7xkk  | Vx=Vx+kk        | ADD Vx, byte        | Let VX = VX + KK                                                                                                                                                                                   
-| 8xy0 | Vx=Vy | Let VX = VY |  +| 8xy0  | Vx=Vy           | LD Vx, Vy           | Let VX = VY                                                                                                                                                                                        
-| 8xy1 | Vx=Vx/Vy | Let VX = VX / VY (VF changed) |  +| 8xy1  | Vx=Vx/Vy        | OR Vx, Vy           | Let VX = VX / VY (VF changed)                                                                                                                                                                      
-| 8xy2 | Vx=Vx&Vy | Let VX = VX & VY (VF changed) |  +| 8xy2  | Vx=Vx&Vy        | AND Vx, Vy          | Let VX = VX & VY (VF changed)                                                                                                                                                                      
-| 8xy4 | Vx=Vx+Vy | Let VX = VX + VY (VF = 00 if VX + VY <= FF, VF = 01 if VX + VY > FF) |  +| 8xy4  | Vx=Vx+Vy        | ADD Vx, Vy          | Let VX = VX + VY (VF = 00 if VX + VY <= FF, VF = 01 if VX + VY > FF)                                                                                                                               
-| 8xy5 | Vx=Vx-Vy | Let VX = VX - VY (VF = 00 if VX < VY, VF = 01 if VX >= VY) |  +| 8xy5  | Vx=Vx-Vy        | SUB Vx, Vy          | Let VX = VX - VY (VF = 00 if VX < VY, VF = 01 if VX >= VY)                                                                                                                                         
-| Fx07 | Vx=TIME | Let VX = current timer value |  +| Fx07  | Vx=TIME         | LD Vx, DT           | Let VX = current timer value                                                                                                                                                                       
-| Fx0A | Vx=KEY | Let VX = hex key digit (waits for any key pressed) |  +| Fx0A  | Vx=KEY          | LD Vx, K            | Let VX = hex key digit (waits for any key pressed)                                                                                                                                                 
-| Fx15| TIME=Vx | Set timer = VX (01 = 1/60 second) |  +| Fx15  | TIME=Vx         | LD DT, Vx           | Set timer = VX (01 = 1/60 second)                                                                                                                                                                  
-| Fx18 | SND=Vx | Set tone duration = VX (01 = 1/60 second) |  +| Fx18  | SND=Vx          | LD ST, Vx           | Set tone duration = VX (01 = 1/60 second)                                                                                                                                                          
-| Ammm | I=mmm | Let I = 0MMM |  +| Ammm  | I=mmm           | LD I, addr          | Let I = 0MMM                                                                                                                                                                                       
-| Fx1E | I=I+Vx | Let I = I + VX |  +| Fx1E  | I=I+Vx          | ADD I, Vx           | Let I = I + VX                                                                                                                                                                                     
-| Fx29 | I=Vx(LSDP) | Let I = 5-byte display pattern for LSD of VX |  +| Fx29  | I=Vx(LSDP)      | LD F, Vx            | Let I = 5-byte display pattern for LSD of VX                                                                                                                                                       
-| Fx33 | MI=Vx(3DD) | Let MI = 3-decimal digit equivalent of VX (I unchanged) |  +| Fx33  | MI=Vx(3DD)      | LD B, Vx            | Let MI = 3-decimal digit equivalent of VX (I unchanged)                                                                                                                                            
-| Fx55 | MI=V0:Vx | Let MI = V0 : VX (I = I + X + 1) |  +| Fx55  | MI=V0:Vx        | LD [I], Vx          | Let MI = V0 : VX (I = I + X + 1)                                                                                                                                                                   
-| Fx65 | V0:Vx=MI | Let V0 : VX = MI (I = I + X + 1) |  +| Fx65  | V0:Vx=MI        | LD Vx, [I]          | Let V0 : VX = MI (I = I + X + 1)                                                                                                                                                                   
-| 00E0 | ERASE | Erase display (all 0's) |  +| 00E0  | ERASE           | CLS                 | Erase display (all 0's)                                                                                                                                                                            
-| DxyN | SHOW nMI@VxVy | Show n-byte MI pattern at VX-VY coordinates.\\ I unchanged. MI pattern is combined with existing display via EXCLUSIVE-OR function.\\ VF = 01 if a 1 in MI pattern matches 1 in existing display. |  +| DxyN  | SHOW nMI@VxVy   | DRW Vx, Vy, nibble  | Show n-byte MI pattern at VX-VY coordinates.\\ I unchanged. MI pattern is combined with existing display via EXCLUSIVE-OR function.\\ VF = 01 if a 1 in MI pattern matches 1 in existing display.  
-| 0mmm | MLS@mmm | Do 1802 machine language subroutine at 0MMM (subroutine must end with D4 byte) | +| 0mmm  | MLS@mmm         | SYS addr            | Do 1802 machine language subroutine at 0MMM (subroutine must end with D4 byte)                                                                                                                     |
  
 +Die Assemblerbezeichungen entsprechen http://devernay.free.fr/hacks/chip8/C8TECH10.HTM
 ==== Beispiel: Panzer ==== ==== Beispiel: Panzer ====
  
Zeile 245: Zeile 256:
  
   * Listenpunkt   * Listenpunkt
 +
 +EMMA 02 emuliert den COSMAC VIP
 +
 +VISION8 ist ein CHIP-8-Emulator
 +
 +CHIPPER V2.11 ist ein Assembler für Chip-8.
  
 ===== Z9001 ===== ===== Z9001 =====
  
-Beim [[sonstiges:kctreffen2013|]] habe ich einen {{sonstiges:chip8.pdf|Vortrag}} über die Programmiersprache CHIP-8 und die Implementation eines CHIP-8-Interpreters für den Z9001 gehalten.+Beim [[sonstiges:kctreffen2013|]] habe ich einen {{sonstiges:chip8.pdf|Vortrag}} über die Programmiersprache CHIP-8 und die [[z9001:software:chip_8|Implementation eines CHIP-8-Interpreters für den Z9001]] gehalten.
  
 {{:homecomputer:chip8_z9001_2.gif?300|}} {{:homecomputer:chip8_z9001_2.gif?300|}}
  
  • homecomputer/chip8.1403523015.txt.gz
  • Zuletzt geändert: 2014/06/23 11:30
  • von volkerp