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
z9001:software:chip_8 [2021/02/19 13:36] volkerpz9001:software:chip_8 [2022/08/02 10:15] (aktuell) – [Interna] volkerp
Zeile 1: Zeile 1:
 +
 ====== CHIP-8 ====== ====== CHIP-8 ======
  
 CHIP8 ist ein Interpreter für die Programmiersprache [[homecomputer:chip8|]], s.a. [[wp>CHIP-8]]. CHIP8 ist ein Interpreter für die Programmiersprache [[homecomputer:chip8|]], s.a. [[wp>CHIP-8]].
 Entwickelt habe ich diesen Interpreter 2013 für das [[sonstiges:kctreffen2013|]]. Entwickelt habe ich diesen Interpreter 2013 für das [[sonstiges:kctreffen2013|]].
 +
 +2021 hab ich den alten Quellcode hervorgeholt und um die überfälligen Teile Laden/Speichern/Editieren ergänzt.
  
 ===== Speicherbelegung ===== ===== Speicherbelegung =====
Zeile 12: Zeile 15:
 | OS-Kommando | CHIP8 | | OS-Kommando | CHIP8 |
  
 +===== Download =====
 +
 +  * {{ :z9001:software:chip8.zip |}} Quellcode, Stand 22.2.2021
 +  * {{ :z9001:software:chip8-bin.zip |}} ausführbare Datei + Chip-8-Programme (für USB/Diskette)
 +  * {{sonstiges:chip8.pdf|Vortrag}} Mein Vortrag zum KC-Treffen 2013
  
 +Hinweis: Die Timer für Sound und Delay arbeiten offenbar nicht korrekt.
 ===== Anleitung ===== ===== Anleitung =====
  
Zeile 43: Zeile 52:
  
   - IBM-Logo\\ Anzeige des Logos, Ende mit ESC   - IBM-Logo\\ Anzeige des Logos, Ende mit ESC
-  - Breakout\\ der Schläger wird links-rechts mit <4>-<6> bewegt.+  - Breakout (Paul Vervalin, David Winter)\\ der Schläger wird links-rechts mit <4>-<6> bewegt.
   - Panzer (s. [[sonstiges:kctreffen2013|]])\\ Panzer bewegen hoch <2> - rechts <6>  - runter <8> - links <4>   - Panzer (s. [[sonstiges:kctreffen2013|]])\\ Panzer bewegen hoch <2> - rechts <6>  - runter <8> - links <4>
-  - Pong\\ linker Spieler hoch <1> runter <4> rechter Spieler hoch <C> runter <D>+  - Pong (Paul Vervalin, David Winter)\\ linker Spieler hoch <1> runter <4> rechter Spieler hoch <C> runter <D>
  
 {{:z9001:software:chip8-3.png|}} {{:z9001:software:chip8-3.png|}}
Zeile 65: Zeile 74:
 +---+---+---+---+ +---+---+---+---+
 </code> </code>
 +
 +
 +===== Interna =====
 +
 +Der eigentliche CHIP-8-Maschinencode-Interpreter basiert auf dem Programm Chip83 v0.1 by Joe Wingbermuehle; orig. für TI-83 in Z80-Code geschrieben.
 +Load/Save setzt die BDOS-Erweiterung von USB-OS bzw. Disk-OS (USBX bzw. DOSX) voraus. Ohne diese Erweiterung wird nur ein BOS-Error ausgegeben.
  
 ===== Links ===== ===== Links =====
Zeile 70: Zeile 85:
 z.B. auf http://bitsavers.informatik.uni-stuttgart.de/components/rca/cosmac/ zu finden: z.B. auf http://bitsavers.informatik.uni-stuttgart.de/components/rca/cosmac/ zu finden:
  
-  * COSMAC_VIP_Instruction_Manual_1978.pdf   Handbuch zum VIP, enthält Einführung in CHIP-8 und 16 Programme für CHIP-8 +  * **COSMAC_VIP_Instruction_Manual_1978.pdf**   Handbuch zum VIP, enthält Einführung in CHIP-8 und 20 Programme für CHIP-8 
-  * VP-710_RCA_COSMAC_VIP_Game_Manual_Dec78.pdf  enthält weitere 20 Programme für CHIP-8+    - VIP Kaleidoscope  
 +    - VIP Video Display Drawing Game 
 +    - VIP Wipe Off  
 +    - VIP Space Intercept  
 +    - VIP 4096-Bit Picture  
 +    - VIP Figure Shooting at Moving Target  
 +    - VIP Tick-Tack-Toe Game  
 +    - VIP Spooky Spot 
 +    - VIP Jackpot  
 +    - VIP Snake Race 
 +    - VIP Card Matching Game 
 +    - VIP Armored Vehicle Clash  
 +    - VIP Hi-Lo  
 +    - VIP Hex Reflex  
 +    - VIP Dot-Dash  
 +    - VIP A-Mazing  
 +    - VIP Deduce  
 +    - VIP Shooting Stars  
 +    - VIP Strike-9  
 +    - VIP Card Game (like the well-known acey-ducey) 
 +  * **VP-710_RCA_COSMAC_VIP_Game_Manual_Dec78.pdf**  enthält weitere 16 Programme für CHIP-8 
 +    - VIP Pinball (Andrew Modla) 
 +    - VIP Message Center (Andrew Modla) 
 +    - VIP Bingo (Andrew Modla) 
 +    - VIP Blackjack (Andrew Modla) 
 +    - VIP Slide (Joyce Weisbecker) 
 +    - VIP Reversi (Philip Baltzer) 
 +    - VIP Bowling (Gooitzen van der Wal) 
 +    - VIP Deflection (John Fort) 
 +    - VIP Animal Race (Brian Astle) 
 +    - VIP Most Dangerous Game (Peter Maruhnic) 
 +    - VIP Sum Fun (Joyce Weisbecker) 
 +    - VIP Sequence Shoot (Joyce Weisbecker) 
 +    - VIP Biorhythm (Jef Winsor) 
 +    - VIP Programmable Space fighters (Jef Winsor) 
 +    - VIP Lunar Lander 
 +    - VIP Blockout (Steve Houk)
  
 ===== CHIP-8 ===== ===== CHIP-8 =====
  
-Details zur Programmiersprache s. [[homecomputer:chip8|]].+Details zur Programmiersprache s. [[homecomputer:chip8|]] und [[homecomputer:chip8:referenz|]].
  
 | virtueller Prozessor | 16 Register V0..VF\\ Index-/Adressregister I\\  (Stackregister SP)\\ (Program Counter PC) \\ Delay Timer DT\\ Sound Timer ST | | virtueller Prozessor | 16 Register V0..VF\\ Index-/Adressregister I\\  (Stackregister SP)\\ (Program Counter PC) \\ Delay Timer DT\\ Sound Timer ST |
Zeile 210: Zeile 261:
 | 0mmm  | MLS@mmm         | SYS addr            | 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 Assemblerbezeichnungen entsprechen http://devernay.free.fr/hacks/chip8/C8TECH10.HTM+Die Assemblerbezeichnungen entsprechen http://devernay.free.fr/hacks/chip8/C8TECH10.HTM ([[homecomputer:chip8:referenz|]])
  
  
Zeile 219: Zeile 270:
 Programm Programm
 <code> <code>
-200: A2 10 61 00 62 00 D1 25 +200: A2 10 61 00 62 00 D1 25
 208: D1 25 71 01 72 01 12 06 208: D1 25 71 01 72 01 12 06
-210: F0 90 F0 90 F0 00 00 00+210: F0 90 F0 90 F0   
 </code> </code>
  
-Assembler-Code (erstellt mit c8dasm) +Assembler-Code 
- +<code> 
-<code>    +200        LD   I, L210    ; A210   Index auf L210  
-L200: LD   I,  L210           ; A210   Index auf L210  +202:         LD   V1, #00    ; 6100   Startposition (0,0) 
-      LD   V1, #00            ; 6100   Startposition (0,0) +204:         LD   V2, #00    ; 6200    
-      LD   V2, #00            ; 6200 +206L206    DRW  V1, V2, #5 ; D125   "8" zeichnen (5 Bytes ab I) 
-L206: DRW  V1, V2, #5         ; D125   "8" zeichnen (5 Bytes ab I) +208:         DRW  V1, V2, #5 ; D125   und wieder löschen 
-      DRW  V1, V2, #5         ; D125   "8" löschen +20A:         ADD  V1, #01    ; 7101   Position nach rechts 
-      ADD  V1, #01            ; 7101   Position nach rechts +20C:         ADD  V2, #01    ; 7201   und unten verändern 
-      ADD  V2, #01            ; 7201   und unten verändern +20E:         JP   L206       ; 1206   und neu zeichnen 
-      JP   L206               ; 1206   und neu zeichnen +     Sprite "8" (4x5 Pixel) 
-      +210L210    DB   %11110000 F0     ####.... 
-L210db #F0#90#F0#90#F0 ;     Sprite "8"+211:         DB   %10010000 90     #..#.... 
 +212:         DB   %11110000 F0     ####.... 
 +213:         DB   %10010000 90     #..#.... 
 +214:         DB   %11110000  F0     ####....
 </code> </code>
- 
  
 ==== Beispiel: Zähler ==== ==== Beispiel: Zähler ====
Zeile 244: Zeile 297:
 Beispiel 3 aus "RCA COSMAC VIP Instruction Manual" S.16 Beispiel 3 aus "RCA COSMAC VIP Instruction Manual" S.16
  
-Der FX29-Befehl setzt I auf ein Fünf-Byte-Muster im internen Speicher, das die niederwertige hexadezimale Ziffer von VX darstellt. Wenn VX = 07 ist, dann zeigt I auf die  Adresse eines "7" -Musters, das dann auf dem Bildschirm mit einer DXYN-Anweisung angezeigt werden kann. N muss für diese eingebauten hexadezimalen Muster immer 5 sein.+Der **FX29**-Befehl setzt I auf ein Fünf-Byte-Muster im internen Speicher, das die niederwertige hexadezimale Ziffer von VX darstellt. Wenn VX = 07 ist, dann zeigt I auf die  Adresse eines "7" -Musters, das dann auf dem Bildschirm mit einer **DXYN**-Anweisung angezeigt werden kann. N muss für diese eingebauten hexadezimalen Muster immer 5 sein.
  
 Das folgende Programm veranschaulicht die Verwendung der Anweisungen für FX29 und FX33.  Das folgende Programm veranschaulicht die Verwendung der Anweisungen für FX29 und FX33. 
  • z9001/software/chip_8.1613741807.txt.gz
  • Zuletzt geändert: 2021/02/19 13:36
  • von volkerp