   flag_set(FLAG_Z, false);
 }
 
-// TODO: [10] STOP
+// [10] STOP
+def op_10() {
+  cpu_stop = true;
+}
 
 // [11] LD DE, nn
 def op_11() {

  *(optable + 0x0E) = op_0E;
  *(optable + 0x0F) = op_0F;

  // TODO: *(optable + 0x10) = op_10;
  *(optable + 0x11) = op_11;
  *(optable + 0x12) = op_12;
  *(optable + 0x13) = op_13;

def cpu_step(): uint8 {
  CYCLES = 0;

  // IF STOP; just return 0
  if cpu_stop {
    // STOP stops the world (until a joypad interrupt)
    // FIXME: Allow joypad to resume STOP
    return 0;
  }

  // IF HALT; just return 4 (cycles)
  if HALT {
    if (IE & IF & 0x1F) == 0 {
