Annotation of hatari/src/includes/decode.h, revision 1.1.1.1

1.1       root        1: /*
                      2:   Hatari
                      3: */
                      4: 
                      5: extern   short int PendingInterruptCount;
                      6: extern   int SoundCycles;
                      7: 
                      8: 
                      9: /*extern   unsigned long Regs[16+1];*/
                     10: /*extern   unsigned short int SR,SR_Before;*/
                     11: /*extern   unsigned long PC;*/
                     12: /*extern   unsigned long *Reg_SuperSP,*Reg_UserSP;*/
                     13: 
                     14: #ifndef UAESYSDEPS
                     15: #include "sysdeps.h"
                     16: #endif
                     17: #ifndef UAEMEMORY
                     18: #include "memory.h"
                     19: #endif
                     20: #ifndef UAENEWCPU
                     21: #include "newcpu.h"
                     22: #endif
                     23: #define Regs regs.regs       /* Ouah - uggly hack - FIXME! */
                     24: #define SR regs.sr
                     25: #define PC regs.pc
                     26: #define Reg_SuperSP regs.isp
                     27: #define Reg_UserSP regs.usp
                     28: 
                     29: 
                     30: /* Offset ST address to PC pointer: */
                     31: #define STRAM_ADDR(Var)  ( (unsigned long)STRam+((unsigned long)Var&0x00ffffff) )
                     32: 
                     33: /*-----------------------------------------------------------------------*/
                     34: /* Offsets from memory space program counter to immediate data(in wrong endian) */
                     35: #define IMM_BYTE  SIZE_BYTE              /* Byte offset */
                     36: #define IMM_WORD
                     37: #define IMM_LONG
                     38: 
                     39: /*-----------------------------------------------------------------------*/
                     40: /* Set clock times for each instruction, see '68000 timing' pages for details */
                     41: /* NOTE All times are rounded up to nearest 4 cycles */
                     42: #define  ROUND_CYCLES_TO4(var)  (((int)(var)+3)&0xfffffffc)
                     43: 
                     44: static inline void ADD_CYCLES(op,r,w)
                     45: {
                     46:  PendingInterruptCount-= (op+3)&0xfffffffc;
                     47:  SoundCycles += (op+3)&0xfffffffc;
                     48: }
                     49: 
                     50: 
                     51: //-----------------------------------------------------------------------
                     52: // Decode table structure offsets, see 'DecodeTable[]' MUST match 'decode.inc'
                     53: #define DECODE_CYCLES    0                // Cycles for this instruction, includes <ea> etc...
                     54: #define DECODE_FUNCTION    4              // Decode function to call
                     55: #define DECODE_EA      8                  // <ea> Decode function
                     56: #define DECODE_1      12                  // src/dest parameters
                     57: #define DECODE_2      16
                     58: #define DECODE_DISASS    20               // Disassembly function
                     59: #define SIZEOF_DECODE    8
                     60: 
                     61: //-----------------------------------------------------------------------
                     62: #define PENDING_INTERRUPT_FLAG_MFP      0x0001    // 'PendingInterruptFlag' masks, MUST match 'decode.inc'
                     63: #define PENDING_INTERRUPT_FLAG_TRACE    0x0002
                     64: #define  CLEAR_PENDING_INTERRUPT_FLAG_MFP  0xfffe
                     65: #define  CLEAR_PENDING_INTERRUPT_FLAG_TRACE  0xfffd
                     66: 
                     67: //-----------------------------------------------------------------------
                     68: #define INSTRUCTION_HISTORY_SIZE  8192            // MUST be ^2, and MUST match 'decode.inc'
                     69: #define INSTRUCTION_HISTORY_MASK  (INSTRUCTION_HISTORY_SIZE-1)
                     70: 
                     71: //-----------------------------------------------------------------------
                     72: #define  NUM_BREAKPOINTS    8                     // MUST match 'decode.inc'
                     73: 
                     74: //-----------------------------------------------------------------------
                     75: // 68000 instruction emulation functions
                     76: 
                     77: /*
                     78: extern   unsigned char PCCodeTable_NZVC[4096];
                     79: extern   unsigned char PCCodeTable_NZV_CX_SAME[4096];
                     80: extern   unsigned long ShiftCycleTable_ByteWord[64];
                     81: extern   unsigned long ShiftCycleTable_Long[64];
                     82: extern   int InsPC;
                     83: extern   BOOL bInSuperMode;
                     84: extern   unsigned long StackSave;
                     85: extern   unsigned long DecodeTable[65536*SIZEOF_DECODE];
                     86: extern   unsigned long InstructionHistory[INSTRUCTION_HISTORY_SIZE];
                     87: extern   int InstructionHistoryIndex;
                     88: extern   unsigned long BreakPointInstruction;
                     89: extern   unsigned long AddressBreakpoints[NUM_BREAKPOINTS];
                     90: extern   unsigned long BreakOnAddress;
                     91: extern   unsigned long CPUStopped;
                     92: */
                     93: extern   unsigned long EmuCCode;
                     94: extern   unsigned char STRam[16*1024*1024];
                     95: extern   short int PendingInterruptFlag;
                     96: extern   void *PendingInterruptFunction;
                     97: extern   unsigned long STRamEnd;
                     98: extern   unsigned long STRamEnd_BusErr;
                     99: extern   unsigned long ExceptionVector;
                    100: extern   unsigned long BusAddressLocation;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.