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

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

?? vesavbe.c

?? gumstiz u-boot loader in linux
?? C
?? 第 1 頁 / 共 3 頁
字號:
*               pixelClock  - Desired pixel clock* Returns:      Closest pixel clock to desired clock (-1 if not supported)** Description:  Calls the VBE/Core 3.0 interface to determine the closest*               pixel clock to the requested value. The BIOS will always*               search for a pixel clock that is no more than 1% below the*               requested clock or somewhere higher than the clock. If the*               clock is higher note that it may well be many Mhz higher*               that requested and the application will have to check that*               the returned value is suitable for it's needs. This function*               returns the actual pixel clock that will be programmed by*               the hardware.**               Note that if the pixel clock will be used with a linear*               framebuffer mode, make sure you pass in the linear*               framebuffer flag to this function.**               NOTE: Requires VBE/Core 3.0*****************************************************************************/{    RMREGS  regs;    if (state->VBEVersion >= 0x300) {	regs.x.ax = 0x4F0B;	regs.h.bl = 0x00;	regs.e.ecx = pixelClock;	regs.x.dx = mode;	PM_int86(0x10,&regs,&regs);	if (regs.x.ax == VBE_SUCCESS)	    return regs.e.ecx;	}    return -1;}ibool VBEAPI VBE_setDACWidth(int width)/****************************************************************************** Function:     VBE_setDACWidth* Parameters:   width   - Width to set the DAC to* Returns:      True on success, false on failure*****************************************************************************/{    RMREGS  regs;    regs.x.ax = 0x4F08;    regs.h.bl = 0x00;    regs.h.bh = width;    PM_int86(0x10,&regs,&regs);    return regs.x.ax == VBE_SUCCESS;}int VBEAPI VBE_getDACWidth(void)/****************************************************************************** Function:     VBE_getDACWidth* Returns:      Current width of the palette DAC*****************************************************************************/{    RMREGS  regs;    regs.x.ax = 0x4F08;    regs.h.bl = 0x01;    PM_int86(0x10,&regs,&regs);    if (regs.x.ax != VBE_SUCCESS)	return -1;    return regs.h.bh;}ibool VBEAPI VBE_setPalette(int start,int num,VBE_palette *pal,ibool waitVRT)/****************************************************************************** Function:     VBE_setPalette* Parameters:   start   - Starting palette index to program*               num     - Number of palette indexes to program*               pal     - Palette buffer containing values*               waitVRT - Wait for vertical retrace flag* Returns:      True on success, false on failure** Description:  Sets a block of palette registers by calling the VBE 2.0*               BIOS. This function will fail on VBE 1.2 implementations.*****************************************************************************/{    RMREGS  regs;    regs.x.ax = 0x4F09;    regs.h.bl = waitVRT ? 0x80 : 0x00;    regs.x.cx = num;    regs.x.dx = start;    VBE_callESDI(&regs, pal, sizeof(VBE_palette) * num);    return regs.x.ax == VBE_SUCCESS;}void * VBEAPI VBE_getBankedPointer(VBE_modeInfo *modeInfo)/****************************************************************************** Function:     VBE_getBankedPointer* Parameters:   modeInfo    - Mode info block for video mode* Returns:      Selector to the linear framebuffer (0 on failure)** Description:  Returns a near pointer to the VGA framebuffer area.*****************************************************************************/{    /* We just map the pointer every time, since the pointer will always     * be in real mode memory, so we wont actually be mapping any real     * memory.     *     * NOTE: We cannot currently map a near pointer to the banked frame     *       buffer for Watcom Win386, so we create a 16:16 far pointer to     *       the video memory. All the assembler code will render to the     *       video memory by loading the selector rather than using a     *       near pointer.     */    ulong seg = (ushort)modeInfo->WinASegment;    if (seg != 0) {	if (seg == 0xA000)	    return (void*)PM_getA0000Pointer();	else	    return (void*)PM_mapPhysicalAddr(seg << 4,0xFFFF,true);	}    return NULL;}#ifndef REALMODEvoid * VBEAPI VBE_getLinearPointer(VBE_modeInfo *modeInfo)/****************************************************************************** Function:     VBE_getLinearPointer* Parameters:   modeInfo    - Mode info block for video mode* Returns:      Selector to the linear framebuffer (0 on failure)** Description:  Returns a near pointer to the linear framebuffer for the video*               mode.*****************************************************************************/{    static ulong physPtr[MAX_LIN_PTRS] = {0};    static void *linPtr[MAX_LIN_PTRS] = {0};    static int numPtrs = 0;    int i;    /* Search for an already mapped pointer */    for (i = 0; i < numPtrs; i++) {	if (physPtr[i] == modeInfo->PhysBasePtr)	    return linPtr[i];	}    if (numPtrs < MAX_LIN_PTRS) {	physPtr[numPtrs] = modeInfo->PhysBasePtr;	linPtr[numPtrs] = PM_mapPhysicalAddr(modeInfo->PhysBasePtr,(state->VBEMemory * 1024L)-1,true);	return linPtr[numPtrs++];	}    return NULL;}static void InitPMCode(void)/****************************************************************************** Function:     InitPMCode  - 32 bit protected mode version** Description:  Finds the address of and relocates the protected mode*               code block from the VBE 2.0 into a local memory block. The*               memory block is allocated with malloc() and must be freed*               with VBE_freePMCode() after graphics processing is complete.**               Note that this buffer _must_ be recopied after each mode set,*               as the routines will change depending on the underlying*               video mode.*****************************************************************************/{    RMREGS      regs;    RMSREGS     sregs;    uchar       *code;    int         pmLen;    if (!state->pmInfo && state->VBEVersion >= 0x200) {	regs.x.ax = 0x4F0A;	regs.x.bx = 0;	PM_int86x(0x10,&regs,&regs,&sregs);	if (regs.x.ax != VBE_SUCCESS)	    return;	if (VBE_shared)	    state->pmInfo = PM_mallocShared(regs.x.cx);	else	    state->pmInfo = PM_malloc(regs.x.cx);	if (state->pmInfo == NULL)	    return;	state->pmInfo32 = state->pmInfo;	pmLen = regs.x.cx;	/* Relocate the block into our local data segment */	code = PM_mapRealPointer(sregs.es,regs.x.di);	memcpy(state->pmInfo,code,pmLen);	/* Now do a sanity check on the information we recieve to ensure	 * that is is correct. Some BIOS return totally bogus information	 * in here (Matrox is one)! Under DOS this works OK, but under OS/2	 * we are screwed.	 */	if (state->pmInfo->setWindow >= pmLen ||	    state->pmInfo->setDisplayStart >= pmLen ||	    state->pmInfo->setPalette >= pmLen ||	    state->pmInfo->IOPrivInfo >= pmLen) {	    if (VBE_shared)		PM_freeShared(state->pmInfo);	    else		PM_free(state->pmInfo);	    state->pmInfo32 = state->pmInfo = NULL;	    return;	    }	/* Read the IO priveledge info and determine if we need to	 * pass a selector to MMIO registers to the bank switch code.	 * Since we no longer support selector allocation, we no longer	 * support this mechanism so we disable the protected mode	 * interface in this case.	 */	if (state->pmInfo->IOPrivInfo && !state->MMIOSel) {	    ushort *p = (ushort*)((uchar*)state->pmInfo + state->pmInfo->IOPrivInfo);	    while (*p != 0xFFFF)		p++;	    p++;	    if (*p != 0xFFFF)		VBE_freePMCode();	    }	}}void * VBEAPI VBE_getSetBank(void)/****************************************************************************** Function:     VBE_getSetBank* Returns:      Pointer to the 32 VBE 2.0 bit bank switching routine.*****************************************************************************/{    if (state->VBEVersion >= 0x200) {	InitPMCode();	if (state->pmInfo)	    return (uchar*)state->pmInfo + state->pmInfo->setWindow;	}    return NULL;}void * VBEAPI VBE_getSetDisplayStart(void)/****************************************************************************** Function:     VBE_getSetDisplayStart* Returns:      Pointer to the 32 VBE 2.0 bit CRT start address routine.*****************************************************************************/{    if (state->VBEVersion >= 0x200) {	InitPMCode();	if (state->pmInfo)	    return (uchar*)state->pmInfo + state->pmInfo->setDisplayStart;	}    return NULL;}void * VBEAPI VBE_getSetPalette(void)/****************************************************************************** Function:     VBE_getSetPalette* Returns:      Pointer to the 32 VBE 2.0 bit palette programming routine.*****************************************************************************/{    if (state->VBEVersion >= 0x200) {	InitPMCode();	if (state->pmInfo)	    return (uchar*)state->pmInfo + state->pmInfo->setPalette;	}    return NULL;}void VBEAPI VBE_freePMCode(void)/****************************************************************************** Function:     VBE_freePMCode** Description:  This routine frees the protected mode code blocks that*               we copied from the VBE 2.0 interface. This routine must*               be after you have finished graphics processing to free up*               the memory occupied by the routines. This is necessary*               because the PM info memory block must be re-copied after*               every video mode set from the VBE 2.0 implementation.*****************************************************************************/{    if (state->pmInfo) {	if (VBE_shared)	    PM_freeShared(state->pmInfo);	else	    PM_free(state->pmInfo);	state->pmInfo = NULL;	state->pmInfo32 = NULL;	}}void VBEAPI VBE_sharePMCode(void)/****************************************************************************** Function:     VBE_sharePMCode** Description:  Enables internal sharing of the PM code buffer for OS/2.*****************************************************************************/{    VBE_shared = true;}/* Set of code stubs used to build the final bank switch code */#define VBE20_adjustOffset  7static uchar VBE20A_bankFunc32_Start[] = {    0x53,0x51,                  /*  push    ebx,ecx     */    0x8B,0xD0,                  /*  mov     edx,eax     */    0x33,0xDB,                  /*  xor     ebx,ebx     */    0xB1,0x00,                  /*  mov     cl,0        */    0xD2,0xE2,                  /*  shl     dl,cl       */    };static uchar VBE20_bankFunc32_End[] = {    0x59,0x5B,                  /*  pop     ecx,ebx     */    };static uchar bankFunc32[100];#define copy(p,b,a) memcpy(b,a,sizeof(a)); (p) = (b) + sizeof(a)ibool VBEAPI VBE_getBankFunc32(int *codeLen,void **bankFunc,int dualBanks,    int bankAdjust)/****************************************************************************** Function:     VBE_getBankFunc32* Parameters:   codeLen     - Place to store length of code*               bankFunc    - Place to store pointer to bank switch code*               dualBanks   - True if dual banks are in effect*               bankAdjust  - Bank shift adjustment factor* Returns:      True on success, false if not compatible.** Description:  Creates a local 32 bit bank switch function from the*               VBE 2.0 bank switch code that is compatible with the*               virtual flat framebuffer devices (does not have a return*               instruction at the end and takes the bank number in EAX*               not EDX). Note that this 32 bit code cannot include int 10h*               instructions, so we can only do this if we have VBE 2.0*               or later.**               Note that we need to know the length of the 32 bit*               bank switch function, which the standard VBE 2.0 spec*               does not provide. In order to support this we have*               extended the VBE 2.0 state->pmInfo structure in UniVBE 5.2 in a*               way to support this, and we hope that this will become*               a VBE 2.0 ammendment.**               Note also that we cannot run the linear framebuffer*               emulation code with bank switching routines that require*               a selector to the memory mapped registers passed in ES.*****************************************************************************/{    int     len;    uchar   *code;    uchar   *p;    InitPMCode();    if (state->VBEVersion >= 0x200 && state->pmInfo32 && !state->MMIOSel) {	code = (uchar*)state->pmInfo32 + state->pmInfo32->setWindow;	if (state->pmInfo32->extensionSig == VBE20_EXT_SIG)	    len = state->pmInfo32->setWindowLen-1;	else {	    /* We are running on a system without the UniVBE 5.2 extension.	     * We do as best we can by scanning through the code for the	     * ret function to determine the length. This is not foolproof,	     * but is the best we can do.	     */	    p = code;	    while (*p != 0xC3)		p++;	    len = p - code;	    }	if ((len + sizeof(VBE20A_bankFunc32_Start) + sizeof(VBE20_bankFunc32_End)) > sizeof(bankFunc32))	    PM_fatalError("32-bit bank switch function too long!");	copy(p,bankFunc32,VBE20A_bankFunc32_Start);	memcpy(p,code,len);	p += len;	copy(p,p,VBE20_bankFunc32_End);	*codeLen = p - bankFunc32;	bankFunc32[VBE20_adjustOffset] = (uchar)bankAdjust;	*bankFunc = bankFunc32;	return true;	}    return false;}#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区大片| 26uuu亚洲综合色欧美 | 日本成人超碰在线观看| 国产精品高清亚洲| 久久久精品欧美丰满| 日韩三级伦理片妻子的秘密按摩| 在线免费观看不卡av| jlzzjlzz国产精品久久| 国产69精品久久99不卡| 五月婷婷综合网| 一区二区三区91| 亚洲欧美日韩国产综合| 国产精品激情偷乱一区二区∴| 久久免费精品国产久精品久久久久| 日韩亚洲国产中文字幕欧美| 欧美精品粉嫩高潮一区二区| 欧美久久久久中文字幕| 欧美午夜精品一区二区蜜桃| 亚洲男人的天堂在线观看| 国产日本欧美一区二区| 最新国产の精品合集bt伙计| 亚洲图片有声小说| 免费美女久久99| 国产一区二区三区黄视频| 国产成人精品www牛牛影视| 白白色亚洲国产精品| 欧洲生活片亚洲生活在线观看| 欧美精品一卡两卡| 欧美zozozo| 国产精品久久久久影院色老大| 一区二区三区在线视频观看 | 色婷婷激情综合| 欧美色综合久久| 日韩一级完整毛片| 欧美高清在线精品一区| 亚洲国产精品久久艾草纯爱| 蜜桃精品视频在线| 成人免费电影视频| 欧美久久免费观看| 欧美经典一区二区| 亚洲成人一区二区在线观看| 国内精品在线播放| 91丨porny丨中文| 日韩欧美国产精品| 日韩一区欧美小说| 免费看日韩a级影片| 不卡视频在线观看| 欧美一级片在线观看| 国产欧美日韩激情| 午夜视频一区二区| 不卡的电影网站| 91精品国产综合久久精品性色| 日本一区二区三区久久久久久久久不| 亚洲精品国产品国语在线app| 久久精品久久久精品美女| 99久久伊人精品| 精品对白一区国产伦| 一区二区三区国产豹纹内裤在线| 久久精品国产亚洲高清剧情介绍 | 国产午夜三级一区二区三| 亚洲午夜在线视频| 国产一区二区免费视频| 欧美日韩三级视频| 国产精品每日更新| 极品瑜伽女神91| 欧美三片在线视频观看| 欧美韩日一区二区三区四区| 美女在线视频一区| 欧美性猛交xxxx乱大交退制版 | 日日摸夜夜添夜夜添国产精品| 成人精品国产一区二区4080| 日韩一级大片在线观看| 一区二区三区免费网站| 国产麻豆精品一区二区| 欧美一区二区二区| 亚洲成av人片一区二区梦乃| 91亚洲国产成人精品一区二区三| 欧美mv日韩mv亚洲| 午夜精品一区二区三区电影天堂 | 岛国av在线一区| 日韩欧美一二三| 婷婷综合另类小说色区| 在线免费观看不卡av| 日韩理论在线观看| 国产成人在线免费观看| av一区二区三区在线| 精品成人一区二区三区四区| 91搞黄在线观看| 精品国产3级a| 亚洲不卡av一区二区三区| 91麻豆国产香蕉久久精品| 中文一区二区在线观看| 国产综合久久久久久久久久久久| 欧美一级视频精品观看| 天天综合网天天综合色| 欧美色欧美亚洲另类二区| 一区二区三区四区中文字幕| 99精品欧美一区二区三区小说| 国产日韩欧美电影| 国产福利一区在线观看| 欧美激情一区二区三区蜜桃视频| 国产在线日韩欧美| 2023国产精品视频| 国产在线不卡一区| 久久精品亚洲乱码伦伦中文 | 欧美三级午夜理伦三级中视频| 中文字幕一区二区视频| 99精品国产热久久91蜜凸| 亚洲少妇30p| 日本韩国一区二区| 玉米视频成人免费看| 日本国产一区二区| 亚洲mv大片欧洲mv大片精品| 91精品国产欧美一区二区18| 日本伊人精品一区二区三区观看方式| 欧美精品三级日韩久久| 日本亚洲欧美天堂免费| 日韩欧美一二三区| 国产精品综合一区二区| 亚洲国产成人一区二区三区| 91在线视频播放地址| 亚洲乱码一区二区三区在线观看| 在线精品视频免费播放| 亚洲最色的网站| 91精品国产综合久久精品| 免费成人深夜小野草| 久久婷婷色综合| 99热精品一区二区| 亚洲国产一区在线观看| 日韩区在线观看| 高清久久久久久| 一区二区免费在线| 91麻豆精品国产自产在线观看一区 | 国产三级一区二区三区| av动漫一区二区| 午夜激情综合网| 久久综合资源网| 一本久道久久综合中文字幕| 首页综合国产亚洲丝袜| 久久综合资源网| 色妞www精品视频| 免费的国产精品| 国产精品久久网站| 在线观看免费一区| 精品一区二区影视| 国产精品天美传媒| 欧美日韩www| 丁香桃色午夜亚洲一区二区三区| 一区二区三区在线影院| 精品免费国产二区三区| 色综合天天性综合| 天堂午夜影视日韩欧美一区二区| 久久女同互慰一区二区三区| 色婷婷综合久久久中文一区二区| 蜜臀久久久99精品久久久久久| 国产欧美一二三区| 欧美剧在线免费观看网站| 成人午夜在线免费| 日本成人在线视频网站| 亚洲人成在线播放网站岛国| 精品三级在线看| 色美美综合视频| 国产真实乱偷精品视频免| 亚洲一区二区三区四区五区黄| 久久亚洲捆绑美女| 欧美亚洲国产一卡| 成人深夜在线观看| 久久精品噜噜噜成人av农村| 亚洲欧美视频在线观看视频| 26uuu色噜噜精品一区| 欧美性视频一区二区三区| 成人免费的视频| 国精产品一区一区三区mba视频| 亚洲电影第三页| 亚洲欧洲av另类| 精品成人一区二区三区四区| 在线播放91灌醉迷j高跟美女 | 欧美日韩一级视频| 成人高清免费在线播放| 国内精品国产三级国产a久久| 午夜电影一区二区三区| 亚洲日本欧美天堂| 欧美国产1区2区| 久久亚区不卡日本| 91麻豆精品国产自产在线观看一区 | 国产精品77777| 免费在线观看日韩欧美| 亚洲高清三级视频| 亚洲精品你懂的| 国产精品不卡一区二区三区| 久久久久久麻豆| 欧美电视剧免费全集观看| 欧美日韩一二区| 欧美在线视频不卡| 97精品久久久午夜一区二区三区 | 亚洲欧美日韩久久| 国产欧美日韩视频在线观看| 久久蜜桃一区二区| 久久亚洲春色中文字幕久久久| 精品区一区二区|