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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bios.c

?? 友善mini2440嵌入式
?? C
字號:
/* * Mostly done after the Scitech Bios emulation * Written by Hans-J鰎g Frieden * Hyperion Entertainment */#include "x86emu.h"#include "glue.h"#undef DEBUG#ifdef DEBUG#define PRINTF(fmt, args...) printf(fmt, ## args)#else#define PRINTF(fmt, args...)#endif#define BIOS_SEG 0xFFF0#define PCIBIOS_SUCCESSFUL 0#define PCIBIOS_DEVICE_NOT_FOUND 0x86typedef unsigned char UBYTE;typedef unsigned short UWORD;typedef unsigned long ULONG;typedef char BYTE;typedef short WORT;typedef long LONG;static inline UBYTE read_byte(volatile UBYTE* from){    int x;    asm volatile ("lbz %0,%1\n eieio" : "=r" (x) : "m" (*from));    return (UBYTE)x;}static inline void write_byte(volatile UBYTE *to, int x){    asm volatile ("stb %1,%0\n eieio" : "=m" (*to) : "r" (x));}static inline UWORD read_word_little(volatile UWORD *from){    int x;    asm volatile ("lhbrx %0,0,%1\n eieio" : "=r" (x) : "r" (from), "m" (*from));    return (UWORD)x;}static inline UWORD read_word_big(volatile UWORD *from){    int x;    asm volatile ("lhz %0,%1\n eieio" : "=r" (x) : "m" (*from));    return (UWORD)x;}static inline void write_word_little(volatile UWORD *to, int x){    asm volatile ("sthbrx %1,0,%2\n eieio" : "=m" (*to) : "r" (x), "r" (to));}static inline void write_word_big(volatile UWORD *to, int x){    asm volatile ("sth %1,%0\n eieio" : "=m" (*to) : "r" (x));}static inline ULONG read_long_little(volatile ULONG *from){    unsigned long x;    asm volatile ("lwbrx %0,0,%1\n eieio" : "=r" (x) : "r" (from), "m"(*from));    return (ULONG)x;}static inline ULONG read_long_big(volatile ULONG *from){    unsigned long x;    asm volatile ("lwz %0,%1\n eieio" : "=r" (x) : "m" (*from));    return (ULONG)x;}static inline void write_long_little(volatile ULONG *to, ULONG x){    asm volatile ("stwbrx %1,0,%2\n eieio" : "=m" (*to) : "r" (x), "r" (to));}static inline void write_long_big(volatile ULONG *to, ULONG x){    asm volatile ("stw %1,%0\n eieio" : "=m" (*to) : "r" (x));}#define port_to_mem(from) (0xFE000000|(from))#define in_byte(from) read_byte( (UBYTE *)port_to_mem(from))#define in_word(from) read_word_little((UWORD *)port_to_mem(from))#define in_long(from) read_long_little((ULONG *)port_to_mem(from))#define out_byte(to, val) write_byte((UBYTE *)port_to_mem(to), val)#define out_word(to, val) write_word_little((UWORD *)port_to_mem(to), val)#define out_long(to, val) write_long_little((ULONG *)port_to_mem(to), val)static void X86API undefined_intr(int intno){    extern u16 A1_rdw(u32 addr);    if (A1_rdw(intno * 4 + 2) == BIOS_SEG)    {	PRINTF("Undefined interrupt %xh called AX = %xh, BX = %xh, CX = %xh, DX = %xh\n",	   intno, M.x86.R_AX, M.x86.R_BX, M.x86.R_CX, M.x86.R_DX);	X86EMU_halt_sys();    }    else    {	PRINTF("Calling interrupt %xh, AL=%xh, AH=%xh\n", intno, M.x86.R_AL, M.x86.R_AH);	X86EMU_prepareForInt(intno);    }}static void X86API int42(int intno);static void X86API int15(int intno);static void X86API int10(int intno){    if (A1_rdw(intno*4+2) == BIOS_SEG)	int42(intno);    else    {	PRINTF("int10: branching to %04X:%04X, AL=%xh, AH=%xh\n", A1_rdw(intno*4+2), A1_rdw(intno*4),	       M.x86.R_AL, M.x86.R_AH);	X86EMU_prepareForInt(intno);    }}static void X86API int1A(int intno){    int device;    switch(M.x86.R_AX)    {    case 0xB101: /* PCI Bios Present? */	M.x86.R_AL  = 0x00;	M.x86.R_EDX = 0x20494350;	M.x86.R_BX  = 0x0210;	M.x86.R_CL  = 3;	CLEAR_FLAG(F_CF);	break;    case 0xB102: /* Find device */	device = mypci_find_device(M.x86.R_DX, M.x86.R_CX, M.x86.R_SI);	if (device != -1)	{	    M.x86.R_AH = PCIBIOS_SUCCESSFUL;	    M.x86.R_BH = mypci_bus(device);	    M.x86.R_BL = mypci_devfn(device);	}	else	{	    M.x86.R_AH = PCIBIOS_DEVICE_NOT_FOUND;	}	CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);	break;    case 0xB103: /* Find PCI class code */	M.x86.R_AH = PCIBIOS_DEVICE_NOT_FOUND;	/*printf("Find by class not yet implmented"); */	CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);	break;    case 0xB108: /* read config byte */	M.x86.R_CL = mypci_read_cfg_byte(M.x86.R_BH, M.x86.R_BL, M.x86.R_DI);	M.x86.R_AH = PCIBIOS_SUCCESSFUL;	CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);	/*printf("read_config_byte %x,%x,%x -> %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, */	/*	    M.x86.R_CL); */	break;    case 0xB109: /* read config word */	M.x86.R_CX = mypci_read_cfg_word(M.x86.R_BH, M.x86.R_BL, M.x86.R_DI);	M.x86.R_AH = PCIBIOS_SUCCESSFUL;	CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);	/*printf("read_config_word %x,%x,%x -> %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, */	/*	    M.x86.R_CX); */	break;    case 0xB10A: /* read config dword */	M.x86.R_ECX = mypci_read_cfg_long(M.x86.R_BH, M.x86.R_BL, M.x86.R_DI);	M.x86.R_AH = PCIBIOS_SUCCESSFUL;	CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);	/*printf("read_config_long %x,%x,%x -> %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, */	/*    M.x86.R_ECX); */	break;    case 0xB10B: /* write config byte */	mypci_write_cfg_byte(M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, M.x86.R_CL);	M.x86.R_AH = PCIBIOS_SUCCESSFUL;	CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);	/*printf("write_config_byte %x,%x,%x <- %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, */	/*    M.x86.R_CL); */	break;    case 0xB10C: /* write config word */	mypci_write_cfg_word(M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, M.x86.R_CX);	M.x86.R_AH = PCIBIOS_SUCCESSFUL;	CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);	/*printf("write_config_word %x,%x,%x <- %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, */	/*	    M.x86.R_CX); */	break;    case 0xB10D: /* write config dword */	mypci_write_cfg_long(M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, M.x86.R_ECX);	M.x86.R_AH = PCIBIOS_SUCCESSFUL;	CONDITIONAL_SET_FLAG((M.x86.R_AH != PCIBIOS_SUCCESSFUL), F_CF);	/*printf("write_config_long %x,%x,%x <- %x\n", M.x86.R_BH, M.x86.R_BL, M.x86.R_DI, */	/*	    M.x86.R_ECX); */	break;    default:	PRINTF("BIOS int %xh: Unknown function AX=%04xh\n", intno, M.x86.R_AX);    }}void bios_init(void){    int i;    X86EMU_intrFuncs bios_intr_tab[256];    for (i=0; i<256; i++)    {	write_long_little(M.mem_base+i*4, BIOS_SEG<<16);	bios_intr_tab[i] = undefined_intr;    }    bios_intr_tab[0x10] = int10;    bios_intr_tab[0x1A] = int1A;    bios_intr_tab[0x42] = int42;    bios_intr_tab[0x15] = int15;    bios_intr_tab[0x6D] = int42;    X86EMU_setupIntrFuncs(bios_intr_tab);    video_init();}unsigned char setup_40x25[] ={    0x38, 0x28, 0x2d, 0x0a, 0x1f, 6, 0x19,    0x1c, 2, 7, 6, 7, 0, 0, 0, 0};unsigned char setup_80x25[] ={    0x71, 0x50, 0x5a, 0x0a, 0x1f, 6, 0x19,    0x1c, 2, 7, 6, 7, 0, 0, 0, 0};unsigned char setup_graphics[] ={    0x38, 0x28, 0x20, 0x0a, 0x7f, 6, 0x64,    0x70, 2, 1, 6, 7, 0, 0, 0, 0};unsigned char setup_bw[] ={    0x61, 0x50, 0x52, 0x0f, 0x19, 6, 0x19,    0x19, 2, 0x0d, 0x0b, 0x0c, 0, 0, 0, 0};unsigned char * setup_modes[] ={    setup_40x25,     /* mode 0: 40x25 bw text */    setup_40x25,     /* mode 1: 40x25 col text */    setup_80x25,     /* mode 2: 80x25 bw text */    setup_80x25,     /* mode 3: 80x25 col text */    setup_graphics,  /* mode 4: 320x200 col graphics */    setup_graphics,  /* mode 5: 320x200 bw graphics */    setup_graphics,  /* mode 6: 640x200 bw graphics */    setup_bw         /* mode 7: 80x25 mono text */};unsigned int setup_cols[] ={    40, 40, 80, 80, 40, 40, 80, 80};unsigned char setup_modesets[] ={     0x2C, 0x28, 0x2D, 0x29, 0x2A, 0x2E, 0x1E, 0x29};unsigned int setup_bufsize[] ={    2048, 2048, 4096, 2096, 16384, 16384, 16384, 4096};void bios_set_mode(int mode){    int i;    unsigned char mode_set = setup_modesets[mode]; /* Control register value */    unsigned char *setup_regs = setup_modes[mode]; /* Register 3D4 Array */    /* Switch video off */    out_byte(0x3D8, mode_set & 0x37);    /* Set up parameters at 3D4h */    for (i=0; i<16; i++)    {	out_byte(0x3D4, (unsigned char)i);	out_byte(0x3D5, *setup_regs);	setup_regs++;    }    /* Enable video */    out_byte(0x3D8, mode_set);    /* Set overscan */    if (mode == 6) out_byte(0x3D9, 0x3F);    else           out_byte(0x3D9, 0x30);}static void bios_print_string(void){    extern void video_bios_print_string(char *string, int x, int y, int attr, int count);    char *s = (char *)(M.x86.R_ES<<4) + M.x86.R_BP;    int attr;    if (M.x86.R_AL & 0x02) attr = - 1;    else                   attr = M.x86.R_BL;    video_bios_print_string(s, M.x86.R_DH, M.x86.R_DL, attr, M.x86.R_CX);}static void X86API int42(int intno){    switch (M.x86.R_AH)    {    case 0x00:	bios_set_mode(M.x86.R_AL);	break;    case 0x13:	bios_print_string();	break;    default:	PRINTF("Warning: VIDEO BIOS interrupt %xh unimplemented function %xh, AL = %xh\n",	       intno, M.x86.R_AH, M.x86.R_AL);    }}static void X86API int15(int intno){    PRINTF("Called interrupt 15h: AX = %xh, BX = %xh, CX = %xh, DX = %xh\n",	   M.x86.R_AX, M.x86.R_BX, M.x86.R_CX, M.x86.R_DX);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99综合电影在线视频| 美女尤物国产一区| 亚洲丰满少妇videoshd| 老司机精品视频线观看86| 国产传媒久久文化传媒| 欧美中文字幕一二三区视频| 国产视频911| 久久aⅴ国产欧美74aaa| 在线观看av不卡| 日本一区二区成人在线| 免费在线观看成人| 欧美精品欧美精品系列| 亚洲欧美偷拍三级| 欧美一区二区视频在线观看2022| 日本一区二区三区电影| 久久99蜜桃精品| 欧美久久久久久久久久| 亚洲精品菠萝久久久久久久| 成人性视频免费网站| 久久综合九色综合欧美98| 人人超碰91尤物精品国产| 欧美日韩dvd在线观看| 亚洲国产欧美日韩另类综合| 91在线观看免费视频| 国产精品美女久久久久久| 丁香六月久久综合狠狠色| 欧美一级日韩不卡播放免费| 无码av中文一区二区三区桃花岛| 91在线免费播放| 中文字幕制服丝袜成人av| 国产精品538一区二区在线| 精品国产污网站| 精品亚洲成a人| 久久这里只有精品6| 国产一区高清在线| 久久久一区二区三区| 国产成人av电影在线观看| 国产精品日韩成人| 99v久久综合狠狠综合久久| 国产精品久久久久影视| av中文字幕不卡| 亚洲靠逼com| 欧美久久久影院| 理论片日本一区| 中文字幕国产精品一区二区| 9i在线看片成人免费| 亚洲自拍欧美精品| 欧美一区二区三区日韩| 国内精品视频一区二区三区八戒| 久久久www成人免费无遮挡大片| 国产不卡高清在线观看视频| 亚洲人吸女人奶水| 欧美日韩一区二区三区四区五区| 秋霞午夜av一区二区三区| 精品国产乱码久久久久久图片 | 成人黄色软件下载| 中文字幕在线视频一区| 欧美日韩国产一级| 国产一区在线看| 亚洲男人的天堂在线观看| 欧美精品丝袜久久久中文字幕| 久久国产精品无码网站| 亚洲三级在线播放| 4438成人网| 成人av网站免费| 日韩国产一区二| 国产精品美女一区二区三区| 欧美系列亚洲系列| 高清shemale亚洲人妖| 亚洲一区二区三区视频在线| 久久久久久久久久看片| 色国产精品一区在线观看| 久99久精品视频免费观看| 中文字幕一区av| 精品国产一区二区在线观看| 色综合久久综合网欧美综合网| 精品一区二区在线观看| 亚洲一区二区三区中文字幕 | 欧美亚洲一区二区三区四区| 精品写真视频在线观看| 亚洲一区二区在线视频| 久久亚洲免费视频| 欧美一区二区三区在线观看| 91色.com| www.在线欧美| 国内成人自拍视频| 日本美女视频一区二区| 成人欧美一区二区三区黑人麻豆| 日韩美一区二区三区| 精品视频一区二区三区免费| 不卡一区二区在线| 国产一区二区三区四| 日本午夜精品一区二区三区电影| 亚洲视频精选在线| 国产拍揄自揄精品视频麻豆| 日韩免费视频线观看| 欧美日韩国产经典色站一区二区三区| 成人av网址在线| 丁香婷婷综合色啪| 国产乱一区二区| 国精产品一区一区三区mba桃花| 午夜精品免费在线观看| 一区二区三区国产精华| 亚洲色图在线看| 亚洲色图欧洲色图| 亚洲欧美成人一区二区三区| 国产欧美精品国产国产专区| 精品成人a区在线观看| 日韩美一区二区三区| 日韩欧美美女一区二区三区| 91精品国模一区二区三区| 欧美二区乱c少妇| 欧美精品高清视频| 欧美久久一二三四区| 91精品国产综合久久久久久漫画 | 成人黄色电影在线| 高清av一区二区| 99视频国产精品| 91麻豆精东视频| 欧洲在线/亚洲| 欧美裸体bbwbbwbbw| 91精品国产91热久久久做人人| 日韩一区二区三区四区五区六区| 欧美一卡二卡在线| 欧美精品一区二区久久久 | 欧美一级二级三级蜜桃| 宅男噜噜噜66一区二区66| 日韩午夜小视频| 久久久久久久久久久久久久久99| 国产欧美久久久精品影院| 国产精品三级av在线播放| 亚洲免费伊人电影| 丝袜脚交一区二区| 紧缚捆绑精品一区二区| 成人性生交大片免费| 97se狠狠狠综合亚洲狠狠| 在线一区二区三区四区| 欧美一级二级在线观看| 欧美极品aⅴ影院| 亚洲精品伦理在线| 美日韩一区二区三区| 国产精品12区| 欧美在线视频不卡| 26uuu色噜噜精品一区二区| 国产欧美日韩在线| 亚洲国产aⅴ成人精品无吗| 日韩精品一二区| 日韩一级大片在线观看| 国产精品污www在线观看| 一区二区三区毛片| 国产一本一道久久香蕉| 欧美综合在线视频| 精品久久五月天| 亚洲高清免费视频| 成人午夜av电影| 51精品秘密在线观看| 国产精品国产精品国产专区不片| 五月天亚洲精品| 成人av动漫网站| 日韩一区二区麻豆国产| 亚洲免费观看高清| 国产九色精品成人porny| 欧美日韩国产在线观看| 中文字幕一区二区视频| 免播放器亚洲一区| 在线中文字幕一区| 国产亚洲欧美色| 麻豆成人在线观看| 在线免费观看视频一区| 国产网站一区二区三区| 蜜乳av一区二区| 欧美日韩激情一区二区三区| 日本一区二区久久| 国产专区综合网| 3d动漫精品啪啪1区2区免费| 亚洲精品第1页| www..com久久爱| 国产亚洲人成网站| 久久se这里有精品| 91精品国产综合久久久久| 亚洲精品v日韩精品| 99视频精品全部免费在线| 久久精品一区二区| 国产中文字幕精品| 91精品国产手机| 日本最新不卡在线| 在线电影一区二区三区| 亚洲在线中文字幕| 91黄色激情网站| 亚洲欧美电影一区二区| av一二三不卡影片| 中文字幕在线不卡| 成人一区二区三区| 一区在线播放视频| aaa国产一区| 亚洲天堂2014| 色国产综合视频| 亚洲成人免费视频| 欧美日韩中文国产| 日韩国产成人精品|