⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tms9900c.h

📁 这个是延伸mame的在wince平台下的游戏模拟器的代码
💻 H
字号:
#define R0  I.WP
#define R1  I.WP+2
#define R2  I.WP+4
#define R3  I.WP+6
#define R4  I.WP+8
#define R5  I.WP+10
#define R6  I.WP+12
#define R7  I.WP+14
#define R8  I.WP+16
#define R9  I.WP+18
#define R10 I.WP+20
#define R11 I.WP+22
#define R12 I.WP+24
#define R13 I.WP+26
#define R14 I.WP+28
#define R15 I.WP+30

#define PARCHECK	0x6996
#define BYTE_OPERATION	I.IR&0x1000
#define SIGN		0x8000

/* Instruction format 1 */

#define TMS9900_CYCLES_SZC	14;
#define TMS9900_CYCLES_SZCB	14;
#define TMS9900_CYCLES_S	14;
#define TMS9900_CYCLES_SB	14;
#define TMS9900_CYCLES_C	14;
#define TMS9900_CYCLES_CB	14;
#define TMS9900_CYCLES_A	14;
#define TMS9900_CYCLES_AB	14;
#define TMS9900_CYCLES_MOV	14;
#define TMS9900_CYCLES_MOVB	14;
#define TMS9900_CYCLES_SOC	14;
#define TMS9900_CYCLES_SOCB	14;

/* Instruction format 2 */

#define TMS9900_CYCLES_JMP	10;
#define TMS9900_CYCLES_JLT	10;
#define TMS9900_CYCLES_JLE	10;
#define TMS9900_CYCLES_JEQ	10;
#define TMS9900_CYCLES_JHE	10;
#define TMS9900_CYCLES_JGT	10;
#define TMS9900_CYCLES_JNE	10;
#define TMS9900_CYCLES_JNC	10;
#define TMS9900_CYCLES_JOC	10;
#define TMS9900_CYCLES_JNO	10;
#define TMS9900_CYCLES_JL	10;
#define TMS9900_CYCLES_JH	10;
#define TMS9900_CYCLES_JOP	10;
#define TMS9900_CYCLES_SBO	12;
#define TMS9900_CYCLES_SBZ	12;
#define TMS9900_CYCLES_TB	12;

/* Instruction format 3 */

#define TMS9900_CYCLES_COC	14;
#define TMS9900_CYCLES_CZC	14;
#define TMS9900_CYCLES_XOR	14;

/* Instruction format 4 */

#define TMS9900_CYCLES_LDCR	52;
#define TMS9900_CYCLES_STCR	60;

/* Instruction format 5 */

#define TMS9900_CYCLES_SRA	52;
#define TMS9900_CYCLES_SRC	52;
#define TMS9900_CYCLES_SRL	52;
#define TMS9900_CYCLES_SLA	52;

/* Instruction format 6 */

#define TMS9900_CYCLES_BLWP	26;
#define TMS9900_CYCLES_B	 8;
#define TMS9900_CYCLES_eX	 8;
#define TMS9900_CYCLES_CLR	10;
#define TMS9900_CYCLES_NEG	12;
#define TMS9900_CYCLES_INV	10;
#define TMS9900_CYCLES_INC	10;
#define TMS9900_CYCLES_INCT	10;
#define TMS9900_CYCLES_DEC	10;
#define TMS9900_CYCLES_DECT	10;
#define TMS9900_CYCLES_BL	12;
#define TMS9900_CYCLES_SWPB	10;
#define TMS9900_CYCLES_SETO	10;
#define TMS9900_CYCLES_ABSv	14;

/* Instruction format 7 */

#define TMS9900_CYCLES_IDLE	12;
#define TMS9900_CYCLES_RSET	12;
#define TMS9900_CYCLES_RTWP	14;
#define TMS9900_CYCLES_CKON	12;
#define TMS9900_CYCLES_CKOF	12;
#define TMS9900_CYCLES_LREX	12;

/* Instruction format 8 */

#define TMS9900_CYCLES_LI	12;
#define TMS9900_CYCLES_AI	14;
#define TMS9900_CYCLES_ANDI	14;
#define TMS9900_CYCLES_ORI	14;
#define TMS9900_CYCLES_CI	14;
#define TMS9900_CYCLES_STWP	 8;
#define TMS9900_CYCLES_STST	 8;
#define TMS9900_CYCLES_LWPI	10;
#define TMS9900_CYCLES_LIMI	16;

/* Instruction format 9 */

#define TMS9900_CYCLES_XOP	36;
#define TMS9900_CYCLES_MPY	52;
#define TMS9900_CYCLES_DIV	16;

word	LGT,AGT,EQ,CY,OV,OP,X,IMASK;	/* Individual bits in the status reg. */

word	SourceOpAdr,	/* address in memory of source operand */
	SourceVal,	/* contents of source operand */
	DestOpAdr,	/* address in memory of destination operand */
	DestVal,	/* value of destination operand */
	CRUBaseAdr;	/* value of CRU base address (R12&1FFE)>>1 */

void	typeIoperands(void);
void	typeIIIoperands(void);
void	typeIVoperands(void);
void	typeVoperands(void);
void	typeVIoperands(void);
void	typeVIIoperands(void);
void	typeVIIIoperands(void);
void	typeIXoperands(void);
void	typeXoperands(void);

void	get_source_operand(void);
void	get_dest_operand(void);

void	do_jmp(void);

void	set_status(word);
word	get_status(void);
void	set_parity(word);
void	set_mask(word);
word	add(word,word);
void	compare(word,word);

void	TAB2(void);

void	SRA(void);
void	SRL(void);
void	SLA(void);
void	SRC(void);
void	SZC(void);
void	SZCB(void);
void	S(void);
void	SB(void);
void	C(void);
void	CB(void);
void	A(void);
void	AB(void);
void	MOV(void);
void	MOVB(void);
void	SOC(void);
void	SOCB(void);
void	JMP(void);
void	JLT(void);
void	JLE(void);
void	JEQ(void);
void	JHE(void);
void	JGT(void);
void	JNE(void);
void	JNC(void);
void	JOC(void);
void	JNO(void);
void	JL(void);
void	JH(void);
void	JOP(void);
void	SBO(void);
void	SBZ(void);
void	TB(void);
void	COC(void);
void	CZC(void);
void	XOR(void);
void	XOP(void);
void	LDCR(void);
void	STCR(void);
void	MPY(void);
void	DIV(void);
void	LI(void);
void	AI(void);
void	ANDI(void);
void	ORI(void);
void	CI(void);
void	STWP(void);
void	STST(void);
void	LWPI(void);
void	LIMI(void);
void	RTWP(void);
void	BLWP(void);
void	B(void);
void	eX(void);
void	CLR(void);
void	NEG(void);
void	INV(void);
void	INC(void);
void	INCT(void);
void	DEC(void);
void	DECT(void);
void	BL(void);
void	SWPB(void);
void	SETO(void);
void	ABSv(void);
void	IDLE(void);
void	RSET(void);
void	CKON(void);
void	CKOF(void);
void	LREX(void);
void	ILL(void);

void (*opcode_table[]) (void) =
{
	TAB2,TAB2,TAB2,TAB2,TAB2,TAB2,TAB2,TAB2, 	/* 00-0F */
	SRA ,SRL ,SLA ,SRC ,ILL ,ILL ,ILL ,ILL ,
	JMP ,JLT ,JLE ,JEQ ,JHE ,JGT ,JNE ,JNC ,        /* 10-1F */
	JOC ,JNO ,JL  ,JH  ,JOP ,SBO ,SBZ ,TB  ,
	COC ,COC ,COC ,COC ,CZC ,CZC ,CZC ,CZC ,	/* 20-2F */
	XOR ,XOR ,XOR ,XOR ,XOP ,XOP ,XOP ,XOP ,
	LDCR,LDCR,LDCR,LDCR,STCR,STCR,STCR,STCR,	/* 30-3F */
	MPY ,MPY ,MPY ,MPY ,DIV ,DIV ,DIV ,DIV ,
	SZC ,SZC ,SZC ,SZC ,SZC ,SZC ,SZC ,SZC ,	/* 40-4F */
	SZC ,SZC ,SZC ,SZC ,SZC ,SZC ,SZC ,SZC ,
	SZCB,SZCB,SZCB,SZCB,SZCB,SZCB,SZCB,SZCB,	/* 50-5F */
	SZCB,SZCB,SZCB,SZCB,SZCB,SZCB,SZCB,SZCB,
	S   ,S   ,S   ,S   ,S   ,S   ,S   ,S   ,	/* 60-6F */
	S   ,S   ,S   ,S   ,S   ,S   ,S   ,S   ,
	SB  ,SB  ,SB  ,SB  ,SB  ,SB  ,SB  ,SB  ,	/* 70-7F */
	SB  ,SB  ,SB  ,SB  ,SB  ,SB  ,SB  ,SB  ,
	C   ,C   ,C   ,C   ,C   ,C   ,C   ,C   ,	/* 80-7F */
	C   ,C   ,C   ,C   ,C   ,C   ,C   ,C   ,
	CB  ,CB  ,CB  ,CB  ,CB  ,CB  ,CB  ,CB  ,	/* 90-7F */
	CB  ,CB  ,CB  ,CB  ,CB  ,CB  ,CB  ,CB  ,
	A   ,A   ,A   ,A   ,A   ,A   ,A   ,A   ,	/* A0-AF */
	A   ,A   ,A   ,A   ,A   ,A   ,A   ,A   ,
	AB  ,AB  ,AB  ,AB  ,AB  ,AB  ,AB  ,AB  ,	/* B0-BF */
	AB  ,AB  ,AB  ,AB  ,AB  ,AB  ,AB  ,AB  ,
	MOV ,MOV ,MOV ,MOV ,MOV ,MOV ,MOV ,MOV ,	/* C0-CF */
	MOV ,MOV ,MOV ,MOV ,MOV ,MOV ,MOV ,MOV ,
	MOVB,MOVB,MOVB,MOVB,MOVB,MOVB,MOVB,MOVB,	/* D0-DF */
	MOVB,MOVB,MOVB,MOVB,MOVB,MOVB,MOVB,MOVB,
	SOC ,SOC ,SOC ,SOC ,SOC ,SOC ,SOC ,SOC ,	/* E0-EF */
	SOC ,SOC ,SOC ,SOC ,SOC ,SOC ,SOC ,SOC ,
	SOCB,SOCB,SOCB,SOCB,SOCB,SOCB,SOCB,SOCB,	/* F0-FF */
	SOCB,SOCB,SOCB,SOCB,SOCB,SOCB,SOCB,SOCB
} ;

void (*low_opcode_table[]) (void) =
{
	ILL ,ILL ,ILL ,ILL ,ILL ,ILL ,ILL ,ILL ,	/* 0000-00FF */
	ILL ,ILL ,ILL ,ILL ,ILL ,ILL ,ILL ,ILL ,	/* 0100-01FF */
	LI  ,AI  ,ANDI,ORI ,CI  ,STWP,STST,LWPI,        /* 0200-02FF */
	LIMI,ILL ,IDLE,RSET,RTWP,CKON,CKOF,LREX,	/* 0300-03FF */
	BLWP,BLWP,B   ,B   ,eX  ,eX  ,CLR ,CLR ,	/* 0400-04FF */
	NEG ,NEG ,INV ,INV ,INC ,INC ,INCT,INCT,	/* 0500-05FF */
	DEC ,DEC ,DECT,DECT,BL  ,BL  ,SWPB,SWPB,	/* 0600-06FF */
	SETO,SETO,ABSv,ABSv,ILL ,ILL ,ILL ,ILL 		/* 0700-07FF */
} ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -