int HUC6280::run(int clock)
{
	h6280_Regs *cpustate = (h6280_Regs *)opaque;
	
	if(clock == -1) {
		if(busreq) {
			// don't run cpu!
			return 1;
		} else {
			// run only one opcode
			return CPU_EXECUTE_CALL(h6280);
		}
	} else {
		icount += clock;
		int first_icount = icount;
		
		// run cpu while given clocks
		while(icount > 0 && !busreq) {
			icount -= CPU_EXECUTE_CALL(h6280);
		}
		// if busreq is raised, spin cpu while remained clock
		if(icount > 0 && busreq) {
			icount = 0;
		}
		return first_icount - icount;
	}
}
示例#2
0
int HUC6280::run(int icount)
{
	h6280_Regs *cpustate = (h6280_Regs *)opaque;
	return CPU_EXECUTE_CALL(h6280);
}
示例#3
0
int I386::run(int cycles)
{
	i386_state *cpustate = (i386_state *)opaque;
	return CPU_EXECUTE_CALL(i386);
}