Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
homecomputer:chip8:chip8interpreter [2014/06/23 11:50] volkerphomecomputer:chip8:chip8interpreter [2014/06/23 14:58] volkerp
Zeile 3: Zeile 3:
 Das ist der komplette(!) originale CHIP8-Interpreter des COSMAC VIP. Das ist der komplette(!) originale CHIP8-Interpreter des COSMAC VIP.
 Quelle: VIPER-Magazin 1-02 August 1978. Quelle: VIPER-Magazin 1-02 August 1978.
 +
 +Der CHIP-8-Interpreter ist extrem platzsparend programmiert, er belegt nicht einmal 0.5 KByte! Diese Kompaktheit spiegelt sich beispielsweise auch in den Hex-Werten der Maschinencode-Instruktionen wieder: Die Befehle der F-Gruppe haben einen zweistellige Nummer, diese entspricht der Startadresse der zugehörigen Befehlsinterpretation. Damit sparte man sich die Bytes für eine zusätzliche Sprungtabelle.
 +
 +
 +===== CDP 1802 =====
 +
 +
 +Das Handbuch zum COSMAC VIP enthält auch das Datenblatt zum Prozessor CDP 1802 incl. Befehlsliste.
 +
 +
 +  * http://visual6502.org/images/pages/RCA_1802.html riesiges Bild des Chips (7164 x 5496 Pixxel, 19 MByte!)
 +  * http://www.visual6502.org/wiki/index.php?title=RCA_1802E 1082 Beschreibung
 +
 +
 +COSMAC Register Summary
 +
 +<code>
 +D 8 Bits Data Register (Accumulator)
 +N 4 Bits Holds Low-Order Instr. Digit
 +DF 1 Bit Data Flag (ALU Carry)
 +I 4 Bits Holds High-Order Instr. Digit
 +R 16 Bits 1 of 16 Scratchpad Registers
 +  R0.1 R0.0
 +  R1.1 R1.0
 +  ...
 +  RF.1 RF.0
 +T 8 Bits Holds old X, P after Interrupt (X is high byte)
 +P 4 Bits Designates which register is Program Counter
 +                   zeigt auf Registerarray
 +IE 1 Bit Interrupt Enable
 +X 4 Bits Designates which register is Data Pointer
 +                   zeigt auf Registerarray
 +Q 1 Bit Output Flip Flop
 +</code>
 +
 +instruction set
 +<code>
 +MNEM    NAME                                    OPCODE
 +ADC     Add with Carry                          74
 +ADCI b  Add with Carry Immediate                7C bb
 +ADD     Add                                     F4
 +ADI b   Add Immediate                           FC bb
 +AND     Logical AND                             F2
 +ANI b   AND Immediate                           FA bb
 +B1 a    Branch on External Flag 1               34 aa
 +B2 a    Branch on External Flag 2               35 aa
 +B3 a    Branch on External Flag 3               36 aa
 +B4 a    Branch on External Flag 4               37 aa
 +BDF a   Branch if DF is 1                       33 aa
 +BN1 a   Branch on Not External Flag 1           3C aa
 +BN2 a   Branch on Not External Flag 2           3D aa
 +BN3 a   Branch on Not External Flag 3           3E aa
 +BN4 a   Branch on Not External Flag 4           3F aa
 +BNF a   Branch if DF is 0                       3B aa
 +BNQ a   Branch if Q is off                      39 aa
 +BNZ a   Branch on Not Zero                      3A aa
 +BQ a    Branch if Q is on                       31 aa
 +BR a    Branch unconditionally                  30 aa
 +BZ a    Branch on Zero                          32 aa
 +DEC r   Decrement Register                      2r
 +DIS     Return and Disable Interrupts           71
 +GHI r   Get High byte of Register               9r
 +GLO r   Get Low byte of Register                8r
 +IDL     Idle                                    00
 +INC r   Increment Register                      1r
 +INP p   Input to memory and D (for p = 9 to F)  6p
 +IRX     Increment R(X)                          60
 +LBDF aa Long Branch if DF is 1                  C3 aaaa
 +LBNF aa Long Branch if DF is 0                  CB aaaa
 +LBNQ aa Long Branch if Q is off                 C9 aaaa
 +LBNZ aa Long Branch if Not Zero                 CA aaaa
 +LBQ aa  Long Branch if Q is on                  C1 aaaa
 +LBR aa  Long Branch unconditionally             C0 aaaa
 +LBZ aa  Long Branch if Zero                     C2 aaaa
 +LDA r   Load D and Advance                      4r
 +LDI b   Load D Immediate                        F8 bb
 +LDN r   Load D via N (for r = 1 to F)           0r
 +LDX     Load D via R(X)                         F0
 +LDXA    Load D via R(X) and Advance             72
 +LSDF    Long Skip if DF is 1                    CF
 +LSIE    Long Skip if Interrupts Enabled         CC
 +LSKP    Long Skip                               C8
 +LSNF    Long Skip if DF is 0                    C7
 +LSNQ    Long Skip if Q is off                   C5
 +LSNZ    Long Skip if Not Zero                   C6
 +LSQ     Long Skip if Q is on                    CD
 +LSZ     Long Skip if Zero                       CE
 +MARK    Save X and P in T                       79
 +NOP     No Operation                            C4
 +OR      Logical OR                              F1
 +ORI b   OR Immediate                            F9 bb
 +OUT p   Output from memory (for p = 1 to 7)     6p
 +PHI r   Put D in High byte of register          Br
 +PLO r   Put D in Low byte of register           Ar
 +REQ     Reset Q                                 7A
 +RET     Return                                  70
 +SAV     Save T                                  78
 +SD      Subtract D from memory                  F5
 +SDB     Subtract D from memory with Borrow      75
 +SDBI b  Subtract D with Borrow, Immediate       7D bb
 +SDI b   Subtract D from memory Immediate byte   FD bb
 +SEP r   Set P                                   Dr
 +SEQ     Set Q                                   7B
 +SEX r   Set X                                   Er
 +SHL     Shift D Left                            FE
 +SHLC    Shift D Left with Carry                 7E
 +SHR     Shift D Right                           F6
 +SHRC    Shift D Right with Carry                76
 +SKP     Skip one byte                           38
 +SM      Subtract Memory from D                  F7
 +SMB     Subtract Memory from D with Borrow      77
 +SMBI b  Subtract Memory with Borrow, Immediate  7F bb
 +SMI b   Subtract Memory from D, Immediate       FF bb
 +STR r   Store D into memory                     5r
 +STXD    Store D via R(X) and Decrement          73
 +XOR     Exclusive OR                            F3
 +XRI b   Exclusive OR, Immediate                 FB bb
 +</code>
 +
 +
 +===== Interpreter =====
 +
  
 <code> <code>
  • homecomputer/chip8/chip8interpreter.txt
  • Zuletzt geändert: 2023/06/08 12:41
  • von volkerp