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/22 08:38] volkerpz9001:software:chip_8 [2022/08/02 10:15] (aktuell) – [Interna] volkerp
Zeile 19: Zeile 19:
   * {{ :z9001:software:chip8.zip |}} Quellcode, Stand 22.2.2021   * {{ :z9001:software:chip8.zip |}} Quellcode, Stand 22.2.2021
   * {{ :z9001:software:chip8-bin.zip |}} ausführbare Datei + Chip-8-Programme (für USB/Diskette)   * {{ :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. Hinweis: Die Timer für Sound und Delay arbeiten offenbar nicht korrekt.
Zeile 77: Zeile 78:
 ===== Interna ===== ===== 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. +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 wurd nur ein BOS-error ausgegeben.+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 84: 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 20 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
     - VIP Kaleidoscope      - VIP Kaleidoscope 
     - VIP Video Display Drawing Game     - VIP Video Display Drawing Game
Zeile 105: Zeile 106:
     - VIP Strike-9      - VIP Strike-9 
     - VIP Card Game (like the well-known acey-ducey)     - 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+  * **VP-710_RCA_COSMAC_VIP_Game_Manual_Dec78.pdf**  enthält weitere 16 Programme für CHIP-8
     - VIP Pinball (Andrew Modla)     - VIP Pinball (Andrew Modla)
     - VIP Message Center (Andrew Modla)     - VIP Message Center (Andrew Modla)
Zeile 125: Zeile 126:
 ===== 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 260: 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 269: 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 294: 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.1613983132.txt.gz
  • Zuletzt geändert: 2021/02/22 08:38
  • von volkerp