Everything is big-endian!
1st byte | structure | description |
---|---|---|
00 |
XXXX |
sets PC to XXXX |
01 |
XXXX |
sets PC to address stored in RAM at XXXX |
02 |
XY |
sets PC to (RX << 8) \| RY |
03 |
XY |
copies RX ’s value to RY |
04 |
XXXXY0 |
copies RY ’s value to XXXX |
04 |
XXXXY1 |
copies value at XXXX to RY |
04 |
XXXXY2 |
copies RY ’s value to XXXX on disk |
04 |
XXXXY3 |
copies value at XXXX on disk to RY |
05 |
XXXX |
gets disk size and stores it in RAM at XXXX -XXXX+2 (3B) |
06 |
0XNN |
sets RX to NN |
06 |
1XNN |
sets RX to RX+NN , sets Rf to 1 if an overflow occured or 0 if it didn’t |
06 |
2XNN |
sets RX to RX-NN , sets Rf |
06 |
3XNN |
sets RX to NN-RX , sets Rf |
06 |
4XNN |
sets RX to RX*NN , sets Rf |
06 |
5XNN |
sets RX to RX\|NN |
06 |
6XNN |
sets RX to RX&NN |
06 |
7XNN |
sets RX to RX^NN |
06 |
8X0N |
sets RX to RX>>N |
06 |
9X0N |
sets RX to RX<<N |
07 |
XY |
sets RX to RX+RY , sets Rf |
08 |
XY |
sets RX to RX-RY , sets Rf |
09 |
XY |
sets RX to RY-RX , sets Rf |
0a |
XY |
sets RX to RX*RY , sets Rf |
0b |
XY |
sets RX to RX\|RY |
0c |
XY |
sets RX to RX&RY |
0d |
XY |
sets RX to RX^RY |
0e |
XY |
sets RX to RX>>RY |
0f |
XY |
sets RX to RX<<RY |
10 |
pops a value from the stack and sets PC to that value | |
11 |
XXXX |
pushes PC to the stack and sets PC to XXXX |
12 |
XXXX |
pops the top of the stack to RAM address XXXX (2B) |
13 |
XXXX |
pushes value at RAM address XXXX (2B) to the stack |
14 |
XYZZZZ |
if RX == RY , go to ZZZZ |
15 |
XYZZZZ |
if RX != RY , go to ZZZZ |
16 |
XYZZZZ |
if RX > RY , go to ZZZZ |
17 |
XYZZZZ |
if RX < RY , go to ZZZZ |
18 |
XYZZZZ |
if RX >= RY , go to ZZZZ |
19 |
XYZZZZ |
if RX <= RY , go to ZZZZ |
1a |
X0YYZZZZ |
if RX == YY , go to ZZZZ |
1a |
X1YYZZZZ |
if RX != YY , go to ZZZZ |
1a |
X2YYZZZZ |
if RX > YY , go to ZZZZ |
1a |
X3YYZZZZ |
if RX < YY , go to ZZZZ |
1a |
X4YYZZZZ |
if RX >= YY , go to ZZZZ |
1a |
X5YYZZZZ |
if RX <= YY , go to ZZZZ |
1b |
0X |
sets delay timer frequency to RX Hz |
1b |
1X |
sets sound timer frequency to RX Hz |
1b |
2X |
sets delay timer value to RX Hz |
1b |
3X |
sets sound timer value to RX Hz |
1b |
40 |
waits for delay timer to finish |
1b |
41 |
waits for sound timer to finish |
1b |
5X |
saves delay timer value to RX |
1b |
6X |
saves sound timer value to RX |
1c |
XX |
prints system character XX |
1d |
XX |
prints custom character XX |
1e |
XXYYYY |
sets custom character XX to character stored at YYYY -YYYY+F |
1f |
XXYYYY |
go to YYYY if XX is pressed on the keyboard |
20 |
XY |
sets text color to RX ’s value and background color to RY ’s value |
21 |
clears display | |
22 |
XY |
goes to coordinates (RX , RY ) for printing |
23 |
XXXXYYYYZ0 |
copies RZ bytes of data at XXXX on disk to YYYY in RAM |
23 |
XXXXYYYYZ1 |
copies RZ bytes of data at XXXX in RAM to YYYY on disk |
24 |
0X |
prints system character RX |
24 |
1X |
prints custom character RX |
25 |
0XYYYY |
go to YYYY if RX is pressed on the keyboard |
26 |
XXXX |
set Ri to XXXX |
27 |
XXXX |
set Rj to XXXX |
28 |
XY |
set Ri to (RX << 8) \| RY |
29 |
XY |
set Rj to (RX << 8) \| RY |
2a |
0X |
set Ri to Ri + RX , sets Rf |
2a |
1X |
set Rj to Rj + RX , sets Rf |
2b |
0X |
set Ri to Ri - RX , sets Rf |
2b |
1X |
set Rj to Rj - RX , sets Rf |
2c |
0X |
read from RAM address Ri to RX |
2c |
1X |
read from disk address Rj to RX |
2c |
2X |
write to RAM address Ri from RX |
2c |
3X |
write to disk address Rj from RX |