DGen/SDL
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Classes | Macros | Typedefs | Functions | Variables
m68kcpu.h File Reference
#include <stdio.h>
#include <stdint.h>
#include "m68k.h"
#include <limits.h>

Go to the source code of this file.

Classes

union  fp_reg
struct  m68ki_cpu_core

Macros

#define M68K_INT_GT_32_BIT   0
#define UINT16   uint16_t
#define UINT64   uint64_t
#define MAKE_INT_8(A)   (sint8)(A)
#define MAKE_INT_16(A)   (sint16)(A)
#define MAKE_INT_32(A)   (sint32)(A)
#define MAKE_UINT_8(A)   (uint8)(A)
#define MAKE_UINT_16(A)   (uint16)(A)
#define MAKE_UINT_32(A)   (uint32)(A)
#define EXCEPTION_BUS_ERROR   2 /* This one is not emulated! */
#define EXCEPTION_ADDRESS_ERROR   3 /* This one is partially emulated (doesn't stack a proper frame yet) */
#define EXCEPTION_ILLEGAL_INSTRUCTION   4
#define EXCEPTION_ZERO_DIVIDE   5
#define EXCEPTION_CHK   6
#define EXCEPTION_TRAPV   7
#define EXCEPTION_PRIVILEGE_VIOLATION   8
#define EXCEPTION_TRACE   9
#define EXCEPTION_1010   10
#define EXCEPTION_1111   11
#define EXCEPTION_FORMAT_ERROR   14
#define EXCEPTION_UNINITIALIZED_INTERRUPT   15
#define EXCEPTION_SPURIOUS_INTERRUPT   24
#define EXCEPTION_INTERRUPT_AUTOVECTOR   24
#define EXCEPTION_TRAP_BASE   32
#define FUNCTION_CODE_USER_DATA   1
#define FUNCTION_CODE_USER_PROGRAM   2
#define FUNCTION_CODE_SUPERVISOR_DATA   5
#define FUNCTION_CODE_SUPERVISOR_PROGRAM   6
#define FUNCTION_CODE_CPU_SPACE   7
#define CPU_TYPE_000   1
#define CPU_TYPE_008   2
#define CPU_TYPE_010   4
#define CPU_TYPE_EC020   8
#define CPU_TYPE_020   16
#define CPU_TYPE_040   32
#define STOP_LEVEL_STOP   1
#define STOP_LEVEL_HALT   2
#define INSTRUCTION_YES   0
#define INSTRUCTION_NO   0x08
#define MODE_READ   0x10
#define MODE_WRITE   0
#define RUN_MODE_NORMAL   0
#define RUN_MODE_BERR_AERR_RESET   1
#define NULL   ((void*)0)
#define BIT_0(A)   ((A) & 0x00000001)
#define BIT_1(A)   ((A) & 0x00000002)
#define BIT_2(A)   ((A) & 0x00000004)
#define BIT_3(A)   ((A) & 0x00000008)
#define BIT_4(A)   ((A) & 0x00000010)
#define BIT_5(A)   ((A) & 0x00000020)
#define BIT_6(A)   ((A) & 0x00000040)
#define BIT_7(A)   ((A) & 0x00000080)
#define BIT_8(A)   ((A) & 0x00000100)
#define BIT_9(A)   ((A) & 0x00000200)
#define BIT_A(A)   ((A) & 0x00000400)
#define BIT_B(A)   ((A) & 0x00000800)
#define BIT_C(A)   ((A) & 0x00001000)
#define BIT_D(A)   ((A) & 0x00002000)
#define BIT_E(A)   ((A) & 0x00004000)
#define BIT_F(A)   ((A) & 0x00008000)
#define BIT_10(A)   ((A) & 0x00010000)
#define BIT_11(A)   ((A) & 0x00020000)
#define BIT_12(A)   ((A) & 0x00040000)
#define BIT_13(A)   ((A) & 0x00080000)
#define BIT_14(A)   ((A) & 0x00100000)
#define BIT_15(A)   ((A) & 0x00200000)
#define BIT_16(A)   ((A) & 0x00400000)
#define BIT_17(A)   ((A) & 0x00800000)
#define BIT_18(A)   ((A) & 0x01000000)
#define BIT_19(A)   ((A) & 0x02000000)
#define BIT_1A(A)   ((A) & 0x04000000)
#define BIT_1B(A)   ((A) & 0x08000000)
#define BIT_1C(A)   ((A) & 0x10000000)
#define BIT_1D(A)   ((A) & 0x20000000)
#define BIT_1E(A)   ((A) & 0x40000000)
#define BIT_1F(A)   ((A) & 0x80000000)
#define GET_MSB_8(A)   ((A) & 0x80)
#define GET_MSB_9(A)   ((A) & 0x100)
#define GET_MSB_16(A)   ((A) & 0x8000)
#define GET_MSB_17(A)   ((A) & 0x10000)
#define GET_MSB_32(A)   ((A) & 0x80000000)
#define LOW_NIBBLE(A)   ((A) & 0x0f)
#define HIGH_NIBBLE(A)   ((A) & 0xf0)
#define MASK_OUT_ABOVE_2(A)   ((A) & 3)
#define MASK_OUT_ABOVE_8(A)   ((A) & 0xff)
#define MASK_OUT_ABOVE_16(A)   ((A) & 0xffff)
#define MASK_OUT_BELOW_2(A)   ((A) & ~3)
#define MASK_OUT_BELOW_8(A)   ((A) & ~0xff)
#define MASK_OUT_BELOW_16(A)   ((A) & ~0xffff)
#define MASK_OUT_ABOVE_32(A)   (A)
#define MASK_OUT_BELOW_32(A)   0
#define ADDRESS_68K(A)   ((A)&CPU_ADDRESS_MASK)
#define LSL(A, C)   ((A) << (C))
#define LSR(A, C)   ((A) >> (C))
#define LSR_32(A, C)   ((C) < 32 ? (A) >> (C) : 0)
#define LSL_32(A, C)   ((C) < 32 ? (A) << (C) : 0)
#define ROL_8(A, C)   MASK_OUT_ABOVE_8(LSL(A, C) | LSR(A, 8-(C)))
#define ROL_9(A, C)   (LSL(A, C) | LSR(A, 9-(C)))
#define ROL_16(A, C)   MASK_OUT_ABOVE_16(LSL(A, C) | LSR(A, 16-(C)))
#define ROL_17(A, C)   (LSL(A, C) | LSR(A, 17-(C)))
#define ROL_32(A, C)   MASK_OUT_ABOVE_32(LSL_32(A, C) | LSR_32(A, 32-(C)))
#define ROL_33(A, C)   (LSL_32(A, C) | LSR_32(A, 33-(C)))
#define ROR_8(A, C)   MASK_OUT_ABOVE_8(LSR(A, C) | LSL(A, 8-(C)))
#define ROR_9(A, C)   (LSR(A, C) | LSL(A, 9-(C)))
#define ROR_16(A, C)   MASK_OUT_ABOVE_16(LSR(A, C) | LSL(A, 16-(C)))
#define ROR_17(A, C)   (LSR(A, C) | LSL(A, 17-(C)))
#define ROR_32(A, C)   MASK_OUT_ABOVE_32(LSR_32(A, C) | LSL_32(A, 32-(C)))
#define ROR_33(A, C)   (LSR_32(A, C) | LSL_32(A, 33-(C)))
#define CPU_TYPE   m68ki_cpu.cpu_type
#define REG_DA   m68ki_cpu.dar /* easy access to data and address regs */
#define REG_D   m68ki_cpu.dar
#define REG_A   (m68ki_cpu.dar+8)
#define REG_PPC   m68ki_cpu.ppc
#define REG_PC   m68ki_cpu.pc
#define REG_SP_BASE   m68ki_cpu.sp
#define REG_USP   m68ki_cpu.sp[0]
#define REG_ISP   m68ki_cpu.sp[4]
#define REG_MSP   m68ki_cpu.sp[6]
#define REG_SP   m68ki_cpu.dar[15]
#define REG_VBR   m68ki_cpu.vbr
#define REG_SFC   m68ki_cpu.sfc
#define REG_DFC   m68ki_cpu.dfc
#define REG_CACR   m68ki_cpu.cacr
#define REG_CAAR   m68ki_cpu.caar
#define REG_IR   m68ki_cpu.ir
#define REG_FP   m68ki_cpu.fpr
#define REG_FPCR   m68ki_cpu.fpcr
#define REG_FPSR   m68ki_cpu.fpsr
#define REG_FPIAR   m68ki_cpu.fpiar
#define FLAG_T1   m68ki_cpu.t1_flag
#define FLAG_T0   m68ki_cpu.t0_flag
#define FLAG_S   m68ki_cpu.s_flag
#define FLAG_M   m68ki_cpu.m_flag
#define FLAG_X   m68ki_cpu.x_flag
#define FLAG_N   m68ki_cpu.n_flag
#define FLAG_Z   m68ki_cpu.not_z_flag
#define FLAG_V   m68ki_cpu.v_flag
#define FLAG_C   m68ki_cpu.c_flag
#define FLAG_INT_MASK   m68ki_cpu.int_mask
#define CPU_INT_LEVEL   m68ki_cpu.int_level /* ASG: changed from CPU_INTS_PENDING */
#define CPU_INT_CYCLES   m68ki_cpu.int_cycles /* ASG */
#define CPU_STOPPED   m68ki_cpu.stopped
#define CPU_PREF_ADDR   m68ki_cpu.pref_addr
#define CPU_PREF_DATA   m68ki_cpu.pref_data
#define CPU_ADDRESS_MASK   m68ki_cpu.address_mask
#define CPU_SR_MASK   m68ki_cpu.sr_mask
#define CPU_INSTR_MODE   m68ki_cpu.instr_mode
#define CPU_RUN_MODE   m68ki_cpu.run_mode
#define CYC_INSTRUCTION   m68ki_cpu.cyc_instruction
#define CYC_EXCEPTION   m68ki_cpu.cyc_exception
#define CYC_BCC_NOTAKE_B   m68ki_cpu.cyc_bcc_notake_b
#define CYC_BCC_NOTAKE_W   m68ki_cpu.cyc_bcc_notake_w
#define CYC_DBCC_F_NOEXP   m68ki_cpu.cyc_dbcc_f_noexp
#define CYC_DBCC_F_EXP   m68ki_cpu.cyc_dbcc_f_exp
#define CYC_SCC_R_TRUE   m68ki_cpu.cyc_scc_r_true
#define CYC_MOVEM_W   m68ki_cpu.cyc_movem_w
#define CYC_MOVEM_L   m68ki_cpu.cyc_movem_l
#define CYC_SHIFT   m68ki_cpu.cyc_shift
#define CYC_RESET   m68ki_cpu.cyc_reset
#define CALLBACK_INT_ACK   m68ki_cpu.int_ack_callback
#define CALLBACK_BKPT_ACK   m68ki_cpu.bkpt_ack_callback
#define CALLBACK_RESET_INSTR   m68ki_cpu.reset_instr_callback
#define CALLBACK_CMPILD_INSTR   m68ki_cpu.cmpild_instr_callback
#define CALLBACK_RTE_INSTR   m68ki_cpu.rte_instr_callback
#define CALLBACK_TAS_INSTR   m68ki_cpu.tas_instr_callback
#define CALLBACK_PC_CHANGED   m68ki_cpu.pc_changed_callback
#define CALLBACK_SET_FC   m68ki_cpu.set_fc_callback
#define CALLBACK_INSTR_HOOK   m68ki_cpu.instr_hook_callback
#define CPU_TYPE_IS_040_PLUS(A)   0
#define CPU_TYPE_IS_040_LESS(A)   1
#define CPU_TYPE_IS_020_PLUS(A)   0
#define CPU_TYPE_IS_020_LESS(A)   1
#define CPU_TYPE_IS_EC020_PLUS(A)   CPU_TYPE_IS_020_PLUS(A)
#define CPU_TYPE_IS_EC020_LESS(A)   CPU_TYPE_IS_020_LESS(A)
#define CPU_TYPE_IS_010(A)   0
#define CPU_TYPE_IS_010_PLUS(A)   CPU_TYPE_IS_EC020_PLUS(A)
#define CPU_TYPE_IS_010_LESS(A)   CPU_TYPE_IS_EC020_LESS(A)
#define CPU_TYPE_IS_020_VARIANT(A)   0
#define CPU_TYPE_IS_000(A)   1
#define m68k_read_immediate_16(A)   m68ki_read_program_16(A)
#define m68k_read_immediate_32(A)   m68ki_read_program_32(A)
#define m68k_read_pcrelative_8(A)   m68ki_read_program_8(A)
#define m68k_read_pcrelative_16(A)   m68ki_read_program_16(A)
#define m68k_read_pcrelative_32(A)   m68ki_read_program_32(A)
#define m68ki_int_ack(A)   CALLBACK_INT_ACK(A)
#define m68ki_bkpt_ack(A)
#define m68ki_output_reset()
#define m68ki_cmpild_callback(v, r)
#define m68ki_rte_callback()
#define m68ki_tas_callback()   0
#define m68ki_instr_hook()   CALLBACK_INSTR_HOOK()
#define m68ki_pc_changed(A)
#define m68ki_set_fc(A)   (void)(A)
#define m68ki_use_data_space()
#define m68ki_use_program_space()
#define m68ki_get_address_space()   FUNCTION_CODE_USER_DATA
#define m68ki_trace_t1()
#define m68ki_trace_t0()
#define m68ki_clear_trace()
#define m68ki_exception_if_trace()
#define m68ki_set_address_error_trap()
#define m68ki_check_address_error(ADDR, WRITE_MODE, FC)
#define m68ki_check_address_error_010_less(ADDR, WRITE_MODE, FC)
#define M68K_DO_LOG(A)
#define M68K_DO_LOG_EMU(A)
#define DX   (REG_D[(REG_IR >> 9) & 7])
#define DY   (REG_D[REG_IR & 7])
#define AX   (REG_A[(REG_IR >> 9) & 7])
#define AY   (REG_A[REG_IR & 7])
#define EA_AY_AI_8()   AY /* address register indirect */
#define EA_AY_AI_16()   EA_AY_AI_8()
#define EA_AY_AI_32()   EA_AY_AI_8()
#define EA_AY_PI_8()   (AY++) /* postincrement (size = byte) */
#define EA_AY_PI_16()   ((AY+=2)-2) /* postincrement (size = word) */
#define EA_AY_PI_32()   ((AY+=4)-4) /* postincrement (size = long) */
#define EA_AY_PD_8()   (--AY) /* predecrement (size = byte) */
#define EA_AY_PD_16()   (AY-=2) /* predecrement (size = word) */
#define EA_AY_PD_32()   (AY-=4) /* predecrement (size = long) */
#define EA_AY_DI_8()   (AY+MAKE_INT_16(m68ki_read_imm_16())) /* displacement */
#define EA_AY_DI_16()   EA_AY_DI_8()
#define EA_AY_DI_32()   EA_AY_DI_8()
#define EA_AY_IX_8()   m68ki_get_ea_ix(AY) /* indirect + index */
#define EA_AY_IX_16()   EA_AY_IX_8()
#define EA_AY_IX_32()   EA_AY_IX_8()
#define EA_AX_AI_8()   AX
#define EA_AX_AI_16()   EA_AX_AI_8()
#define EA_AX_AI_32()   EA_AX_AI_8()
#define EA_AX_PI_8()   (AX++)
#define EA_AX_PI_16()   ((AX+=2)-2)
#define EA_AX_PI_32()   ((AX+=4)-4)
#define EA_AX_PD_8()   (--AX)
#define EA_AX_PD_16()   (AX-=2)
#define EA_AX_PD_32()   (AX-=4)
#define EA_AX_DI_8()   (AX+MAKE_INT_16(m68ki_read_imm_16()))
#define EA_AX_DI_16()   EA_AX_DI_8()
#define EA_AX_DI_32()   EA_AX_DI_8()
#define EA_AX_IX_8()   m68ki_get_ea_ix(AX)
#define EA_AX_IX_16()   EA_AX_IX_8()
#define EA_AX_IX_32()   EA_AX_IX_8()
#define EA_A7_PI_8()   ((REG_A[7]+=2)-2)
#define EA_A7_PD_8()   (REG_A[7]-=2)
#define EA_AW_8()   MAKE_INT_16(m68ki_read_imm_16()) /* absolute word */
#define EA_AW_16()   EA_AW_8()
#define EA_AW_32()   EA_AW_8()
#define EA_AL_8()   m68ki_read_imm_32() /* absolute long */
#define EA_AL_16()   EA_AL_8()
#define EA_AL_32()   EA_AL_8()
#define EA_PCDI_8()   m68ki_get_ea_pcdi() /* pc indirect + displacement */
#define EA_PCDI_16()   EA_PCDI_8()
#define EA_PCDI_32()   EA_PCDI_8()
#define EA_PCIX_8()   m68ki_get_ea_pcix() /* pc indirect + index */
#define EA_PCIX_16()   EA_PCIX_8()
#define EA_PCIX_32()   EA_PCIX_8()
#define OPER_I_8()   m68ki_read_imm_8()
#define OPER_I_16()   m68ki_read_imm_16()
#define OPER_I_32()   m68ki_read_imm_32()
#define CFLAG_8(A)   (A)
#define CFLAG_16(A)   ((A)>>8)
#define CFLAG_ADD_32(S, D, R)   (((S & D) | (~R & (S | D)))>>23)
#define CFLAG_SUB_32(S, D, R)   (((S & R) | (~D & (S | R)))>>23)
#define VFLAG_ADD_8(S, D, R)   ((S^R) & (D^R))
#define VFLAG_ADD_16(S, D, R)   (((S^R) & (D^R))>>8)
#define VFLAG_ADD_32(S, D, R)   (((S^R) & (D^R))>>24)
#define VFLAG_SUB_8(S, D, R)   ((S^D) & (R^D))
#define VFLAG_SUB_16(S, D, R)   (((S^D) & (R^D))>>8)
#define VFLAG_SUB_32(S, D, R)   (((S^D) & (R^D))>>24)
#define NFLAG_8(A)   (A)
#define NFLAG_16(A)   ((A)>>8)
#define NFLAG_32(A)   ((A)>>24)
#define NFLAG_64(A)   ((A)>>56)
#define ZFLAG_8(A)   MASK_OUT_ABOVE_8(A)
#define ZFLAG_16(A)   MASK_OUT_ABOVE_16(A)
#define ZFLAG_32(A)   MASK_OUT_ABOVE_32(A)
#define NFLAG_SET   0x80
#define NFLAG_CLEAR   0
#define CFLAG_SET   0x100
#define CFLAG_CLEAR   0
#define XFLAG_SET   0x100
#define XFLAG_CLEAR   0
#define VFLAG_SET   0x80
#define VFLAG_CLEAR   0
#define ZFLAG_SET   0
#define ZFLAG_CLEAR   0xffffffff
#define SFLAG_SET   4
#define SFLAG_CLEAR   0
#define MFLAG_SET   2
#define MFLAG_CLEAR   0
#define XFLAG_AS_1()   ((FLAG_X>>8)&1)
#define NFLAG_AS_1()   ((FLAG_N>>7)&1)
#define VFLAG_AS_1()   ((FLAG_V>>7)&1)
#define ZFLAG_AS_1()   (!FLAG_Z)
#define CFLAG_AS_1()   ((FLAG_C>>8)&1)
#define COND_CS()   (FLAG_C&0x100)
#define COND_CC()   (!COND_CS())
#define COND_VS()   (FLAG_V&0x80)
#define COND_VC()   (!COND_VS())
#define COND_NE()   FLAG_Z
#define COND_EQ()   (!COND_NE())
#define COND_MI()   (FLAG_N&0x80)
#define COND_PL()   (!COND_MI())
#define COND_LT()   ((FLAG_N^FLAG_V)&0x80)
#define COND_GE()   (!COND_LT())
#define COND_HI()   (COND_CC() && COND_NE())
#define COND_LS()   (COND_CS() || COND_EQ())
#define COND_GT()   (COND_GE() && COND_NE())
#define COND_LE()   (COND_LT() || COND_EQ())
#define COND_NOT_CS()   COND_CC()
#define COND_NOT_CC()   COND_CS()
#define COND_NOT_VS()   COND_VC()
#define COND_NOT_VC()   COND_VS()
#define COND_NOT_NE()   COND_EQ()
#define COND_NOT_EQ()   COND_NE()
#define COND_NOT_MI()   COND_PL()
#define COND_NOT_PL()   COND_MI()
#define COND_NOT_LT()   COND_GE()
#define COND_NOT_GE()   COND_LT()
#define COND_NOT_HI()   COND_LS()
#define COND_NOT_LS()   COND_HI()
#define COND_NOT_GT()   COND_LE()
#define COND_NOT_LE()   COND_GT()
#define COND_XS()   (FLAG_X&0x100)
#define COND_XC()   (!COND_XS)
#define m68ki_get_ccr()
#define m68ki_get_sr()
#define ADD_CYCLES(A)   m68ki_remaining_cycles += (A)
#define USE_CYCLES(A)   m68ki_remaining_cycles -= (A)
#define SET_CYCLES(A)   m68ki_remaining_cycles = A
#define GET_CYCLES()   m68ki_remaining_cycles
#define USE_ALL_CYCLES()   m68ki_remaining_cycles = 0
#define m68ki_read_8(A)   m68ki_read_8_fc (A, FLAG_S | m68ki_get_address_space())
#define m68ki_read_16(A)   m68ki_read_16_fc(A, FLAG_S | m68ki_get_address_space())
#define m68ki_read_32(A)   m68ki_read_32_fc(A, FLAG_S | m68ki_get_address_space())
#define m68ki_write_8(A, V)   m68ki_write_8_fc (A, FLAG_S | FUNCTION_CODE_USER_DATA, V)
#define m68ki_write_16(A, V)   m68ki_write_16_fc(A, FLAG_S | FUNCTION_CODE_USER_DATA, V)
#define m68ki_write_32(A, V)   m68ki_write_32_fc(A, FLAG_S | FUNCTION_CODE_USER_DATA, V)
#define m68ki_write_32_pd(A, V)   m68ki_write_32_fc(A, FLAG_S | FUNCTION_CODE_USER_DATA, V)
#define m68ki_read_imm_8()   MASK_OUT_ABOVE_8(m68ki_read_imm_16())
#define m68ki_read_pcrel_8(A)   m68k_read_pcrelative_8(A)
#define m68ki_read_pcrel_16(A)   m68k_read_pcrelative_16(A)
#define m68ki_read_pcrel_32(A)   m68k_read_pcrelative_32(A)
#define m68ki_read_program_8(A)   m68ki_read_8_fc(A, FLAG_S | FUNCTION_CODE_USER_PROGRAM)
#define m68ki_read_program_16(A)   m68ki_read_16_fc(A, FLAG_S | FUNCTION_CODE_USER_PROGRAM)
#define m68ki_read_program_32(A)   m68ki_read_32_fc(A, FLAG_S | FUNCTION_CODE_USER_PROGRAM)
#define m68ki_read_data_8(A)   m68ki_read_8_fc(A, FLAG_S | FUNCTION_CODE_USER_DATA)
#define m68ki_read_data_16(A)   m68ki_read_16_fc(A, FLAG_S | FUNCTION_CODE_USER_DATA)
#define m68ki_read_data_32(A)   m68ki_read_32_fc(A, FLAG_S | FUNCTION_CODE_USER_DATA)
#define m68ki_read_memory_8_direct(a)
#define m68ki_read_memory_16_direct(a)
#define m68ki_read_memory_32_direct(a)
#define m68ki_write_memory_8_direct(a, v)
#define m68ki_write_memory_16_direct(a, v)
#define m68ki_write_memory_32_direct(a, v)

Typedefs

typedef int8_t sint8
typedef int16_t sint16
typedef int32_t sint32
typedef uint8_t uint8
typedef uint16_t uint16
typedef uint32_t uint32
typedef int_least32_t sint
typedef uint_least32_t uint
typedef sint32 sint64
typedef uint32 uint64

Functions

INLINE uint m68ki_read_imm_16 (void)
INLINE uint m68ki_read_imm_32 (void)
INLINE uint m68ki_read_8_fc (uint address, uint fc)
INLINE uint m68ki_read_16_fc (uint address, uint fc)
INLINE uint m68ki_read_32_fc (uint address, uint fc)
INLINE void m68ki_write_8_fc (uint address, uint fc, uint value)
INLINE void m68ki_write_16_fc (uint address, uint fc, uint value)
INLINE void m68ki_write_32_fc (uint address, uint fc, uint value)
INLINE uint m68ki_get_ea_pcdi (void)
INLINE uint m68ki_get_ea_pcix (void)
INLINE uint m68ki_get_ea_ix (uint An)
INLINE uint OPER_AY_AI_8 (void)
INLINE uint OPER_AY_AI_16 (void)
INLINE uint OPER_AY_AI_32 (void)
INLINE uint OPER_AY_PI_8 (void)
INLINE uint OPER_AY_PI_16 (void)
INLINE uint OPER_AY_PI_32 (void)
INLINE uint OPER_AY_PD_8 (void)
INLINE uint OPER_AY_PD_16 (void)
INLINE uint OPER_AY_PD_32 (void)
INLINE uint OPER_AY_DI_8 (void)
INLINE uint OPER_AY_DI_16 (void)
INLINE uint OPER_AY_DI_32 (void)
INLINE uint OPER_AY_IX_8 (void)
INLINE uint OPER_AY_IX_16 (void)
INLINE uint OPER_AY_IX_32 (void)
INLINE uint OPER_AX_AI_8 (void)
INLINE uint OPER_AX_AI_16 (void)
INLINE uint OPER_AX_AI_32 (void)
INLINE uint OPER_AX_PI_8 (void)
INLINE uint OPER_AX_PI_16 (void)
INLINE uint OPER_AX_PI_32 (void)
INLINE uint OPER_AX_PD_8 (void)
INLINE uint OPER_AX_PD_16 (void)
INLINE uint OPER_AX_PD_32 (void)
INLINE uint OPER_AX_DI_8 (void)
INLINE uint OPER_AX_DI_16 (void)
INLINE uint OPER_AX_DI_32 (void)
INLINE uint OPER_AX_IX_8 (void)
INLINE uint OPER_AX_IX_16 (void)
INLINE uint OPER_AX_IX_32 (void)
INLINE uint OPER_A7_PI_8 (void)
INLINE uint OPER_A7_PD_8 (void)
INLINE uint OPER_AW_8 (void)
INLINE uint OPER_AW_16 (void)
INLINE uint OPER_AW_32 (void)
INLINE uint OPER_AL_8 (void)
INLINE uint OPER_AL_16 (void)
INLINE uint OPER_AL_32 (void)
INLINE uint OPER_PCDI_8 (void)
INLINE uint OPER_PCDI_16 (void)
INLINE uint OPER_PCDI_32 (void)
INLINE uint OPER_PCIX_8 (void)
INLINE uint OPER_PCIX_16 (void)
INLINE uint OPER_PCIX_32 (void)
INLINE void m68ki_push_16 (uint value)
INLINE void m68ki_push_32 (uint value)
INLINE uint m68ki_pull_16 (void)
INLINE uint m68ki_pull_32 (void)
INLINE void m68ki_jump (uint new_pc)
INLINE void m68ki_jump_vector (uint vector)
INLINE void m68ki_branch_8 (uint offset)
INLINE void m68ki_branch_16 (uint offset)
INLINE void m68ki_branch_32 (uint offset)
INLINE void m68ki_set_s_flag (uint value)
INLINE void m68ki_set_sm_flag (uint value)
INLINE void m68ki_set_ccr (uint value)
INLINE void m68ki_set_sr (uint value)
INLINE void m68ki_set_sr_noint (uint value)
INLINE uint m68ki_init_exception (void)
INLINE void m68ki_stack_frame_3word (uint pc, uint sr)
INLINE void m68ki_stack_frame_buserr (uint sr)
INLINE void m68ki_stack_frame_0000 (uint pc, uint sr, uint vector)
INLINE void m68ki_stack_frame_0001 (uint pc, uint sr, uint vector)
INLINE void m68ki_stack_frame_0010 (uint sr, uint vector)
INLINE void m68ki_stack_frame_1000 (uint pc, uint sr, uint vector)
INLINE void m68ki_stack_frame_1010 (uint sr, uint vector, uint pc)
INLINE void m68ki_stack_frame_1011 (uint sr, uint vector, uint pc)
INLINE void m68ki_exception_trap (uint vector)
INLINE void m68ki_exception_trapN (uint vector)
INLINE void m68ki_exception_trace (void)
INLINE void m68ki_exception_privilege_violation (void)
INLINE void m68ki_exception_1010 (void)
INLINE void m68ki_exception_1111 (void)
INLINE void m68ki_exception_illegal (void)
INLINE void m68ki_exception_format_error (void)
INLINE void m68ki_exception_address_error (void)
INLINE void m68ki_exception_interrupt (uint int_level)
INLINE void m68ki_check_interrupts (void)
char * m68ki_disassemble_quick (unsigned int pc, unsigned int cpu_type)
INLINE m68k_mem_tm68ki_locate_memory (uint address)
INLINE void m68ki_fake_push_16 (void)
INLINE void m68ki_fake_push_32 (void)
INLINE void m68ki_fake_pull_16 (void)
INLINE void m68ki_fake_pull_32 (void)
INLINE void m68ki_set_sm_flag_nosp (uint value)
INLINE void m68ki_set_sr_noint_nosp (uint value)

Variables

m68ki_cpu_core m68ki_cpu
sint m68ki_remaining_cycles
uint m68ki_tracing
uint8 m68ki_shift_8_table []
uint16 m68ki_shift_16_table []
uint m68ki_shift_32_table []
uint8 m68ki_exception_cycle_table [][256]
uint m68ki_address_space
uint8 m68ki_ea_idx_cycle_table []
uint m68ki_aerr_address
uint m68ki_aerr_write_mode
uint m68ki_aerr_fc

Macro Definition Documentation

#define ADD_CYCLES (   A)    m68ki_remaining_cycles += (A)
#define ADDRESS_68K (   A)    ((A)&CPU_ADDRESS_MASK)
#define AX   (REG_A[(REG_IR >> 9) & 7])
#define AY   (REG_A[REG_IR & 7])
#define BIT_0 (   A)    ((A) & 0x00000001)
#define BIT_1 (   A)    ((A) & 0x00000002)
#define BIT_10 (   A)    ((A) & 0x00010000)
#define BIT_11 (   A)    ((A) & 0x00020000)
#define BIT_12 (   A)    ((A) & 0x00040000)
#define BIT_13 (   A)    ((A) & 0x00080000)
#define BIT_14 (   A)    ((A) & 0x00100000)
#define BIT_15 (   A)    ((A) & 0x00200000)
#define BIT_16 (   A)    ((A) & 0x00400000)
#define BIT_17 (   A)    ((A) & 0x00800000)
#define BIT_18 (   A)    ((A) & 0x01000000)
#define BIT_19 (   A)    ((A) & 0x02000000)
#define BIT_1A (   A)    ((A) & 0x04000000)
#define BIT_1B (   A)    ((A) & 0x08000000)
#define BIT_1C (   A)    ((A) & 0x10000000)
#define BIT_1D (   A)    ((A) & 0x20000000)
#define BIT_1E (   A)    ((A) & 0x40000000)
#define BIT_1F (   A)    ((A) & 0x80000000)
#define BIT_2 (   A)    ((A) & 0x00000004)
#define BIT_3 (   A)    ((A) & 0x00000008)
#define BIT_4 (   A)    ((A) & 0x00000010)
#define BIT_5 (   A)    ((A) & 0x00000020)
#define BIT_6 (   A)    ((A) & 0x00000040)
#define BIT_7 (   A)    ((A) & 0x00000080)
#define BIT_8 (   A)    ((A) & 0x00000100)
#define BIT_9 (   A)    ((A) & 0x00000200)
#define BIT_A (   A)    ((A) & 0x00000400)
#define BIT_B (   A)    ((A) & 0x00000800)
#define BIT_C (   A)    ((A) & 0x00001000)
#define BIT_D (   A)    ((A) & 0x00002000)
#define BIT_E (   A)    ((A) & 0x00004000)
#define BIT_F (   A)    ((A) & 0x00008000)
#define CALLBACK_BKPT_ACK   m68ki_cpu.bkpt_ack_callback
#define CALLBACK_CMPILD_INSTR   m68ki_cpu.cmpild_instr_callback
#define CALLBACK_INSTR_HOOK   m68ki_cpu.instr_hook_callback
#define CALLBACK_INT_ACK   m68ki_cpu.int_ack_callback
#define CALLBACK_PC_CHANGED   m68ki_cpu.pc_changed_callback
#define CALLBACK_RESET_INSTR   m68ki_cpu.reset_instr_callback
#define CALLBACK_RTE_INSTR   m68ki_cpu.rte_instr_callback
#define CALLBACK_SET_FC   m68ki_cpu.set_fc_callback
#define CALLBACK_TAS_INSTR   m68ki_cpu.tas_instr_callback
#define CFLAG_16 (   A)    ((A)>>8)
#define CFLAG_8 (   A)    (A)
#define CFLAG_ADD_32 (   S,
  D,
  R 
)    (((S & D) | (~R & (S | D)))>>23)
#define CFLAG_AS_1 ( )    ((FLAG_C>>8)&1)
#define CFLAG_CLEAR   0
#define CFLAG_SET   0x100
#define CFLAG_SUB_32 (   S,
  D,
  R 
)    (((S & R) | (~D & (S | R)))>>23)
#define COND_CC ( )    (!COND_CS())
#define COND_CS ( )    (FLAG_C&0x100)
#define COND_EQ ( )    (!COND_NE())
#define COND_GE ( )    (!COND_LT())
#define COND_GT ( )    (COND_GE() && COND_NE())
#define COND_HI ( )    (COND_CC() && COND_NE())
#define COND_LE ( )    (COND_LT() || COND_EQ())
#define COND_LS ( )    (COND_CS() || COND_EQ())
#define COND_LT ( )    ((FLAG_N^FLAG_V)&0x80)
#define COND_MI ( )    (FLAG_N&0x80)
#define COND_NE ( )    FLAG_Z
#define COND_NOT_CC ( )    COND_CS()
#define COND_NOT_CS ( )    COND_CC()
#define COND_NOT_EQ ( )    COND_NE()
#define COND_NOT_GE ( )    COND_LT()
#define COND_NOT_GT ( )    COND_LE()
#define COND_NOT_HI ( )    COND_LS()
#define COND_NOT_LE ( )    COND_GT()
#define COND_NOT_LS ( )    COND_HI()
#define COND_NOT_LT ( )    COND_GE()
#define COND_NOT_MI ( )    COND_PL()
#define COND_NOT_NE ( )    COND_EQ()
#define COND_NOT_PL ( )    COND_MI()
#define COND_NOT_VC ( )    COND_VS()
#define COND_NOT_VS ( )    COND_VC()
#define COND_PL ( )    (!COND_MI())
#define COND_VC ( )    (!COND_VS())
#define COND_VS ( )    (FLAG_V&0x80)
#define COND_XC ( )    (!COND_XS)
#define COND_XS ( )    (FLAG_X&0x100)
#define CPU_ADDRESS_MASK   m68ki_cpu.address_mask
#define CPU_INSTR_MODE   m68ki_cpu.instr_mode
#define CPU_INT_CYCLES   m68ki_cpu.int_cycles /* ASG */
#define CPU_INT_LEVEL   m68ki_cpu.int_level /* ASG: changed from CPU_INTS_PENDING */
#define CPU_PREF_ADDR   m68ki_cpu.pref_addr
#define CPU_PREF_DATA   m68ki_cpu.pref_data
#define CPU_RUN_MODE   m68ki_cpu.run_mode
#define CPU_SR_MASK   m68ki_cpu.sr_mask
#define CPU_STOPPED   m68ki_cpu.stopped
#define CPU_TYPE   m68ki_cpu.cpu_type
#define CPU_TYPE_000   1
#define CPU_TYPE_008   2
#define CPU_TYPE_010   4
#define CPU_TYPE_020   16
#define CPU_TYPE_040   32
#define CPU_TYPE_EC020   8
#define CPU_TYPE_IS_000 (   A)    1
#define CPU_TYPE_IS_010 (   A)    0
#define CPU_TYPE_IS_010_LESS (   A)    CPU_TYPE_IS_EC020_LESS(A)
#define CPU_TYPE_IS_010_PLUS (   A)    CPU_TYPE_IS_EC020_PLUS(A)
#define CPU_TYPE_IS_020_LESS (   A)    1
#define CPU_TYPE_IS_020_PLUS (   A)    0
#define CPU_TYPE_IS_020_VARIANT (   A)    0
#define CPU_TYPE_IS_040_LESS (   A)    1
#define CPU_TYPE_IS_040_PLUS (   A)    0
#define CPU_TYPE_IS_EC020_LESS (   A)    CPU_TYPE_IS_020_LESS(A)
#define CPU_TYPE_IS_EC020_PLUS (   A)    CPU_TYPE_IS_020_PLUS(A)
#define CYC_BCC_NOTAKE_B   m68ki_cpu.cyc_bcc_notake_b
#define CYC_BCC_NOTAKE_W   m68ki_cpu.cyc_bcc_notake_w
#define CYC_DBCC_F_EXP   m68ki_cpu.cyc_dbcc_f_exp
#define CYC_DBCC_F_NOEXP   m68ki_cpu.cyc_dbcc_f_noexp
#define CYC_EXCEPTION   m68ki_cpu.cyc_exception
#define CYC_INSTRUCTION   m68ki_cpu.cyc_instruction
#define CYC_MOVEM_L   m68ki_cpu.cyc_movem_l
#define CYC_MOVEM_W   m68ki_cpu.cyc_movem_w
#define CYC_RESET   m68ki_cpu.cyc_reset
#define CYC_SCC_R_TRUE   m68ki_cpu.cyc_scc_r_true
#define CYC_SHIFT   m68ki_cpu.cyc_shift
#define DX   (REG_D[(REG_IR >> 9) & 7])
#define DY   (REG_D[REG_IR & 7])
#define EA_A7_PD_8 ( )    (REG_A[7]-=2)
#define EA_A7_PI_8 ( )    ((REG_A[7]+=2)-2)
#define EA_AL_16 ( )    EA_AL_8()
#define EA_AL_32 ( )    EA_AL_8()
#define EA_AL_8 ( )    m68ki_read_imm_32() /* absolute long */
#define EA_AW_16 ( )    EA_AW_8()
#define EA_AW_32 ( )    EA_AW_8()
#define EA_AW_8 ( )    MAKE_INT_16(m68ki_read_imm_16()) /* absolute word */
#define EA_AX_AI_16 ( )    EA_AX_AI_8()
#define EA_AX_AI_32 ( )    EA_AX_AI_8()
#define EA_AX_AI_8 ( )    AX
#define EA_AX_DI_16 ( )    EA_AX_DI_8()
#define EA_AX_DI_32 ( )    EA_AX_DI_8()
#define EA_AX_DI_8 ( )    (AX+MAKE_INT_16(m68ki_read_imm_16()))
#define EA_AX_IX_16 ( )    EA_AX_IX_8()
#define EA_AX_IX_32 ( )    EA_AX_IX_8()
#define EA_AX_IX_8 ( )    m68ki_get_ea_ix(AX)
#define EA_AX_PD_16 ( )    (AX-=2)
#define EA_AX_PD_32 ( )    (AX-=4)
#define EA_AX_PD_8 ( )    (--AX)
#define EA_AX_PI_16 ( )    ((AX+=2)-2)
#define EA_AX_PI_32 ( )    ((AX+=4)-4)
#define EA_AX_PI_8 ( )    (AX++)
#define EA_AY_AI_16 ( )    EA_AY_AI_8()
#define EA_AY_AI_32 ( )    EA_AY_AI_8()
#define EA_AY_AI_8 ( )    AY /* address register indirect */
#define EA_AY_DI_16 ( )    EA_AY_DI_8()
#define EA_AY_DI_32 ( )    EA_AY_DI_8()
#define EA_AY_DI_8 ( )    (AY+MAKE_INT_16(m68ki_read_imm_16())) /* displacement */
#define EA_AY_IX_16 ( )    EA_AY_IX_8()
#define EA_AY_IX_32 ( )    EA_AY_IX_8()
#define EA_AY_IX_8 ( )    m68ki_get_ea_ix(AY) /* indirect + index */
#define EA_AY_PD_16 ( )    (AY-=2) /* predecrement (size = word) */
#define EA_AY_PD_32 ( )    (AY-=4) /* predecrement (size = long) */
#define EA_AY_PD_8 ( )    (--AY) /* predecrement (size = byte) */
#define EA_AY_PI_16 ( )    ((AY+=2)-2) /* postincrement (size = word) */
#define EA_AY_PI_32 ( )    ((AY+=4)-4) /* postincrement (size = long) */
#define EA_AY_PI_8 ( )    (AY++) /* postincrement (size = byte) */
#define EA_PCDI_16 ( )    EA_PCDI_8()
#define EA_PCDI_32 ( )    EA_PCDI_8()
#define EA_PCDI_8 ( )    m68ki_get_ea_pcdi() /* pc indirect + displacement */
#define EA_PCIX_16 ( )    EA_PCIX_8()
#define EA_PCIX_32 ( )    EA_PCIX_8()
#define EA_PCIX_8 ( )    m68ki_get_ea_pcix() /* pc indirect + index */
#define EXCEPTION_1010   10
#define EXCEPTION_1111   11
#define EXCEPTION_ADDRESS_ERROR   3 /* This one is partially emulated (doesn't stack a proper frame yet) */
#define EXCEPTION_BUS_ERROR   2 /* This one is not emulated! */
#define EXCEPTION_CHK   6
#define EXCEPTION_FORMAT_ERROR   14
#define EXCEPTION_ILLEGAL_INSTRUCTION   4
#define EXCEPTION_INTERRUPT_AUTOVECTOR   24
#define EXCEPTION_PRIVILEGE_VIOLATION   8
#define EXCEPTION_SPURIOUS_INTERRUPT   24
#define EXCEPTION_TRACE   9
#define EXCEPTION_TRAP_BASE   32
#define EXCEPTION_TRAPV   7
#define EXCEPTION_UNINITIALIZED_INTERRUPT   15
#define EXCEPTION_ZERO_DIVIDE   5
#define FLAG_C   m68ki_cpu.c_flag
#define FLAG_INT_MASK   m68ki_cpu.int_mask
#define FLAG_M   m68ki_cpu.m_flag
#define FLAG_N   m68ki_cpu.n_flag
#define FLAG_S   m68ki_cpu.s_flag
#define FLAG_T0   m68ki_cpu.t0_flag
#define FLAG_T1   m68ki_cpu.t1_flag
#define FLAG_V   m68ki_cpu.v_flag
#define FLAG_X   m68ki_cpu.x_flag
#define FLAG_Z   m68ki_cpu.not_z_flag
#define FUNCTION_CODE_CPU_SPACE   7
#define FUNCTION_CODE_SUPERVISOR_DATA   5
#define FUNCTION_CODE_SUPERVISOR_PROGRAM   6
#define FUNCTION_CODE_USER_DATA   1
#define FUNCTION_CODE_USER_PROGRAM   2
#define GET_CYCLES ( )    m68ki_remaining_cycles
#define GET_MSB_16 (   A)    ((A) & 0x8000)
#define GET_MSB_17 (   A)    ((A) & 0x10000)
#define GET_MSB_32 (   A)    ((A) & 0x80000000)
#define GET_MSB_8 (   A)    ((A) & 0x80)
#define GET_MSB_9 (   A)    ((A) & 0x100)
#define HIGH_NIBBLE (   A)    ((A) & 0xf0)
#define INSTRUCTION_NO   0x08
#define INSTRUCTION_YES   0
#define LOW_NIBBLE (   A)    ((A) & 0x0f)
#define LSL (   A,
 
)    ((A) << (C))
#define LSL_32 (   A,
 
)    ((C) < 32 ? (A) << (C) : 0)
#define LSR (   A,
 
)    ((A) >> (C))
#define LSR_32 (   A,
 
)    ((C) < 32 ? (A) >> (C) : 0)
#define M68K_DO_LOG (   A)
#define M68K_DO_LOG_EMU (   A)
#define M68K_INT_GT_32_BIT   0
#define m68k_read_immediate_16 (   A)    m68ki_read_program_16(A)
#define m68k_read_immediate_32 (   A)    m68ki_read_program_32(A)
#define m68k_read_pcrelative_16 (   A)    m68ki_read_program_16(A)
#define m68k_read_pcrelative_32 (   A)    m68ki_read_program_32(A)
#define m68k_read_pcrelative_8 (   A)    m68ki_read_program_8(A)
#define m68ki_bkpt_ack (   A)
#define m68ki_check_address_error (   ADDR,
  WRITE_MODE,
  FC 
)
#define m68ki_check_address_error_010_less (   ADDR,
  WRITE_MODE,
  FC 
)
#define m68ki_clear_trace ( )
#define m68ki_cmpild_callback (   v,
 
)
#define m68ki_exception_if_trace ( )
#define m68ki_get_address_space ( )    FUNCTION_CODE_USER_DATA
#define m68ki_get_ccr ( )
Value:
((COND_XS() >> 4) | \
(COND_MI() >> 4) | \
(COND_EQ() << 2) | \
(COND_VS() >> 6) | \
(COND_CS() >> 8))
#define m68ki_get_sr ( )
Value:
( FLAG_T1 | \
FLAG_T0 | \
(FLAG_S << 11) | \
(FLAG_M << 11) | \
FLAG_INT_MASK | \
m68ki_get_ccr())
#define m68ki_instr_hook ( )    CALLBACK_INSTR_HOOK()
#define m68ki_int_ack (   A)    CALLBACK_INT_ACK(A)
#define m68ki_output_reset ( )
#define m68ki_pc_changed (   A)
#define m68ki_read_16 (   A)    m68ki_read_16_fc(A, FLAG_S | m68ki_get_address_space())
#define m68ki_read_32 (   A)    m68ki_read_32_fc(A, FLAG_S | m68ki_get_address_space())
#define m68ki_read_8 (   A)    m68ki_read_8_fc (A, FLAG_S | m68ki_get_address_space())
#define m68ki_read_data_16 (   A)    m68ki_read_16_fc(A, FLAG_S | FUNCTION_CODE_USER_DATA)
#define m68ki_read_data_32 (   A)    m68ki_read_32_fc(A, FLAG_S | FUNCTION_CODE_USER_DATA)
#define m68ki_read_data_8 (   A)    m68ki_read_8_fc(A, FLAG_S | FUNCTION_CODE_USER_DATA)
#define m68ki_read_imm_8 ( )    MASK_OUT_ABOVE_8(m68ki_read_imm_16())
#define m68ki_read_memory_16_direct (   a)
Value:
do { \
if (mem != NULL) { \
uint8 *m = &((uint8 *)mem->mem) \
[(((a) - mem->addr) & mem->mask)]; \
\
return ((m[mem->swab] << 8) | \
m[(mem->swab ^ 1)]); \
} \
} \
while (0)
#define m68ki_read_memory_32_direct (   a)
Value:
do { \
if (mem != NULL) { \
uint8 *m = &((uint8 *)mem->mem) \
[(((a) - mem->addr) & mem->mask)]; \
\
return ((m[mem->swab] << 24) | \
(m[(mem->swab ^ 1)] << 16) | \
(m[(mem->swab + 2)] << 8) | \
m[((mem->swab + 2) ^ 1)]); \
} \
} \
while (0)
#define m68ki_read_memory_8_direct (   a)
Value:
do { \
if (mem != NULL) \
return ((uint8 *)mem->mem) \
[((((a) - mem->addr) ^ mem->swab) & \
mem->mask)]; \
} \
while (0)
#define m68ki_read_pcrel_16 (   A)    m68k_read_pcrelative_16(A)
#define m68ki_read_pcrel_32 (   A)    m68k_read_pcrelative_32(A)
#define m68ki_read_pcrel_8 (   A)    m68k_read_pcrelative_8(A)
#define m68ki_read_program_16 (   A)    m68ki_read_16_fc(A, FLAG_S | FUNCTION_CODE_USER_PROGRAM)
#define m68ki_read_program_32 (   A)    m68ki_read_32_fc(A, FLAG_S | FUNCTION_CODE_USER_PROGRAM)
#define m68ki_read_program_8 (   A)    m68ki_read_8_fc(A, FLAG_S | FUNCTION_CODE_USER_PROGRAM)
#define m68ki_rte_callback ( )
#define m68ki_set_address_error_trap ( )
#define m68ki_set_fc (   A)    (void)(A)
#define m68ki_tas_callback ( )    0
#define m68ki_trace_t0 ( )
#define m68ki_trace_t1 ( )
#define m68ki_use_data_space ( )
#define m68ki_use_program_space ( )
#define m68ki_write_16 (   A,
 
)    m68ki_write_16_fc(A, FLAG_S | FUNCTION_CODE_USER_DATA, V)
#define m68ki_write_32 (   A,
 
)    m68ki_write_32_fc(A, FLAG_S | FUNCTION_CODE_USER_DATA, V)
#define m68ki_write_32_pd (   A,
 
)    m68ki_write_32_fc(A, FLAG_S | FUNCTION_CODE_USER_DATA, V)
#define m68ki_write_8 (   A,
 
)    m68ki_write_8_fc (A, FLAG_S | FUNCTION_CODE_USER_DATA, V)
#define m68ki_write_memory_16_direct (   a,
 
)
Value:
do { \
if (mem != NULL) { \
uint8 *m = &((uint8 *)mem->mem) \
[(((a) - mem->addr) & mem->mask)]; \
\
m[mem->swab] = ((v) >> 8); \
m[(mem->swab ^ 1)] = (v); \
return; \
} \
} \
while (0);
#define m68ki_write_memory_32_direct (   a,
 
)
Value:
do { \
if (mem != NULL) { \
uint8 *m = &((uint8 *)mem->mem) \
[(((a) - mem->addr) & mem->mask)]; \
\
m[mem->swab] = ((v) >> 24); \
m[(mem->swab ^ 1)] = ((v) >> 16); \
m[(mem->swab + 2)] = ((v) >> 8); \
m[((mem->swab + 2) ^ 1)] = (v); \
return; \
} \
} \
while (0);
#define m68ki_write_memory_8_direct (   a,
 
)
Value:
do { \
if (mem != NULL) { \
((uint8 *)mem->mem) \
[((((a) - mem->addr) ^ mem->swab) & \
mem->mask)] = (v); \
return; \
} \
} \
while (0);
#define MAKE_INT_16 (   A)    (sint16)(A)
#define MAKE_INT_32 (   A)    (sint32)(A)
#define MAKE_INT_8 (   A)    (sint8)(A)
#define MAKE_UINT_16 (   A)    (uint16)(A)
#define MAKE_UINT_32 (   A)    (uint32)(A)
#define MAKE_UINT_8 (   A)    (uint8)(A)
#define MASK_OUT_ABOVE_16 (   A)    ((A) & 0xffff)
#define MASK_OUT_ABOVE_2 (   A)    ((A) & 3)
#define MASK_OUT_ABOVE_32 (   A)    (A)
#define MASK_OUT_ABOVE_8 (   A)    ((A) & 0xff)
#define MASK_OUT_BELOW_16 (   A)    ((A) & ~0xffff)
#define MASK_OUT_BELOW_2 (   A)    ((A) & ~3)
#define MASK_OUT_BELOW_32 (   A)    0
#define MASK_OUT_BELOW_8 (   A)    ((A) & ~0xff)
#define MFLAG_CLEAR   0
#define MFLAG_SET   2
#define MODE_READ   0x10
#define MODE_WRITE   0
#define NFLAG_16 (   A)    ((A)>>8)
#define NFLAG_32 (   A)    ((A)>>24)
#define NFLAG_64 (   A)    ((A)>>56)
#define NFLAG_8 (   A)    (A)
#define NFLAG_AS_1 ( )    ((FLAG_N>>7)&1)
#define NFLAG_CLEAR   0
#define NFLAG_SET   0x80
#define NULL   ((void*)0)
#define OPER_I_16 ( )    m68ki_read_imm_16()
#define OPER_I_32 ( )    m68ki_read_imm_32()
#define OPER_I_8 ( )    m68ki_read_imm_8()
#define REG_A   (m68ki_cpu.dar+8)
#define REG_CAAR   m68ki_cpu.caar
#define REG_CACR   m68ki_cpu.cacr
#define REG_D   m68ki_cpu.dar
#define REG_DA   m68ki_cpu.dar /* easy access to data and address regs */
#define REG_DFC   m68ki_cpu.dfc
#define REG_FP   m68ki_cpu.fpr
#define REG_FPCR   m68ki_cpu.fpcr
#define REG_FPIAR   m68ki_cpu.fpiar
#define REG_FPSR   m68ki_cpu.fpsr
#define REG_IR   m68ki_cpu.ir
#define REG_ISP   m68ki_cpu.sp[4]
#define REG_MSP   m68ki_cpu.sp[6]
#define REG_PC   m68ki_cpu.pc
#define REG_PPC   m68ki_cpu.ppc
#define REG_SFC   m68ki_cpu.sfc
#define REG_SP   m68ki_cpu.dar[15]
#define REG_SP_BASE   m68ki_cpu.sp
#define REG_USP   m68ki_cpu.sp[0]
#define REG_VBR   m68ki_cpu.vbr
#define ROL_16 (   A,
 
)    MASK_OUT_ABOVE_16(LSL(A, C) | LSR(A, 16-(C)))
#define ROL_17 (   A,
 
)    (LSL(A, C) | LSR(A, 17-(C)))
#define ROL_32 (   A,
 
)    MASK_OUT_ABOVE_32(LSL_32(A, C) | LSR_32(A, 32-(C)))
#define ROL_33 (   A,
 
)    (LSL_32(A, C) | LSR_32(A, 33-(C)))
#define ROL_8 (   A,
 
)    MASK_OUT_ABOVE_8(LSL(A, C) | LSR(A, 8-(C)))
#define ROL_9 (   A,
 
)    (LSL(A, C) | LSR(A, 9-(C)))
#define ROR_16 (   A,
 
)    MASK_OUT_ABOVE_16(LSR(A, C) | LSL(A, 16-(C)))
#define ROR_17 (   A,
 
)    (LSR(A, C) | LSL(A, 17-(C)))
#define ROR_32 (   A,
 
)    MASK_OUT_ABOVE_32(LSR_32(A, C) | LSL_32(A, 32-(C)))
#define ROR_33 (   A,
 
)    (LSR_32(A, C) | LSL_32(A, 33-(C)))
#define ROR_8 (   A,
 
)    MASK_OUT_ABOVE_8(LSR(A, C) | LSL(A, 8-(C)))
#define ROR_9 (   A,
 
)    (LSR(A, C) | LSL(A, 9-(C)))
#define RUN_MODE_BERR_AERR_RESET   1
#define RUN_MODE_NORMAL   0
#define SET_CYCLES (   A)    m68ki_remaining_cycles = A
#define SFLAG_CLEAR   0
#define SFLAG_SET   4
#define STOP_LEVEL_HALT   2
#define STOP_LEVEL_STOP   1
#define UINT16   uint16_t
#define UINT64   uint64_t
#define USE_ALL_CYCLES ( )    m68ki_remaining_cycles = 0
#define USE_CYCLES (   A)    m68ki_remaining_cycles -= (A)
#define VFLAG_ADD_16 (   S,
  D,
  R 
)    (((S^R) & (D^R))>>8)
#define VFLAG_ADD_32 (   S,
  D,
  R 
)    (((S^R) & (D^R))>>24)
#define VFLAG_ADD_8 (   S,
  D,
  R 
)    ((S^R) & (D^R))
#define VFLAG_AS_1 ( )    ((FLAG_V>>7)&1)
#define VFLAG_CLEAR   0
#define VFLAG_SET   0x80
#define VFLAG_SUB_16 (   S,
  D,
  R 
)    (((S^D) & (R^D))>>8)
#define VFLAG_SUB_32 (   S,
  D,
  R 
)    (((S^D) & (R^D))>>24)
#define VFLAG_SUB_8 (   S,
  D,
  R 
)    ((S^D) & (R^D))
#define XFLAG_AS_1 ( )    ((FLAG_X>>8)&1)
#define XFLAG_CLEAR   0
#define XFLAG_SET   0x100
#define ZFLAG_16 (   A)    MASK_OUT_ABOVE_16(A)
#define ZFLAG_32 (   A)    MASK_OUT_ABOVE_32(A)
#define ZFLAG_8 (   A)    MASK_OUT_ABOVE_8(A)
#define ZFLAG_AS_1 ( )    (!FLAG_Z)
#define ZFLAG_CLEAR   0xffffffff
#define ZFLAG_SET   0

Typedef Documentation

typedef int_least32_t sint
typedef int16_t sint16
typedef int32_t sint32
typedef sint32 sint64
typedef int8_t sint8
typedef uint_least32_t uint
typedef uint16_t uint16
typedef uint32_t uint32
typedef uint32 uint64
typedef uint8_t uint8

Function Documentation

INLINE void m68ki_branch_16 ( uint  offset)
INLINE void m68ki_branch_32 ( uint  offset)
INLINE void m68ki_branch_8 ( uint  offset)
INLINE void m68ki_check_interrupts ( void  )
char* m68ki_disassemble_quick ( unsigned int  pc,
unsigned int  cpu_type 
)
INLINE void m68ki_exception_1010 ( void  )
INLINE void m68ki_exception_1111 ( void  )
INLINE void m68ki_exception_address_error ( void  )
INLINE void m68ki_exception_format_error ( void  )
INLINE void m68ki_exception_illegal ( void  )
void m68ki_exception_interrupt ( uint  int_level)
INLINE void m68ki_exception_privilege_violation ( void  )
INLINE void m68ki_exception_trace ( void  )
INLINE void m68ki_exception_trap ( uint  vector)
INLINE void m68ki_exception_trapN ( uint  vector)
INLINE void m68ki_fake_pull_16 ( void  )
INLINE void m68ki_fake_pull_32 ( void  )
INLINE void m68ki_fake_push_16 ( void  )
INLINE void m68ki_fake_push_32 ( void  )
INLINE uint m68ki_get_ea_ix ( uint  An)
INLINE uint m68ki_get_ea_pcdi ( void  )
INLINE uint m68ki_get_ea_pcix ( void  )
INLINE uint m68ki_init_exception ( void  )
INLINE void m68ki_jump ( uint  new_pc)
INLINE void m68ki_jump_vector ( uint  vector)
INLINE m68k_mem_t* m68ki_locate_memory ( uint  address)
INLINE uint m68ki_pull_16 ( void  )
INLINE uint m68ki_pull_32 ( void  )
INLINE void m68ki_push_16 ( uint  value)
INLINE void m68ki_push_32 ( uint  value)
INLINE uint m68ki_read_16_fc ( uint  address,
uint  fc 
)
INLINE uint m68ki_read_32_fc ( uint  address,
uint  fc 
)
INLINE uint m68ki_read_8_fc ( uint  address,
uint  fc 
)
INLINE uint m68ki_read_imm_16 ( void  )
INLINE uint m68ki_read_imm_32 ( void  )
INLINE void m68ki_set_ccr ( uint  value)
INLINE void m68ki_set_s_flag ( uint  value)
INLINE void m68ki_set_sm_flag ( uint  value)
INLINE void m68ki_set_sm_flag_nosp ( uint  value)
INLINE void m68ki_set_sr ( uint  value)
INLINE void m68ki_set_sr_noint ( uint  value)
INLINE void m68ki_set_sr_noint_nosp ( uint  value)
INLINE void m68ki_stack_frame_0000 ( uint  pc,
uint  sr,
uint  vector 
)
INLINE void m68ki_stack_frame_0001 ( uint  pc,
uint  sr,
uint  vector 
)
INLINE void m68ki_stack_frame_0010 ( uint  sr,
uint  vector 
)
void m68ki_stack_frame_1000 ( uint  pc,
uint  sr,
uint  vector 
)
void m68ki_stack_frame_1010 ( uint  sr,
uint  vector,
uint  pc 
)
void m68ki_stack_frame_1011 ( uint  sr,
uint  vector,
uint  pc 
)
INLINE void m68ki_stack_frame_3word ( uint  pc,
uint  sr 
)
INLINE void m68ki_stack_frame_buserr ( uint  sr)
INLINE void m68ki_write_16_fc ( uint  address,
uint  fc,
uint  value 
)
INLINE void m68ki_write_32_fc ( uint  address,
uint  fc,
uint  value 
)
INLINE void m68ki_write_8_fc ( uint  address,
uint  fc,
uint  value 
)
INLINE uint OPER_A7_PD_8 ( void  )
INLINE uint OPER_A7_PI_8 ( void  )
INLINE uint OPER_AL_16 ( void  )
INLINE uint OPER_AL_32 ( void  )
INLINE uint OPER_AL_8 ( void  )
INLINE uint OPER_AW_16 ( void  )
INLINE uint OPER_AW_32 ( void  )
INLINE uint OPER_AW_8 ( void  )
INLINE uint OPER_AX_AI_16 ( void  )
INLINE uint OPER_AX_AI_32 ( void  )
INLINE uint OPER_AX_AI_8 ( void  )
INLINE uint OPER_AX_DI_16 ( void  )
INLINE uint OPER_AX_DI_32 ( void  )
INLINE uint OPER_AX_DI_8 ( void  )
INLINE uint OPER_AX_IX_16 ( void  )
INLINE uint OPER_AX_IX_32 ( void  )
INLINE uint OPER_AX_IX_8 ( void  )
INLINE uint OPER_AX_PD_16 ( void  )
INLINE uint OPER_AX_PD_32 ( void  )
INLINE uint OPER_AX_PD_8 ( void  )
INLINE uint OPER_AX_PI_16 ( void  )
INLINE uint OPER_AX_PI_32 ( void  )
INLINE uint OPER_AX_PI_8 ( void  )
INLINE uint OPER_AY_AI_16 ( void  )
INLINE uint OPER_AY_AI_32 ( void  )
INLINE uint OPER_AY_AI_8 ( void  )
INLINE uint OPER_AY_DI_16 ( void  )
INLINE uint OPER_AY_DI_32 ( void  )
INLINE uint OPER_AY_DI_8 ( void  )
INLINE uint OPER_AY_IX_16 ( void  )
INLINE uint OPER_AY_IX_32 ( void  )
INLINE uint OPER_AY_IX_8 ( void  )
INLINE uint OPER_AY_PD_16 ( void  )
INLINE uint OPER_AY_PD_32 ( void  )
INLINE uint OPER_AY_PD_8 ( void  )
INLINE uint OPER_AY_PI_16 ( void  )
INLINE uint OPER_AY_PI_32 ( void  )
INLINE uint OPER_AY_PI_8 ( void  )
INLINE uint OPER_PCDI_16 ( void  )
INLINE uint OPER_PCDI_32 ( void  )
INLINE uint OPER_PCDI_8 ( void  )
INLINE uint OPER_PCIX_16 ( void  )
INLINE uint OPER_PCIX_32 ( void  )
INLINE uint OPER_PCIX_8 ( void  )

Variable Documentation

uint m68ki_address_space
uint m68ki_aerr_address
uint m68ki_aerr_fc
uint m68ki_aerr_write_mode
m68ki_cpu_core m68ki_cpu
uint8 m68ki_ea_idx_cycle_table[]
uint8 m68ki_exception_cycle_table[][256]
sint m68ki_remaining_cycles
uint16 m68ki_shift_16_table[]
uint m68ki_shift_32_table[]
uint8 m68ki_shift_8_table[]
uint m68ki_tracing