--- /dev/null
+/******************************************************************************\r
+\r
+ cz80macro.h\r
+\r
+ CZ80 \8ae\8eí\83}\83N\83\8d\r
+\r
+******************************************************************************/\r
+\r
+#if CZ80_USE_JUMPTABLE\r
+#define _SSOP(A,B) A##B\r
+#define OP(A) _SSOP(OP,A)\r
+#define OPCB(A) _SSOP(OPCB,A)\r
+#define OPED(A) _SSOP(OPED,A)\r
+#define OPXY(A) _SSOP(OPXY,A)\r
+#define OPXYCB(A) _SSOP(OPXYCB,A)\r
+#else\r
+#define OP(A) case A\r
+#define OPCB(A) case A\r
+#define OPED(A) case A\r
+#define OPXY(A) case A\r
+#define OPXYCB(A) case A\r
+#endif\r
+\r
+#define USE_CYCLES(A) CPU->ICount -= (A);\r
+#define ADD_CYCLES(A) CPU->ICount += (A);\r
+\r
+#define RET(A) { USE_CYCLES(A) goto Cz80_Exec; }\r
+\r
+#if CZ80_ENCRYPTED_ROM\r
+\r
+#define SET_PC(A) \\r
+ CPU->BasePC = CPU->Fetch[(A) >> CZ80_FETCH_SFT]; \\r
+ OPBase = CPU->OPFetch[(A) >> CZ80_FETCH_SFT]; \\r
+ PC = (A) + CPU->BasePC;\r
+\r
+#define GET_OP() (*(UINT8 *)(OPBase + PC))\r
+\r
+#else\r
+\r
+#define SET_PC(A) \\r
+ CPU->BasePC = CPU->Fetch[(A) >> CZ80_FETCH_SFT]; \\r
+ PC = (A) + CPU->BasePC;\r
+\r
+#define GET_OP() (*(UINT8 *)PC)\r
+\r
+#endif\r
+\r
+#define READ_OP() GET_OP(); PC++\r
+\r
+#define READ_ARG() (*(UINT8 *)PC++)\r
+#if CZ80_LITTLE_ENDIAN\r
+#define READ_ARG16() (*(UINT8 *)PC | (*(UINT8 *)(PC + 1) << 8)); PC += 2\r
+#else\r
+#define READ_ARG16() (*(UINT8 *)(PC + 1) | (*(UINT8 *)PC << 8)); PC += 2\r
+#endif\r
+\r
+//#ifndef BUILD_CPS1PSP\r
+//#define READ_MEM8(A) memory_region_cpu2[(A)]\r
+//#else\r
+#define READ_MEM8(A) CPU->Read_Byte(A)\r
+//#endif\r
+#if CZ80_LITTLE_ENDIAN\r
+#define READ_MEM16(A) (READ_MEM8(A) | (READ_MEM8((A) + 1) << 8))\r
+#else\r
+#define READ_MEM16(A) ((READ_MEM8(A) << 8) | READ_MEM8((A) + 1))\r
+#endif\r
+\r
+#define WRITE_MEM8(A, D) CPU->Write_Byte(A, D);\r
+#if CZ80_LITTLE_ENDIAN\r
+#define WRITE_MEM16(A, D) { WRITE_MEM8(A, D); WRITE_MEM8((A) + 1, (D) >> 8); }\r
+#else\r
+#define WRITE_MEM16(A, D) { WRITE_MEM8((A) + 1, D); WRITE_MEM8(A, (D) >> 8); }\r
+#endif\r
+\r
+#define PUSH_16(A) { UINT32 sp; zSP -= 2; sp = zSP; WRITE_MEM16(sp, A); }\r
+#define POP_16(A) { UINT32 sp; sp = zSP; A = READ_MEM16(sp); zSP = sp + 2; }\r
+\r
+#define IN(A) CPU->IN_Port(A)\r
+#define OUT(A, D) CPU->OUT_Port(A, D)\r
+\r
+#define CHECK_INT \\r
+ if (zIFF1) \\r
+ { \\r
+ UINT32 IntVect; \\r
+ \\r
+ if (CPU->IRQState == HOLD_LINE) \\r
+ CPU->IRQState = CLEAR_LINE; \\r
+ \\r
+ CPU->HaltState = 0; \\r
+ zIFF1 = zIFF2 = 0; \\r
+ IntVect = CPU->Interrupt_Callback(CPU->IRQLine); \\r
+ \\r
+ PUSH_16(zRealPC) \\r
+ \\r
+ if (zIM == 2) \\r
+ { \\r
+ IntVect = (IntVect & 0xff) | (zI << 8); \\r
+ PC = READ_MEM16(IntVect); \\r
+ CPU->ExtraCycles += 17; \\r
+ } \\r
+ else if (zIM == 1) \\r
+ { \\r
+ PC = 0x38; \\r
+ CPU->ExtraCycles += 13; \\r
+ } \\r
+ else \\r
+ { \\r
+ PC = IntVect & 0x38; \\r
+ CPU->ExtraCycles += 13; \\r
+ } \\r
+ \\r
+ SET_PC(PC) \\r
+ }\r