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

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

?? video.c

?? ppcboot2.0 華恒光盤里帶的BOOTLOADER
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * (C) Copyright 2001 * Denis Peter, MPL AG Switzerland * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * * Note: Parts of these software are imported from *       - UBL, The Universal Talkware Boot Loader *         Copyright (C) 2000 Universal Talkware Inc. *       - Linux * * */#include <common.h>#ifdef CONFIG_VIDEO#include <command.h>#include <asm/processor.h>#include <devices.h>#include "video.h"#include <pci.h>#include "vga_table.h"#ifdef CONFIG_VIDEO_CT69000#define VIDEO_VEND_ID 0x102C#define VIDEO_DEV_ID  0x00C0#else#error  CONFIG_VIDEO_CT69000 must be defined#endif/* * Routine for resent board info to video * resides in pip405.c */extern void video_write_board_info(void);#undef VGA_DEBUG#ifdef VGA_DEBUG#define	PRINTF(fmt,args...)	printf (fmt ,##args)#else#define PRINTF(fmt,args...)#endif#define VGA_MAXROWS	25#define VGA_MAXCOLS 80#define CRTC_CURSH	14 /* cursor high pos */#define CRTC_CURSL	15 /* cursor low pos *//* description of the hardware layout */#define ATTRI_INDEX		CFG_ISA_IO_BASE_ADDRESS | 0x3c0				/* Index and Data write port of the attribute Registers */#define ATTRI_DATA		CFG_ISA_IO_BASE_ADDRESS | 0x3c1				/* Data port of the attribute Registers */#define STATUS_REG0		CFG_ISA_IO_BASE_ADDRESS | 0x3c2				/* Status Register 0 (read only) */#define MSR_REG_W			CFG_ISA_IO_BASE_ADDRESS | 0x3c2				/* Misc. Output Register (write only) */#define SEQ_INDEX			CFG_ISA_IO_BASE_ADDRESS | 0x3c4				/* Index port of the Sequencer Controller */#define SEQ_DATA			CFG_ISA_IO_BASE_ADDRESS | 0x3c5				/* Data port of the Sequencer Controller */#define COL_PAL_MASK	CFG_ISA_IO_BASE_ADDRESS | 0x3c6				/* Color Palette Mask */#define COL_PAL_STAT	CFG_ISA_IO_BASE_ADDRESS | 0x3c7				/* Color Palette Status (read only) */#define COL_PAL_IND_R	CFG_ISA_IO_BASE_ADDRESS | 0x3c7				/* Color Palette Read Mode Index (write only) */#define COL_PAL_IND_W	CFG_ISA_IO_BASE_ADDRESS | 0x3c8				/* Color Palette Write Mode Index */#define COL_PAL_DATA	CFG_ISA_IO_BASE_ADDRESS | 0x3c9				/* Color Palette Data Port */#define FCR_REG_R			CFG_ISA_IO_BASE_ADDRESS | 0x3ca				/* Feature Control Register (read only) */#define MSR_REG_R			CFG_ISA_IO_BASE_ADDRESS | 0x3cc				/* Misc. Output Register (read only) */#define GR_INDEX			CFG_ISA_IO_BASE_ADDRESS | 0x3ce				/* Index port of the Graphic Controller Registers */#define GR_DATA				CFG_ISA_IO_BASE_ADDRESS | 0x3cf				/* Data port of the Graphic Controller Registers */#define FP_INDEX			CFG_ISA_IO_BASE_ADDRESS | 0x3d0				/* Index port of the Flat panel Registers */#define FP_DATA				CFG_ISA_IO_BASE_ADDRESS | 0x3d1				/* Data port of the Flat panel Registers */#define MR_INDEX			CFG_ISA_IO_BASE_ADDRESS | 0x3d2				/* Index Port of the Multimedia Extension */#define MR_DATA				CFG_ISA_IO_BASE_ADDRESS | 0x3d3				/* Data Port of the Multimedia Extension */#define CRT_INDEX			CFG_ISA_IO_BASE_ADDRESS | 0x3d4				/* Index port of the CRT Controller */#define CRT_DATA			CFG_ISA_IO_BASE_ADDRESS | 0x3d5				/* Data port of the CRT Controller */#define XREG_INDEX		CFG_ISA_IO_BASE_ADDRESS | 0x3d6				/* Extended Register index */#define XREG_DATA			CFG_ISA_IO_BASE_ADDRESS | 0x3d7				/* Extended Register data */#define STATUS_REG1		CFG_ISA_IO_BASE_ADDRESS | 0x3da				/* Input Status Register 1 (read only) */#define FCR_REG_W			CFG_ISA_IO_BASE_ADDRESS | 0x3da				/* Feature Control Register (write only) */static unsigned char * video_fb;		/* Frame buffer *//* current hardware state */static int	video_row;static int	video_col;static unsigned char video_attr;static unsigned int font_base_addr;/********************************************************************** * some forward declerations... */int video_init(int busdevfunc);void vga_set_attrib(void);void vga_set_crt(void);void vga_set_dac(void);void vga_set_gr(void);void vga_set_seq(void);void vga_set_xreg(void);void vga_write_sr(unsigned char reg,unsigned char val);void vga_write_gr(unsigned char reg,unsigned char val);void vga_write_cr(unsigned char reg,unsigned char val);void vga_set_font(void);/*************************************************************************** * Init VGA Device */int drv_video_init (void){	int error, devices = 1 ; 	device_t vgadev ;	int	busdevfunc;	busdevfunc=pci_find_device(VIDEO_VEND_ID,VIDEO_DEV_ID,0); /* get PCI Device ID */	if(busdevfunc==-1) {#ifdef CONFIG_VIDEO_ONBOARD		printf("Error VGA Controller (%04X,%04X) not found\n",VIDEO_VEND_ID,VIDEO_DEV_ID);#endif		return -1;	}	video_init(busdevfunc);	video_write_board_info();	memset (&vgadev, 0, sizeof(vgadev));	strcpy(vgadev.name, "vga");	vgadev.flags =  DEV_FLAGS_OUTPUT | DEV_FLAGS_SYSTEM;	vgadev.putc = video_putc;	vgadev.puts = video_puts;	vgadev.getc = NULL;	vgadev.tstc = NULL;	error = device_register (&vgadev);	return (error == 0) ? devices : error ;}/*********************************************************** * VGA Initializing */int video_init(int busdevfunc){  pci_read_config_dword(busdevfunc, PCI_BASE_ADDRESS_0, &font_base_addr);  video_fb = (char*)font_base_addr; /* we look into the big linaer memory area */  /* set the extended Registers */	vga_set_xreg(); 	/* set IO Addresses to 0x3Dx (color mode ) */	out8(MSR_REG_W,0x01);  /* Feature Control Register:     Bits 7-4 Reserved = 0     Bit  3   Vertical Sync select = 1 = Enabled     Bits 2-0 Reserved = 010 = as read from memory.  */  out8(FCR_REG_W,0x02);  /* Miscelaneous output Register:     Bits 7-6 (num lines) = 01 = VGA 400 lines,     Bit  5   (Odd/Even Page) =  1 = Sleect high page of memory,     Bit  4   reserved = 0,     Bits 3-2 (Clocl Select) = 01 = 28.322Mhz     Bit  1 = Display Ram Enable = 1 = Enable processor access.     Bit  0 = Io Address Select = 1 = Color Graphics Enulation.  */  out8(MSR_REG_W,0x67);  /* set the palette */  vga_set_dac();  /* set the attributes (before we bring up the engine     then we dont have to wait for refresh).  */  vga_set_attrib();  /* set the crontroller register. */  vga_set_crt();	vga_write_sr(0x00,0x01); /* synchronous reset */	vga_write_sr(0x01,0x00); /* clocking mode */	vga_write_sr(0x02,0x03); /* write to map 0, 1 */	vga_write_sr(0x03,0x00); /* select character map 0 */	vga_write_sr(0x04,0x03); /* even-odd addressing */	vga_write_sr(0x00,0x03); /* clear synchronous reset */  vga_set_seq(); /* Set the extended sr's. */  vga_set_gr(); /* Set the graphic registers. */  /* load the font */  vga_set_font();  /* initialize the rol/col counts and the text attribute. */  video_row=0;  video_col=0;  video_attr = VGA_ATTR_CLR_WHT;  /* Clear the video ram */  video_clear();  return 1;}void vga_set_font(void){	int i,j;	char *fontmap;	fontmap = (char *)font_base_addr;	vga_write_sr(0x00,0x01); /* synchronous reset */	vga_write_sr(0x04,0x06); /* sequential addressing */	vga_write_sr(0x02,0x04); /* write to map 2 */	vga_write_sr(0x00,0x03); /* clear synchronous reset */	vga_write_gr(0x04,0x02); /* select map 2 */	vga_write_gr(0x05,0x00); /* disable odd-even addressing */	vga_write_gr(0x06,0x00); /* map start at 0xa0000 */	for(i=0;i<0x100;i++) {		for(j=0;j<0x10;j++) {			*((char *)fontmap+i*32+j)=(char)fontdata_8x16[i*16+j];		}	}	vga_write_sr(0x00,0x01); /* synchronous reset */	vga_write_sr(0x02,0x03); /* write to map 0 and 1 */	vga_write_sr(0x04,0x03); /* odd-even addressing */	vga_write_sr(0x03,0x00); /* Character map 0 & 1 */	vga_write_sr(0x00,0x03); /* clear synchronous reset */	vga_write_gr(0x04,0x00); /* select map 0 for CPU */	vga_write_gr(0x05,0x10); /* enable odd-even addressing */	vga_write_gr(0x06,0x0E); /* map start at 0xb8000 */}/* since we are BIG endian, swap attributes and char */unsigned short vga_swap_short(unsigned short val){	unsigned short swapped;	swapped = ((val & 0xff)<<8) | ((val & 0xff00)>>8);	return swapped;}/**************************************************** * Routines usable Outside world *//* scolls the text up row rows */void video_scroll(int row){  unsigned short clear = ((unsigned short)video_attr << 8) | (' ');  unsigned short* addr16 = &((unsigned short *)video_fb)[(VGA_MAXROWS-row)*VGA_MAXCOLS];  int i;	clear=vga_swap_short(clear);  memcpy(video_fb, video_fb+row*(VGA_MAXCOLS*2), (VGA_MAXROWS-row)*(VGA_MAXCOLS*2));  for (i = 0 ; i < row * VGA_MAXCOLS ; i++)    addr16[i] = clear;  video_row-=row;  video_col=0;}unsigned long video_cursor(int col, int row){   unsigned short off = row * VGA_MAXCOLS + col ;   unsigned long saved = (video_col << 16) | (video_row & 0xFFFF);   video_col = col;   video_row = row;   vga_write_cr(CRTC_CURSH,(unsigned char)((off & 0xff00)>>8)); /* Cursor pos. high */   vga_write_cr(CRTC_CURSL,(unsigned char)(off & 0xff));          /* Cursor pos. low */   return saved;}void video_set_lxy(unsigned long lxy){  int col = (lxy >> 16) & 0xFFFF;  int row = lxy & 0xFFFF;  video_cursor(col,row);}unsigned long video_get_lxy(void){   return (video_col << 16) | (video_row & 0xFFFF);}void video_clear(void){  int i;  unsigned short clear = ((unsigned short)video_attr << 8) | (' ');  unsigned short * addr16 = (unsigned short * )video_fb;	clear=vga_swap_short(clear);  video_row = video_col = 0;  for (i = 0 ; i < 2000 ; i++) {    addr16[i] = clear;  }}void video_copy(unsigned short *buffer){  int i;  unsigned short * addr16 = (unsigned short * )video_fb;  for (i = 0 ; i < 2000 ; i++) {    buffer[i] = addr16[i];  }}void video_write(unsigned short *buffer){  int i;  unsigned short * addr16 = (unsigned short *)video_fb;  for (i = 0 ; i < 2000 ; i++) {    addr16[i] = buffer[i];  }}void video_putc(char ch){	char* addr;#if 0	char buf[48];	char buf1[16];	static int i=0;	sprintf(buf1,"%02X ",ch);	serial_puts(buf1);	buf[i++]=((ch>=0x20)&&(ch<=0x7f)) ? ch : '.';	if(i>=16) {		buf[i++]='\n';		buf[i]='\0';		i=0;		serial_puts("     ");		serial_puts(buf);	}#endif	switch (ch) {		case '\n':			video_col=0;			video_row++; 			break;		case '\r': 			video_col=0; 			break;		case '\t':      video_col += 8 - video_col % 8;      break;    case '\a':/*      beep(); */      break;    case '\b':      if(video_col)				video_col--;      else				return;      break;    default:      addr = video_fb + 2 * video_row * 80 + 2 * video_col;      *((char *)addr+1) = (char) video_attr;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品在线观看| 五月婷婷色综合| 视频一区在线播放| 国产福利视频一区二区三区| 日本久久电影网| 国产日韩视频一区二区三区| 午夜视频在线观看一区| 粉嫩绯色av一区二区在线观看| 欧美日韩精品一区二区三区四区| 国产精品乱人伦中文| 精品在线亚洲视频| 欧美色视频在线| 曰韩精品一区二区| 不卡一区中文字幕| 国产偷国产偷精品高清尤物| 麻豆精品一区二区三区| 欧美日韩国产片| 亚洲最新视频在线观看| av一区二区久久| 中文字幕第一区第二区| 国产精品一区一区| 欧美精品一区二区三区视频| 蜜桃av一区二区三区电影| 欧美色电影在线| 亚洲风情在线资源站| 色综合久久综合网| 最新欧美精品一区二区三区| 国产99久久久国产精品| 久久久久久免费网| 久久99精品国产麻豆婷婷洗澡| 欧美一区二区精品| 免费国产亚洲视频| 日韩午夜激情视频| 久久66热偷产精品| 久久久久国产精品厨房| 国产精品一区二区三区四区| 国产日韩精品一区二区三区在线| 国产麻豆9l精品三级站| 久久久久久综合| av网站一区二区三区| 亚洲精品日韩综合观看成人91| 欧美性做爰猛烈叫床潮| 午夜视频在线观看一区| 欧美一卡在线观看| 美国av一区二区| 久久久久久久久久久久久女国产乱| 国产一区二区三区| 国产精品欧美久久久久无广告| 91在线播放网址| 亚洲制服欧美中文字幕中文字幕| 7777精品伊人久久久大香线蕉经典版下载 | 欧美在线观看视频一区二区三区| 亚洲精品你懂的| 欧美人牲a欧美精品| 精品一二线国产| 一区二区三区在线免费观看| 在线一区二区三区四区五区 | 欧美日韩在线一区二区| 奇米精品一区二区三区在线观看 | 欧美一级二级三级蜜桃| 久久精品国产久精国产| 欧美国产精品中文字幕| 欧美自拍偷拍午夜视频| 久久成人免费网站| 最新日韩av在线| 欧美一卡二卡三卡| 成人性生交大片免费看在线播放 | 欧美日韩一级大片网址| 国内精品视频666| 亚洲激情网站免费观看| 欧美一区二区大片| av毛片久久久久**hd| 日韩电影在线一区二区三区| 国产欧美视频一区二区| 在线免费观看日本欧美| 韩国精品主播一区二区在线观看| 国产精品久久久久久一区二区三区| 在线视频一区二区免费| 久久国产成人午夜av影院| 亚洲视频在线一区| 精品国产伦一区二区三区免费| 99国产精品久久| 九九国产精品视频| 亚洲图片自拍偷拍| 国产精品久久久一区麻豆最新章节| 欧美日韩一卡二卡三卡 | 精彩视频一区二区三区| 一区二区三区中文字幕| 久久精品男人天堂av| 欧美视频一区二| 成人97人人超碰人人99| 久久狠狠亚洲综合| 日韩在线一区二区| 亚洲激情六月丁香| 国产欧美日韩精品在线| 精品免费国产一区二区三区四区| 91国在线观看| 97久久精品人人爽人人爽蜜臀| 久久66热re国产| 免费精品视频在线| 日韩电影在线一区| 日韩精品国产欧美| 亚洲高清视频的网址| 国产精品成人免费| 国产欧美一区在线| 久久久久久日产精品| 精品区一区二区| 欧美xxxxxxxx| 精品久久久影院| 精品美女在线观看| 亚洲精品一区二区三区99| 日韩一区国产二区欧美三区| 91精品国产综合久久国产大片| 欧美三级视频在线播放| 欧美四级电影在线观看| 在线中文字幕一区| 欧美区在线观看| 日韩免费视频线观看| 欧美va亚洲va香蕉在线| 26uuu色噜噜精品一区二区| 久久综合九色综合欧美亚洲| 久久影音资源网| 国产精品女同一区二区三区| 国产精品色哟哟| 亚洲精品欧美在线| 视频在线在亚洲| 精品一区在线看| 粉嫩绯色av一区二区在线观看| 成人美女视频在线看| 91视频com| 欧美人牲a欧美精品| 亚洲精品一区在线观看| 欧美国产视频在线| 亚洲免费色视频| 偷拍一区二区三区| 国产精品一区三区| 91在线国产观看| 91麻豆精品国产91久久久久久| 欧美sm极限捆绑bd| 欧美激情自拍偷拍| 亚洲一区二区三区爽爽爽爽爽| 奇米在线7777在线精品| 国产精品88888| 91成人在线观看喷潮| 欧美不卡一区二区三区四区| 国产精品久久久久久亚洲毛片| 亚洲一区二区三区自拍| 精品亚洲欧美一区| 91女人视频在线观看| 欧美理论片在线| 国产午夜精品一区二区三区嫩草 | 欧美亚洲一区二区在线| 日韩一区二区三区免费看| 久久久精品欧美丰满| 亚洲成在线观看| 国产a精品视频| 欧美一二区视频| 一区二区三区在线视频免费观看| 日韩精品免费专区| 91免费在线播放| 国产亚洲欧美激情| 性做久久久久久| 91蜜桃在线观看| 欧美成va人片在线观看| 亚洲午夜精品网| 成人av动漫在线| 久久蜜桃av一区二区天堂 | 欧美一区二区在线视频| 国产精品嫩草99a| 久久99精品一区二区三区三区| 欧美午夜理伦三级在线观看| 久久久久久黄色| 久久成人免费网站| 欧美精品视频www在线观看 | 欧美无乱码久久久免费午夜一区 | 亚洲18影院在线观看| heyzo一本久久综合| 精品国产精品网麻豆系列| 亚洲电影一区二区三区| www.成人在线| 久久精品人人做人人综合| 日韩成人一级大片| 欧美亚洲国产bt| 一区二区高清免费观看影视大全 | 亚洲免费在线电影| 成人午夜电影小说| 久久久影视传媒| 精品在线播放免费| 欧美成人bangbros| 激情综合网av| 日韩精品一区国产麻豆| 奇米精品一区二区三区四区| 在线不卡一区二区| 午夜精品一区二区三区三上悠亚| 欧美综合一区二区| 亚洲久本草在线中文字幕| 99精品在线免费| 亚洲欧洲日韩av| 在线精品视频免费观看| 一区二区三区在线免费视频|