List
code |
instruction |
description |
CHIP8 |
CHIP48 |
SCHIP10 |
SCHIP11 |
|
|
|
|
|
|
|
|
|
|
|
|
00CN |
SCD Nibble |
Scroll screen Nibble lines down |
|
|
|
○ |
CHIP8FN_(00CN,"SCD Nibble") |
|
|
|
|
|
|
|
|
|
|
|
00E0 |
CLS |
Clear display |
○ |
○ |
○ |
○ |
CHIP8FN_(00E0,"CLS") |
|
|
|
|
|
|
|
|
|
|
|
00EE |
RET |
Return from subroutine (16 levels) |
○ |
○ |
○ |
○ |
CHIP8FN_(00EE,"RET") |
|
|
|
|
|
|
|
|
|
|
|
00FB |
SCR |
Scroll screen 4 pixels right |
|
|
|
○ |
CHIP8FN_(00FB,"SCR") |
This, a 4 pixels left or right scrolling in SCHIP graphic mode will be interpreted as a TWO PIXELS scroll in CHIP-8 mode. |
00FC |
SCL |
Scroll screen 4 pixels left |
|
|
|
○ |
CHIP8FN_(00FC,"SCL") |
This, a 4 pixels left or right scrolling in SCHIP graphic mode will be interpreted as a TWO PIXELS scroll in CHIP-8 mode. |
00FD |
EXIT |
Terminate the interpreter |
|
|
○ |
○ |
CHIP8FN_(00FD,"EXIT") |
|
|
|
|
|
|
|
|
|
|
|
00FE |
LOW |
Disable extended screen mode |
|
|
○ |
○ |
CHIP8FN_(00FE,"LOW") |
|
|
|
|
|
|
|
|
|
|
|
00FF |
HIGH |
Enable extended screen mode |
|
|
○ |
○ |
CHIP8FN_(00FF,"HIGH") |
|
|
|
|
|
|
|
|
|
|
|
0NNN |
SYS Addr |
Call CDP1802 code at Addr |
○ |
|
|
|
CHIP8FN_(0NNN,"SYS Addr") |
|
|
|
|
|
|
|
|
|
|
|
1NNN |
JP Addr |
Jump to Addr |
○ |
○ |
○ |
○ |
CHIP8FN_(1NNN,"JP Addr") |
|
|
|
|
|
|
|
|
|
|
|
2NNN |
CALL Addr |
Call subroutine at Addr (16 levels) |
○ |
○ |
○ |
○ |
CHIP8FN_(2NNN,"CALL Addr") |
|
|
|
|
|
|
|
|
|
|
|
3XKK |
SE VX,Byte |
Skip next instruction if VX == Byte |
○ |
○ |
○ |
○ |
CHIP8FN_(3XKK,"SE VX,Byte") |
|
|
|
|
|
|
|
|
|
|
|
4XKK |
SNE VX,Byte |
Skip next instruction if VX != Byte |
○ |
○ |
○ |
○ |
CHIP8FN_(4XKK,"SNE VX,Byte") |
|
|
|
|
|
|
|
|
|
|
|
5XY0 |
SE VX,VY |
Skip next instruction if VX == VY |
○ |
○ |
○ |
○ |
CHIP8FN_(5XY0,"SE VX,VY") |
|
|
|
|
|
|
|
|
|
|
|
6XKK |
LD VX,Byte |
Set VX = Byte |
○ |
○ |
○ |
○ |
CHIP8FN_(6XKK,"LD VX,Byte") |
|
|
|
|
|
|
|
|
|
|
|
7XKK |
ADD VX,Byte |
Set VX = VX + Byte |
○ |
○ |
○ |
○ |
CHIP8FN_(7XKK,"ADD VX,Byte") |
|
|
|
|
|
|
|
|
|
|
|
8XY0 |
LD VX,VY |
Set VX = VY, VF updates |
○ |
○ |
○ |
○ |
CHIP8FN_(8XY0,"LD VX,VY") |
|
|
|
|
|
|
|
|
|
|
|
8XY1 |
OR VX,VY |
Set VX = VX | VY, VF updates |
○ |
○ |
○ |
○ |
CHIP8FN_(8XY1,"OR VX,VY") |
|
|
|
|
|
|
|
|
|
|
|
8XY2 |
AND VX,VY |
Set VX = VX & VY, VF updates |
○ |
○ |
○ |
○ |
CHIP8FN_(8XY2,"AND VX,VY") |
|
|
|
|
|
|
|
|
|
|
|
8XY3 |
XOR VX,VY |
Set VX = VX ^ VY, VF updates |
○ |
○ |
○ |
○ |
CHIP8FN_(8XY3,"XOR VX,VY") |
|
|
|
|
|
|
|
|
|
|
|
8XY4 |
ADD VX,VY |
Set VX = VX + VY, VF = carry |
○ |
○ |
○ |
○ |
CHIP8FN_(8XY4,"ADD VX,VY") |
|
|
|
|
|
|
|
|
|
|
|
8XY5 |
SUB VX,VY |
Set VX = VX - VY, VF = !borrow |
○ |
○ |
○ |
○ |
CHIP8FN_(8XY5,"SUB VX,VY") |
|
|
|
|
|
|
|
|
|
|
|
8XY6 |
SHR VX{,VY} |
Set VX = VX >> 1, VF = carry |
○ |
○ |
○ |
○ |
CHIP8FN_(8XY6,"SHR VX{,VY}") |
|
|
|
|
|
|
|
|
|
|
|
8XY7 |
SUBN VX,VY |
Set VX = VY - VX, VF = !borrow |
○ |
○ |
○ |
○ |
CHIP8FN_(8XY7,"SUBN VX,VY") |
|
|
|
|
|
|
|
|
|
|
|
8XYE |
SHL VX{,VY} |
Set VX = VX << 1, VF = carry |
○ |
○ |
○ |
○ |
CHIP8FN_(8XYE,"SHL VX{,VY}") |
|
|
|
|
|
|
|
|
|
|
|
9XY0 |
SNE VX,VY |
Skip next instruction if VX != VY |
○ |
○ |
○ |
○ |
CHIP8FN_(9XY0,"SNE VX,VY") |
|
|
|
|
|
|
|
|
|
|
|
ANNN |
LD I,Addr |
Set I = Addr |
○ |
○ |
○ |
○ |
CHIP8FN_(ANNN,"LD I,Addr") |
|
|
|
|
|
|
|
|
|
|
|
BNNN |
JP V0,Addr |
Jump to Addr + V0 |
○ |
○ |
○ |
○ |
CHIP8FN_(BNNN,"JP V0,Addr") |
|
|
|
|
|
|
|
|
|
|
|
CXKK |
RND VX,Byte |
Set VX = random & Byte |
○ |
○ |
○ |
○ |
CHIP8FN_(CXKK,"RND VX,Byte") |
|
|
|
|
|
|
|
|
|
|
|
DXY0 |
DRW VX,VY,0 |
Draw extended sprite stored at [I] at VX, VY. Set VF = collision |
|
|
○ |
○ |
CHIP8FN_(DXY0,"DRW VX,VY,0") |
Drawing the 16 x 16 pixels SCHIP sprite in CHIP-8 mode will display an 8 x 16 sprite. |
|
|
|
DXYN |
DRW VX,VY,Nibble |
Draw Nibble byte sprite stored at [I] at VX, VY. Set VF = collision |
○ |
○ |
○ |
○ |
CHIP8FN_(DXYN,"DRW VX,VY,Nibble") |
|
|
|
|
|
|
|
|
|
|
|
EX9E |
SKP VX |
Skip next instruction if key VX down |
○ |
○ |
○ |
○ |
CHIP8FN_(EX9E,"SKP VX") |
|
|
|
|
|
|
|
|
|
|
|
EXA1 |
SKNP VX |
Skip next instruction if key VX up |
○ |
○ |
○ |
○ |
CHIP8FN_(EXA1,"SKNP VX") |
|
|
|
|
|
|
|
|
|
|
|
FX07 |
LD VX,DT |
Set VX = delaytimer |
○ |
○ |
○ |
○ |
CHIP8FN_(FX07,"LD VX,DT") |
|
|
|
|
|
|
|
|
|
|
|
FX0A |
LD VX,K |
Set VX = key, wait for keypress |
○ |
○ |
○ |
○ |
CHIP8FN_(FX0A,"LD VX,K") |
|
|
|
|
|
|
|
|
|
|
|
FX15 |
LD DT,VX |
Set delaytimer = VX |
○ |
○ |
○ |
○ |
CHIP8FN_(FX15,"LD DT,VX") |
|
|
|
|
|
|
|
|
|
|
|
FX18 |
LD ST,VX |
Set soundtimer = VX |
○ |
○ |
○ |
○ |
CHIP8FN_(FX18,"LD ST,VX") |
|
|
|
|
|
|
|
|
|
|
|
FX1E |
ADD I,VX |
Set I = I + VX |
○ |
○ |
○ |
○ |
CHIP8FN_(FX1E,"ADD I,VX") |
|
|
|
|
|
|
|
|
|
|
|
(FX29) |
LD F,VX |
Point I to 5 byte numeric sprite for value in VX |
○ |
○ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FX29 |
LD LF,VX |
Point I to 5 byte numeric sprite for value in VX |
|
|
○ |
○ |
CHIP8FN_(FX29,"LD LF,VX") |
|
|
|
|
|
|
|
|
|
|
|
FX30 |
LD HF,VX |
Point I to 10 byte numeric sprite for value in VX |
|
|
○ |
○ |
CHIP8FN_(FX30,"LD HF,VX") |
|
|
|
|
|
|
|
|
|
|
|
FX33 |
LD B,VX |
Store BCD of VX in [I], [I+1], [I+2] |
○ |
○ |
○ |
○ |
CHIP8FN_(FX33,"LD B,VX") |
|
|
|
|
|
|
|
|
|
|
|
FX55 |
LD [I],VX |
Store V0 .. VX in [I] .. [I+X] |
○ |
○ |
○ |
○ |
CHIP8FN_(FX55,"LD [I],VX") |
|
|
|
|
|
|
|
|
|
|
|
FX65 |
LD VX,[I] |
Read V0 .. VX from [I] .. [I+X] |
○ |
○ |
○ |
○ |
CHIP8FN_(FX65,"LD VX,[I]") |
|
|
|
|
|
|
|
|
|
|
|
FX75 |
LD R,VX |
Store V0 .. VX in RPL user flags. Only V0 .. V7 valid |
|
|
○ |
○ |
CHIP8FN_(FX75,"LD R,VX") |
|
|
|
|
|
|
|
|
|
|
|
FX85 |
LD VX,R |
Read V0 .. VX from RPL user flags. Only V0 .. V7 valid |
|
|
○ |
○ |
CHIP8FN_(FX85,"LD VX,R") |
|
|
|
|
|
|
|
|
|
|
|