 // [CF] RST $08
 def op_CF() {
   om_jp(0x08);
+}
+
+// [D5] PUSH DE
+def op_D5() {
+  om_push16(&DE);
+}
+
+// [DF] RST $18
+def op_DF() {
+  om_jp(0x18);
 }
 
 // [E0] LD ($FF00 + n), A

  init_cycletable();

  // open_rom("./missile-command.gb");
  open_rom("./tetris.gb");
  // open_rom("./boxxle.gb");
  // open_rom("./super-mario-land.gb");

  while true { execute(); }


  *(optable + 0x3E) = op_3E;
  *(optable + 0x3F) = op_3F;

  *(optable + 0x40) = op_40;
  *(optable + 0x41) = op_41;
  *(optable + 0x42) = op_42;
  *(optable + 0x43) = op_43;
  *(optable + 0x44) = op_44;
  *(optable + 0x45) = op_45;
  *(optable + 0x46) = op_46;
  *(optable + 0x47) = op_47;
  *(optable + 0x48) = op_48;
  *(optable + 0x49) = op_49;
  *(optable + 0x4A) = op_4A;
  *(optable + 0x4B) = op_4B;
  *(optable + 0x4C) = op_4C;
  *(optable + 0x4D) = op_4D;
  *(optable + 0x4E) = op_4E;
  *(optable + 0x4F) = op_4F;

  *(optable + 0x50) = op_50;
  *(optable + 0x51) = op_51;
  *(optable + 0x52) = op_52;
  *(optable + 0x53) = op_53;
  *(optable + 0x54) = op_54;
  *(optable + 0x55) = op_55;
  *(optable + 0x56) = op_56;
  *(optable + 0x57) = op_57;
  *(optable + 0x58) = op_58;
  *(optable + 0x59) = op_59;
  *(optable + 0x5A) = op_5A;
  *(optable + 0x5B) = op_5B;
  *(optable + 0x5C) = op_5C;
  *(optable + 0x5D) = op_5D;
  *(optable + 0x5E) = op_5E;
  *(optable + 0x5F) = op_5F;

  *(optable + 0x60) = op_60;
  *(optable + 0x61) = op_61;
  *(optable + 0x62) = op_62;
  *(optable + 0x63) = op_63;
  *(optable + 0x64) = op_64;
  *(optable + 0x65) = op_65;
  *(optable + 0x66) = op_66;
  *(optable + 0x67) = op_67;
  *(optable + 0x68) = op_68;
  *(optable + 0x69) = op_69;
  *(optable + 0x6A) = op_6A;
  *(optable + 0x6B) = op_6B;
  *(optable + 0x6C) = op_6C;
  *(optable + 0x6D) = op_6D;
  *(optable + 0x6E) = op_6E;
  *(optable + 0x6F) = op_6F;

  *(optable + 0x80) = op_80;
  *(optable + 0x81) = op_81;
  *(optable + 0x82) = op_82;
