Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| z9001:software:chip_8 [2021/02/19 09:18] – [Beispiel: Zähler] volkerp | z9001: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 [[homecomputer: | + | CHIP8 ist ein Interpreter für die Programmiersprache | 
| Entwickelt habe ich diesen Interpreter 2013 für das [[sonstiges: | Entwickelt habe ich diesen Interpreter 2013 für das [[sonstiges: | ||
| + | |||
| + | 2021 hab ich den alten Quellcode hervorgeholt und um die überfälligen Teile Laden/ | ||
| ===== Speicherbelegung ===== | ===== Speicherbelegung ===== | ||
| Zeile 12: | Zeile 15: | ||
| | OS-Kommando | CHIP8 | | | OS-Kommando | CHIP8 | | ||
| + | ===== Download ===== | ||
| + | |||
| + | * {{ : | ||
| + | * {{ : | ||
| + | * {{sonstiges: | ||
| + | Hinweis: Die Timer für Sound und Delay arbeiten offenbar nicht korrekt. | ||
| ===== Anleitung ===== | ===== Anleitung ===== | ||
| Zeile 19: | Zeile 28: | ||
| {{: | {{: | ||
| - | Mit STOP (Strg-C) wird der CHIP8-Interpreter | + | Mit STOP (Strg-C) wird das Programm | 
| LIST startet den HEX-Editor. | LIST startet den HEX-Editor. | ||
| Zeile 36: | Zeile 45: | ||
| Als Dateiendung wird automatisch CH8 vergeben. | Als Dateiendung wird automatisch CH8 vergeben. | ||
| - | Hinweis: Bei der Arbeit mit USB oder Diskette werden die Programme OHNE den typischen KC-Vorblock gespeichert. Die CH8-Dateien sind hier | + | Hinweis: Bei der Arbeit mit USB oder Diskette werden die Programme OHNE den typischen KC-Vorblock gespeichert. Die CH8-Dateien sind hier reine Binärdateien und kompatibel zu den im Internet verfügbaren CHIP-8-Programmen. | 
| - | reine Binärdateien und kompatibel zu den im Internet verfügbaren CHIP-8-Programmen. | + | |
| RUN startet das aktuelle Programm. Im Fenster laufen die CHIP8-Programme auf einem 64x32 Pixel großen " | RUN startet das aktuelle Programm. Im Fenster laufen die CHIP8-Programme auf einem 64x32 Pixel großen " | ||
| Zeile 45: | 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 < | + | - Breakout | 
| - Panzer (s. [[sonstiges: | - Panzer (s. [[sonstiges: | ||
| - | - 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> | 
| {{: | {{: | ||
| Zeile 67: | Zeile 74: | ||
| +---+---+---+---+ | +---+---+---+---+ | ||
| </ | </ | ||
| + | |||
| + | |||
| + | ===== Interna ===== | ||
| + | |||
| + | Der eigentliche CHIP-8-Maschinencode-Interpreter basiert auf dem Programm Chip83 v0.1 by Joe Wingbermuehle; | ||
| + | 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 ===== | ||
| - | * http://www.chip8.com Die größte Sammlung an Programmen und Infos zu CHIP-8, Handbuch des COSMAC | + | z.B. auf http://bitsavers.informatik.uni-stuttgart.de/ | 
| - | * http:// | + | |
| + | * **COSMAC_VIP_Instruction_Manual_1978.pdf** | ||
| + | - 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 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: | + | Details zur Programmiersprache s. [[homecomputer: | 
| | virtueller Prozessor | 16 Register V0..VF\\ 	Index-/ | | virtueller Prozessor | 16 Register V0..VF\\ 	Index-/ | ||
| Zeile 210: | Zeile 261: | ||
| | 0mmm  | MLS@mmm | | 0mmm  | MLS@mmm | ||
| - | Die Assemblerbezeichnungen entsprechen http:// | + | Die Assemblerbezeichnungen entsprechen http:// | 
| Zeile 219: | Zeile 270: | ||
| Programm | Programm | ||
| < | < | ||
| - | 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 | 
| </ | </ | ||
| - | Assembler-Code | + | Assembler-Code | 
| - | + | < | |
| - | < | + | 200: | 
| - | L200: LD | + | 202:         LD   V1, #00    ; 6100 | 
| - | LD   V1, #00            ; 6100 | + | 204:         LD   V2, #00    ; 6200 | 
| - | LD V2, #00 ; 6200 | + | 206: L206 | 
| - | L206: DRW  V1, V2, #5 | + | 208:         DRW  V1, V2, #5 ; D125   und wieder | 
| - | DRW  V1, V2, #5 | + | 20A:         ADD  V1, #01    ; 7101 | 
| - | ADD  V1, #01            ; 7101 | + | 20C: ADD V2, #01 ; 7201 und unten verändern | 
| - | ADD V2, #01 ; 7201 und unten verändern | + | 20E:         JP | 
| - | JP | + |  | 
| - | ; | + | 210: L210    DB | 
| - | L210: db #F0, #90, #F0, #90, #F0 ;     Sprite " | + | 211: | 
| + | 212: | ||
| + | 213: | ||
| + | 214: | ||
| </ | </ | ||
| - | |||
| ==== Beispiel: Zähler ==== | ==== Beispiel: Zähler ==== | ||
| Zeile 244: | Zeile 297: | ||
| Beispiel 3 aus "RCA COSMAC VIP Instruction Manual" | Beispiel 3 aus "RCA COSMAC VIP Instruction Manual" | ||
| - | 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 " | + | 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 " | 
| 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. | ||