+\r
+int OpTas(int op, int gen_special)\r
+{\r
+ int ea=0;\r
+ int use=0;\r
+\r
+ ea=op&0x003f;\r
+\r
+ // See if we can do this opcode:\r
+ if (EaCanWrite(ea)==0 || EaAn(ea)) return 1;\r
+\r
+ use=OpBase(op,0);\r
+ if (op!=use) { OpUse(op,use); return 0; } // Use existing handler\r
+\r
+ if (!gen_special) OpStart(op,ea);\r
+ else\r
+ ot("Op%.4x_%s\n", op, ms?"":":");\r
+\r
+ Cycles=4;\r
+ if(ea>=8) Cycles+=10;\r
+\r
+ EaCalc (11,0x003f,ea,0,1);\r
+ EaRead (11, 1,ea,0,0x003f,1);\r
+\r
+ ot(" adds r1,r1,#0 ;@ Defines NZ, clears CV\n");\r
+ OpGetFlags(0,0);\r
+ ot("\n");\r
+\r
+#if CYCLONE_FOR_GENESIS\r
+ // the original Sega hardware ignores write-back phase (to memory only)\r
+ if (ea < 0x10 || gen_special) {\r
+#endif\r
+ ot(" orr r1,r1,#0x80000000 ;@ set bit7\n");\r
+\r
+ EaWrite(11, 1,ea,0,0x003f,1);\r
+#if CYCLONE_FOR_GENESIS\r
+ }\r
+#endif\r
+\r
+ OpEnd(ea);\r
+\r
+#if (CYCLONE_FOR_GENESIS == 2)\r
+ if (!gen_special && ea >= 0x10) {\r
+ OpTas(op, 1);\r
+ }\r
+#endif\r
+\r
+ return 0;\r
+}\r
+\r