亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gamectrl.c

?? 一個(gè)兩碟控制的VCD的代碼,兩碟之間的轉(zhuǎn)動(dòng)及連續(xù)播放,已大量生產(chǎn)的CODE.
?? C
?? 第 1 頁 / 共 4 頁
字號(hào):
    /* I shift data bit coming from IR from LSB to the left.	*/
    int falling_edge = 0, tmp;
    unsigned int currIRtime, tmp1;
    currIRtime = ((unsigned int) mvd[riface_timer2]);
    tmp1 = currIRtime - prevIRtime;
    if (currIRtime < prevIRtime) {/* Wrap around case */
	tmp1 += -timer2_period;
    }
    diffIR[cntIRchg++] = tmp1;
    prevIRtime = currIRtime;

#ifdef IRQSHARE
    if (xor1value) {
	falling_edge = 1;
	CLEAR_XOR1;
	xor1value = 0;
	tmp = killIR? 1: 0;
	}
    else {
	falling_edge = 0;
	SET_XOR1;
	xor1value = 1;
	tmp = killIR? 0: 1;
	}
#else

    /* Toggle XOR to get next interupt */
#ifdef FLIP_IR
    /*
     * If the polarity of the incoming IR is flipped (e.g. on the Internet
     * board), then if the internal XOR input is 1, we received a falling
     * edge from the remote sensor, and we want to send out a rising edge.
     * Vice versa.
     *
     * To make minimum change to the remaining code, when we recive a 
     * falling edge, we'll tell the internal code that we have received
     * a rising edge. Vice versa.
     */
    if (IS_IRXOR_HIGH) {
	CLEAR_IRXOR;		/* set to low */
	/* If we want to kill IR, then send 0; else send 1 */
	tmp = killIR ? 0 : 1;
    } else {
	SET_IRXOR;
	falling_edge = 1; 	/* Interupt caused by IR falling edge */
	/* If we want to kill IR, then send 1; else send 0 */
	tmp = killIR ? 1 : 0;
    }
#else
    if (IS_IRXOR_HIGH) {
	CLEAR_IRXOR;		/* set to low */
	falling_edge = 1; 	/* Interupt caused by IR falling edge */
	/* If we want to kill IR, then send 1; else send 0 */
	tmp = killIR ? 1 : 0;
    } else {
	SET_IRXOR;
	/* If we want to kill IR, then send 0; else send 1 */
	tmp = killIR ? 0 : 1;
    }
#endif

#endif IRQSHARE

    mvd[riface_clear_dbgirq] = 0;	/* Clear debug_irq	*/

#ifdef IRXMT
    if (!connect_inout) {
	/* IR comes from us, so we'll send it now */
	if (tmp) {OUTIR_HIGH;}
	else     {OUTIR_LOW;}
    }

    /* 
     * If we meant to kill IR, then IR is effectly killed now
     * i.e. CD won't get the correct key bar.
     */
    killIR = 0;	
#endif

#if (IR_NEC || IR_SANYO)
    IR_core_NEC(falling_edge);
#endif /* IR_NEC || IR_SAYNO */

#ifdef IR_PHILIPS
    IR_core_Philips(falling_edge);
#endif /* IR_PHILIPS */

#if defined(WEBDVD) && defined(SLAVE)
    CLEAR_AUX0;
    _8259_EOI();
    SET_AUX0;
#endif

}


#ifdef IRXMT
/*
 * Main routine to start tranmission of IR signal. IR transmission is
 * interrupt driven (by timer1). Therefore, this routine will enable
 * the timer1 interrupt.
 *
 * Inputs;
 *	code:		user code to be transmitted
 *	repeate:	1 transmit repeat
 *			0 transmit code
 */
void IR_send_data(unsigned char code, int repeat)
{
    register int psw;
    unsigned char code_bar;
    unsigned int begTimer = glbTimer;
    unsigned int period;

    /* 
     * We'll do detailed checking only if interrupt is enabled. 
     * If this routine is called inside the interrupt service routine,
     * then interrupt can't come in (i.e. glbTimer won't change).
     * In which case, just send the code (at worst, we'll loss the code,
     * but the machine won't hang)
     */
    asm volatile("movfrs psw,%0":  "=r" (psw) ); 

    if (!(psw & 0x10)) {
	/*
	 * If we are in the middle of receiving, then wait up to 1/8 of 
	 * a second to finish reciving. Otherwise, if we are in the middle
	 * of FF/FB/SLOW, IR misses at high frequency.
	 */
	do {
	    if (stateIR == IR_IDLE) break;
	} while ((glbTimer - begTimer) < EIGHTH_SECOND);
	
	/*
	 * If we are in the middle of transmitting an IR, then wait it to
	 * finish
	 */
	begTimer = glbTimer;
	do {
	    if (IR_xmit_state == IR_XMIT_IDLE) break;
	} while ((glbTimer - begTimer) < EIGHTH_SECOND);
    }

    /* reverse data to meet NEC remote control standard	*/
    mvd[riface_reflect] = code;
    code = mvd[riface_reflect];

    code_bar = ~code;
    IR_xmit_code = (((unsigned int) sysIRcode) << 16) | (code << 8) | code_bar;

    origConnectInOut = connect_inout;

    connect_inout = 1; /* While transmitting IR, don't relay any IR input */
    if (repeat) {
	IR_xmit_state = IR_XMIT_REP_LOW1;
	period = IRW_REP_LOW1;
    } else {
	/* Leader low is 9ms wide */
	IR_xmit_bitcount = 32;
	IR_xmit_state = IR_XMIT_LEADER_LOW;
	period = IRW_LEADER_LOW;
    }
    OUTIR_LOW;
    RISC_start_timer1(period);
    enable_int(tim1);
}


/*
 * Timer 1 interrupt service routine. This service routine goes through
 * a state machine to transmit IR.
 */
void IR_xmit_interrupt_service(void)
{
    IR_XMIT_INFO *ptrXmit = &IR_xmit_array[IR_xmit_state];

    if (IR_xmit_state == IR_XMIT_REP_LOW2) {
	OUTIR_HIGH;
	IR_xmit_state = IR_XMIT_IDLE;
	disable_int(tim1);
	connect_inout = origConnectInOut;
    } else if (IR_xmit_state == IR_XMIT_GAP) {
	/* We have to make some decision here */
	OUTIR_HIGH;
	if (IR_xmit_bitcount != 0) {
	    /* More bits to transmit */
	    IR_xmit_state = IR_XMIT_DATA;
	    RISC_start_timer1((IR_xmit_code & x80000000) ? IRW_DATA_ONE
			      				 : IRW_DATA_ZERO);
	    IR_xmit_code <<= 1;
	    IR_xmit_bitcount--;
	} else {
#ifdef JIANGHAI
	    IR_xmit_state = IR_XMIT_REP_HIGH1;
	    RISC_start_timer1(IRW_REP_HIGH1);
#else
	    IR_xmit_state = IR_XMIT_IDLE;
	    disable_int(tim1);
	    connect_inout = origConnectInOut;
#endif
	}
    } else {
	/* Do a table lookup */
	IR_xmit_state = ptrXmit->next;
	if (ptrXmit->level) {OUTIR_HIGH;}
	else {OUTIR_LOW;}
	RISC_start_timer1((unsigned int) ptrXmit->timer);
    }
}

#endif /* IRXMT */
#endif /* else of DSC_IRQ */


/**************************************************************************/
/**************** This part is from version 1.19 of int.c ******************/
/**************************************************************************/

int pcring;
PRIVATE int	regtable[32];

int n_int = 0;
/******************************************************************************
 Interrupt service routine when ucos is not used.
 ******************************************************************************/
__Interrupt()
{
    /*
     * The current compiler always saves r16 to r21 at a procedure
     * boundary if it want to use any of these register. Therefore,
     * it is safe to put pc0, pc1, pc2 in r19, r20 and r21 respectively.
     *
     * But these assignments are strongly compiler dependent.
     */
    register unsigned pc0 asm("r19"), pc1 asm("r20"), pc2 asm("r21");
    unsigned utemp;

    asm(".globl _Interrupt");
    asm("\n_Interrupt:");

    /* First save registers */
    asm("st    _regtable+1*4[r0],r1");
    asm("st    _regtable+2*4[r0],r2");
    asm("st    _regtable+3*4[r0],r3");
    asm("st    _regtable+4*4[r0],r4");
    asm("st    _regtable+5*4[r0],r5");
    asm("st    _regtable+6*4[r0],r6");
    asm("st    _regtable+7*4[r0],r7");
    asm("st    _regtable+8*4[r0],r8");
    asm("st    _regtable+9*4[r0],r9");
    asm("st    _regtable+10*4[r0],r10");
    asm("st    _regtable+11*4[r0],r11");
    asm("st    _regtable+12*4[r0],r12");
    asm("st    _regtable+13*4[r0],r13");
    asm("st    _regtable+14*4[r0],r14");
    asm("st    _regtable+15*4[r0],r15");
    asm("st    _regtable+16*4[r0],r16");
    asm("st    _regtable+17*4[r0],r17");
    asm("st    _regtable+18*4[r0],r18");
    asm("st    _regtable+19*4[r0],r19");
    asm("st    _regtable+20*4[r0],r20");
    asm("st    _regtable+21*4[r0],r21");
    asm("st    _regtable+22*4[r0],r22");
    asm("st    _regtable+23*4[r0],r23");
    asm("st    _regtable+24*4[r0],r24");
    asm("st    _regtable+25*4[r0],r25");
    asm("st    _regtable+26*4[r0],r26");
    asm("st    _regtable+27*4[r0],r27");
    asm("st    _regtable+28*4[r0],r28");
    asm("st    _regtable+29*4[r0],r29");
    asm("st    _regtable+30*4[r0],r30");
    asm("st    _regtable+31*4[r0],r31");

    /* Save the PC chain */
    asm volatile("movfrs pcm4,%0" :  "=r" (pc0));
    asm volatile("movfrs pcm4,%0" :  "=r" (pc1));
    asm volatile("movfrs pcm4,%0" :  "=r" (pc2));

    n_int++;

    /* For debugging only */
    asm volatile("movfrs psw,%0" :  "=r" (utemp));
#ifdef DSC
    /* The S bit (PC chain shifting enable) must be 0. */
    if (utemp & 1) DSC_dead(0xbad1);
    /* Alignment error. */
    if (utemp & 0x8000000) DSC_dead(0xbad2);
#endif	/* DSC */
	
    if (mvd[riface_irqstatus] & tim2_irq) {
	RISC_timer2_interrupt_service();
    }

#ifdef IR
#ifdef IRXMT
    if (mvd[riface_irqstatus] & tim1_irq) {	/* IR transmitting	*/
	IR_xmit_interrupt_service();
    }
#endif /* IRXMT */

    if (mvd[riface_irqstatus] & debug_irq) {	/* IR receiving		*/
#ifndef DSC_IRQ
	IR_recv_interrupt_service();
#else
    /* New style: interrupts are connected to 3881 */
    utemp = DSC_cmd(dsc_sys_statusm, 0); 
    if (utemp & 0x04) 
	IR_recv_interrupt_service(utemp);
#endif
    }
#endif /* IR */

#ifdef SERVO
    if (mvd[riface_irqstatus] & debug_irq) {	/* IR receiving		*/
	SERVO_interrupt_service();
    }
#endif /* SERVO */


    pcring = pc0 << 2;
    utemp = *((unsigned *)pcring);
    if ((utemp>>28)==9) pc0 = 0;	/* Store */

    if (!pc0 && !pc1) {                 /* Squashed branch */
	utemp = *((int *)((pc2-2)<<2));
	if (!(utemp & 0xc0000000)) pc2++;
    }

#ifdef DSC
    /* We are stucked! (PC chain has the same value) */
    if (pc0 == pc2) DSC_dead(0xbad3);
#endif	/* DSC */

    /* restore PC chain */
    asm volatile("movtos %0,pcm1" :  : "r" (pc0));
    asm volatile("movtos %0,pcm1" :  : "r" (pc1));
    asm volatile("movtos %0,pcm1" :  : "r" (pc2));

    /* restore registers */
    asm("ld    _regtable+1*4[r0],r1");
    asm("ld    _regtable+2*4[r0],r2");
    asm("ld    _regtable+3*4[r0],r3");
    asm("ld    _regtable+4*4[r0],r4");
    asm("ld    _regtable+5*4[r0],r5");
    asm("ld    _regtable+6*4[r0],r6");
    asm("ld    _regtable+7*4[r0],r7");
    asm("ld    _regtable+8*4[r0],r8");
    asm("ld    _regtable+9*4[r0],r9");
    asm("ld    _regtable+10*4[r0],r10");
    asm("ld    _regtable+11*4[r0],r11");
    asm("ld    _regtable+12*4[r0],r12");
    asm("ld    _regtable+13*4[r0],r13");
    asm("ld    _regtable+14*4[r0],r14");
    asm("ld    _regtable+15*4[r0],r15");
    asm("ld    _regtable+16*4[r0],r16");
    asm("ld    _regtable+17*4[r0],r17");
    asm("ld    _regtable+18*4[r0],r18");
    asm("ld    _regtable+19*4[r0],r19");
    asm("ld    _regtable+20*4[r0],r20");
    asm("ld    _regtable+21*4[r0],r21");
    asm("ld    _regtable+22*4[r0],r22");
    asm("ld    _regtable+23*4[r0],r23");
    asm("ld    _regtable+24*4[r0],r24");
    asm("ld    _regtable+25*4[r0],r25");
    asm("ld    _regtable+26*4[r0],r26");
    asm("ld    _regtable+27*4[r0],r27");
    asm("ld    _regtable+28*4[r0],r28");
    asm("st    0x4028[r27],r0");	/* irqsupress */
    asm("ld    _regtable+29*4[r0],r29");
    asm("ld    _regtable+30*4[r0],r30");
    asm("ld    _regtable+31*4[r0],r31");

    /* return from interrupt */
    asm("\n.noreorg");
    asm("jpcrs");
    asm("jpc");
    asm("jpc");
    asm(".reorgon");
}

/*
 * Get even/odd byte of each dword from source data
 * Input:
 *	- src 	: raw data start address
 *	- dest	: destination
 *	- size	: dword size of data to process
 *	- direction : data process sequence
 *	- even	: get even or odd byte
 */
int *mem_shrink(int *src, int *dest, int size, int direction, int even)
{
    unsigned int i, data, data1 = 0, data2 = 0;

    for (i = 0; i < size / 2; i++) {
	if (direction) {
	    data1 = (*src) << (even? 0 : 8);
	    src ++;
	} else {
	    data2 = (*src) >> (even? 8 : 0);
	    src --;
	}
	if (direction) {
	    data2 = (*src) >> (even? 8 : 0);
	    src ++;
	} else {
	    data1 = (*src) << (even? 0 : 8);
	    src --;
	}
	data = (data1 & 0xff000000) | ((data1 & 0xff00) << 8) |
	       ((data2 & 0xff0000) >> 8) | (data2 & 0xff);
	*dest = data;
	if (direction)
	    dest ++;
	else
	    dest --;
    }
    return(dest);
}

/*
 * Insert/append a zero byte before each byte from source data
 * Input:
 *	- src 	: raw data start address
 *	- dest	: destination
 *	- size	: dword size of data to process
 *	- direction : data process sequence
 *	- even	: put data in even or odd byte
 */
int *mem_expand(int *src, int *dest, int size, int direction, int even)
{
    unsigned int i, data, data1 = 0, data2 = 0;
    unsigned char *p1, *p2, *p3, *p4;

    for (i = 0; i < size; i++) {
	data = *src;
	if (direction)
	    src ++;
	else
	    src --;
	p1 = (char *)&data;
	p2 = (char *)(p1 + 1);
	p3 = (char *)(p2 + 1);
	p4 = (char *)(p3 + 1);
	data1 = ((*p1) << 16) | (*p2);
	data2 = ((*p3) << 16) | (*p4);
	if (even) {
	    data1 <<= 8;
	    data2 <<= 8;
	}
	data = *dest;		/* Read old value */
	if (even)
	    data &= 0x00ff00ff;
	else
	    data &= 0xff00ff00;
	if (direction) {
	    *dest = data1 |data;
	    dest ++;
	} else {
	    *dest = data2 | data;
	    dest --;
	}
	data = *dest;		/* Read old value */
	if (even)
	    data &= 0x00ff00ff;
	else
	    data &= 0xff00ff00;
	if (direction) {
	    *dest = data2 | data;
	    dest ++;
	} else {
	    *dest = data1 | data;
	    dest --;
	}
    }
    return(dest);
}

/******************************************************************************
 INITIALIZE TRAP VECTOR
 ******************************************************************************/asm("\n.globl    _trap0");
asm("\n_trap0:");
asm("\n.noreorg");
asm("nop");
asm("jspci    r24,#_Interrupt,r0");
asm("nop");
asm("nop");
asm("\n.end");

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区dvd视频在线| 欧美色大人视频| 国产日韩一级二级三级| av电影天堂一区二区在线观看| 亚洲美女屁股眼交| 欧美高清视频一二三区 | 日韩极品在线观看| 日韩一级二级三级精品视频| 国产成人av一区二区| 一区二区三区四区亚洲| 26uuu国产电影一区二区| 91在线丨porny丨国产| 手机精品视频在线观看| 欧美激情在线免费观看| 欧美体内she精高潮| 韩国中文字幕2020精品| 国产日韩精品久久久| 激情综合一区二区三区| 亚洲精品日韩综合观看成人91| 欧美日韩国产123区| 国产99精品视频| 日韩经典中文字幕一区| 亚洲人成伊人成综合网小说| 欧美一卡二卡在线| 91女人视频在线观看| 欧美aaaaa成人免费观看视频| 国产精品久久夜| 色94色欧美sute亚洲线路一ni| 韩国一区二区三区| 首页综合国产亚洲丝袜| 国产精品精品国产色婷婷| 欧美一级黄色大片| 91久久国产综合久久| 国产高清不卡一区二区| 一区二区三区在线观看国产| 国产欧美一区二区精品久导航| 91精品国产综合久久久久久久| 99re热这里只有精品免费视频 | 久久蜜桃av一区二区天堂| 欧美视频日韩视频在线观看| 丁香六月久久综合狠狠色| 麻豆成人免费电影| 亚洲成av人影院在线观看网| 国产精品视频在线看| 欧美挠脚心视频网站| 99久久久久久| 成人美女视频在线观看18| 精品亚洲国产成人av制服丝袜| 亚洲国产va精品久久久不卡综合| 中文成人综合网| 欧美一区二区视频免费观看| 亚洲成人av一区二区三区| 精品国产成人系列| 国产a久久麻豆| 性感美女久久精品| 精品国产乱码91久久久久久网站| 国产精品 日产精品 欧美精品| 亚洲国产人成综合网站| 99精品偷自拍| 国产一区二区三区精品视频| 91久久精品一区二区二区| 国产一区二区在线观看免费| 午夜av一区二区| 亚洲成a人v欧美综合天堂| 午夜久久福利影院| 丝袜a∨在线一区二区三区不卡| 无码av免费一区二区三区试看| 亚洲精品五月天| 亚洲综合丝袜美腿| 欧美日韩一区二区在线观看| 国产精品无圣光一区二区| 色综合一区二区| 本田岬高潮一区二区三区| 亚洲大片免费看| 亚洲妇熟xx妇色黄| 亚洲成人手机在线| 老司机午夜精品99久久| 麻豆高清免费国产一区| 亚洲在线观看免费视频| 日本欧美在线观看| 91网站最新网址| 欧洲一区二区三区在线| 欧美日韩精品电影| 欧美一区二区三区白人| 精品久久久久久久久久久久久久久久久| 欧美成人乱码一区二区三区| 日韩欧美国产一区二区三区| 日韩欧美不卡一区| 欧美日韩aaa| 欧美mv和日韩mv国产网站| 久久综合色播五月| 日韩一区在线免费观看| 亚洲综合一二区| 丁香啪啪综合成人亚洲小说| 在线免费av一区| 日韩免费在线观看| 中文字幕一区二区三| 亚洲欧美日韩国产一区二区三区| 亚洲午夜三级在线| 国产中文字幕一区| www.日韩大片| 91麻豆精品91久久久久同性| 久久精品一区二区三区不卡牛牛| 综合激情成人伊人| 蜜臀av一级做a爰片久久| 福利视频网站一区二区三区| 欧美日韩亚洲高清一区二区| 久久综合九色综合欧美就去吻 | 精品视频在线视频| 欧美一区二区三区人| 久久精品网站免费观看| 国产欧美日韩久久| 天天影视网天天综合色在线播放| 国产成人午夜99999| 日韩欧美一二三| 一区二区三区四区高清精品免费观看 | 亚洲色图欧美偷拍| 亚洲一二三四区| 国产乱子伦视频一区二区三区| 欧美在线短视频| 337p日本欧洲亚洲大胆色噜噜| 夜夜嗨av一区二区三区四季av | 欧美亚洲综合色| 久久久精品日韩欧美| 午夜一区二区三区视频| 成人性生交大合| 欧美tk—视频vk| 亚洲一区二区三区四区中文字幕| 国产精品一二三| 欧美浪妇xxxx高跟鞋交| 欧美日韩的一区二区| 毛片不卡一区二区| 五月综合激情婷婷六月色窝| 国内外成人在线| 欧美一区三区二区| 亚洲一区二区三区四区在线免费观看 | 日韩欧美另类在线| 一区二区三区四区av| 国产精品综合一区二区| 一本久道久久综合中文字幕| 日本一区免费视频| 美女免费视频一区| 欧美怡红院视频| 亚洲精品一二三| www.色综合.com| 国产精品久久久久久久岛一牛影视| 美国欧美日韩国产在线播放| 欧美日韩免费观看一区三区| 欧美高清一级片在线观看| 国产一区二区在线电影| 日韩欧美国产wwwww| 午夜精品国产更新| 欧美福利电影网| 亚洲色图一区二区三区| 国产99精品国产| 亚洲精品一区二区三区福利| 麻豆精品国产传媒mv男同| 欧美一区二区三区在线观看| 秋霞午夜av一区二区三区| 日韩亚洲国产中文字幕欧美| 日本亚洲电影天堂| 欧美系列一区二区| 国产色产综合产在线视频| 国产99久久久精品| 亚洲欧洲av在线| 在线视频国内一区二区| 亚洲激情欧美激情| 欧美精品日韩一区| 日韩福利视频网| 日韩免费电影网站| 日本vs亚洲vs韩国一区三区 | 亚洲在线观看免费视频| 精品视频在线免费| 美女国产一区二区| 日韩精品影音先锋| 国产成人在线视频网站| 久久伊99综合婷婷久久伊| 免费精品视频最新在线| 久久疯狂做爰流白浆xx| 欧美三级欧美一级| 香蕉久久一区二区不卡无毒影院| 久久久久久久国产精品影院| 亚洲 欧美综合在线网络| 久久亚洲一区二区三区四区| 精品在线一区二区| 亚洲乱码一区二区三区在线观看| 成人毛片视频在线观看| 亚洲电影激情视频网站| 日韩精品一区二区三区在线播放| 99精品热视频| 亚洲高清一区二区三区| 久久久精品日韩欧美| 精品视频一区二区不卡| 午夜天堂影视香蕉久久| 91福利社在线观看| 蜜桃免费网站一区二区三区| 亚洲三级电影全部在线观看高清| 欧美日韩高清影院| 91在线视频在线| 久久不见久久见免费视频7|