--- hatari/src/includes/decode.h 2019/04/01 07:09:27 1.1.1.2 +++ hatari/src/includes/decode.h 2019/04/01 07:10:04 1.1.1.3 @@ -2,14 +2,10 @@ Hatari */ -extern short int PendingInterruptCount; -extern int SoundCycles; +#ifndef HATARI_DECODE_H +#define HATARI_DECODE_H - -/*extern unsigned long Regs[16+1];*/ -/*extern unsigned short int SR,SR_Before;*/ -/*extern unsigned long PC;*/ -/*extern unsigned long *Reg_SuperSP,*Reg_UserSP;*/ +#include "sound.h" #ifndef UAESYSDEPS #include "sysdeps.h" @@ -25,14 +21,26 @@ extern int SoundCycles; #define PC regs.pc -/* Offset ST address to PC pointer: */ -#define STRAM_ADDR(Var) ( (unsigned long)STRam+((unsigned long)Var&0x00ffffff) ) +#define PENDING_INTERRUPT_FLAG_MFP 0x0001 /* 'PendingInterruptFlag' masks */ +#define PENDING_INTERRUPT_FLAG_TRACE 0x0002 +#define CLEAR_PENDING_INTERRUPT_FLAG_MFP 0xfffe +#define CLEAR_PENDING_INTERRUPT_FLAG_TRACE 0xfffd + + +extern unsigned char STRam[16*1024*1024]; +extern short int PendingInterruptFlag; +extern void *PendingInterruptFunction; +extern short int PendingInterruptCount; +extern unsigned long STRamEnd; +extern unsigned long STRamEnd_BusErr; +extern unsigned long ExceptionVector; +extern unsigned long BusAddressLocation; + /*-----------------------------------------------------------------------*/ -/* Offsets from memory space program counter to immediate data(in wrong endian) */ -#define IMM_BYTE SIZE_BYTE /* Byte offset */ -#define IMM_WORD -#define IMM_LONG +/* Offset ST address to PC pointer: */ +#define STRAM_ADDR(Var) ((unsigned long)STRam+((unsigned long)Var&0x00ffffff)) + /*-----------------------------------------------------------------------*/ /* Set clock times for each instruction, see '68000 timing' pages for details */ @@ -41,58 +49,9 @@ extern int SoundCycles; static inline void ADD_CYCLES(op,r,w) { - PendingInterruptCount-= (op+3)&0xfffffffc; - SoundCycles += (op+3)&0xfffffffc; + PendingInterruptCount-= (op+3)&0xfffffffc; + SoundCycles += (op+3)&0xfffffffc; } -//----------------------------------------------------------------------- -// Decode table structure offsets, see 'DecodeTable[]' MUST match 'decode.inc' -#define DECODE_CYCLES 0 // Cycles for this instruction, includes etc... -#define DECODE_FUNCTION 4 // Decode function to call -#define DECODE_EA 8 // Decode function -#define DECODE_1 12 // src/dest parameters -#define DECODE_2 16 -#define DECODE_DISASS 20 // Disassembly function -#define SIZEOF_DECODE 8 - -//----------------------------------------------------------------------- -#define PENDING_INTERRUPT_FLAG_MFP 0x0001 // 'PendingInterruptFlag' masks, MUST match 'decode.inc' -#define PENDING_INTERRUPT_FLAG_TRACE 0x0002 -#define CLEAR_PENDING_INTERRUPT_FLAG_MFP 0xfffe -#define CLEAR_PENDING_INTERRUPT_FLAG_TRACE 0xfffd - -//----------------------------------------------------------------------- -#define INSTRUCTION_HISTORY_SIZE 8192 // MUST be ^2, and MUST match 'decode.inc' -#define INSTRUCTION_HISTORY_MASK (INSTRUCTION_HISTORY_SIZE-1) - -//----------------------------------------------------------------------- -#define NUM_BREAKPOINTS 8 // MUST match 'decode.inc' - -//----------------------------------------------------------------------- -// 68000 instruction emulation functions - -/* -extern unsigned char PCCodeTable_NZVC[4096]; -extern unsigned char PCCodeTable_NZV_CX_SAME[4096]; -extern unsigned long ShiftCycleTable_ByteWord[64]; -extern unsigned long ShiftCycleTable_Long[64]; -extern int InsPC; -extern BOOL bInSuperMode; -extern unsigned long StackSave; -extern unsigned long DecodeTable[65536*SIZEOF_DECODE]; -extern unsigned long InstructionHistory[INSTRUCTION_HISTORY_SIZE]; -extern int InstructionHistoryIndex; -extern unsigned long BreakPointInstruction; -extern unsigned long AddressBreakpoints[NUM_BREAKPOINTS]; -extern unsigned long BreakOnAddress; -extern unsigned long CPUStopped; -*/ -extern unsigned long EmuCCode; -extern unsigned char STRam[16*1024*1024]; -extern short int PendingInterruptFlag; -extern void *PendingInterruptFunction; -extern unsigned long STRamEnd; -extern unsigned long STRamEnd_BusErr; -extern unsigned long ExceptionVector; -extern unsigned long BusAddressLocation; +#endif /* HATARI_DECODE_H */