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

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

?? pc.c

?? UCOSII的PORT代碼。真是麻煩呀
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*   *********************************************************************************************************   *                               PC SUPPORT FUNCTIONS for __GNUC__ (WIN32 and LINUX)   *   *                          (c) Copyright 2004-2005, Werner.Zimmermann@fht-esslingen.de   *                      (Functions similar to the 80x86 Real Mode port by Jean J. Labrosse)   *                                           All Rights Reserved   *   * File : PC.C   * By   : Werner Zimmermann   ********************************************************************************************************* */#include "includes.h"BOOLEAN lock=FALSE;extern void (*interruptTable[])();/*   *********************************************************************************************************   *                                        CHECK IF A KEY WAS HIT   **********************************************************************************************************/struct termios oldKbdMode;void keyboardCooked(void){   tcsetattr(STDIN_FILENO, TCSANOW, &oldKbdMode);}void keyboardRaw(void){   static char init=0;    struct termios newKbdMode;    if (init)    	return;    tcgetattr(0, &oldKbdMode);    memcpy(&newKbdMode, &oldKbdMode, sizeof(struct termios));    newKbdMode.c_lflag &= ~(ICANON | ECHO);    newKbdMode.c_cc[VTIME]=0;    newKbdMode.c_cc[VMIN]=1;    tcsetattr(0, TCSANOW, &newKbdMode);    atexit(keyboardCooked);    init=1;}int kbhit(void){   struct timeval tv;    fd_set readFd;    keyboardRaw();    tv.tv_sec=0;    tv.tv_usec=0;    FD_ZERO(&readFd);    FD_SET(STDIN_FILENO, &readFd);    select(1, &readFd, NULL, NULL, &tv);    if (FD_ISSET(STDIN_FILENO, &readFd))    	return 1;    else    	return 0;}/*   *********************************************************************************************************   *                                        Translate colors   **********************************************************************************************************/void setColor(INT8U color){   switch (color & 0xF0)				//Foreground colors    {  	case DISP_FGND_BLACK:	printf("\033[30m"); break;	case DISP_FGND_RED:     printf("\033[31m"); break;	case DISP_FGND_GREEN:   printf("\033[32m"); break;	case DISP_FGND_YELLOW:  printf("\033[33m"); break;	case DISP_FGND_BLUE: 	printf("\033[34m"); break;	case DISP_FGND_MAGENTA: printf("\033[35m"); break;	case DISP_FGND_CYAN:    printf("\033[36m"); break;	case DISP_FGND_WHITE:   printf("\033[37m"); break;	case DISP_FGND_GRAY:    printf("\033[30m"); break; //black, gray not implemented    	default:		printf("\033[30m"); break;	//black    }    switch (color & 0x0F)				//Background colors    {	case DISP_BGND_BLACK:   printf("\033[40m"); break;	case DISP_BGND_RED:     printf("\033[41m"); break;	case DISP_BGND_GREEN:   printf("\033[42m"); break;	case DISP_BGND_YELLOW:  printf("\033[43m"); break;	case DISP_BGND_BLUE:    printf("\033[44m"); break;        case DISP_BGND_MAGENTA: printf("\033[45m"); break;	case DISP_BGND_CYAN:    printf("\033[46m"); break;	case DISP_BGND_WHITE:   printf("\033[47m"); break;	case DISP_BGND_GRAY:    printf("\033[47m"); break;	//white, gray not implemented	case DISP_BGND_LIGHT_GRAY:printf("\033[47m"); break;	//white, gray not implemented	default:		printf("\033[47m"); break;	//white    }}/*   *********************************************************************************************************   *                                        Move cursor   **********************************************************************************************************/void moveCursor(INT8U x, INT8U y){    printf("\033[%u;%uH", y+1, x+1);}/*   *********************************************************************************************************   *                                        CHECK AND GET KEYBOARD KEY   *   * Description: This function checks to see if a key has been pressed at the keyboard and returns TRUE if   *              so.  Also, if a key is pressed, the key is read and copied where the argument is pointing   *              to.   *   * Arguments  : c     is a pointer to where the read key will be stored.   *   * Returns    : TRUE  if a key was pressed   *              FALSE otherwise   ********************************************************************************************************* */BOOLEAN PC_GetKey(INT16S *c){    if (PC_CHECK_RECURSIVE_CALLS && lock)			// Check and avoid recursive calls    {   perror("Recursive call in PC_GetKey");        exit(-1);    } else if (lock)    {	return FALSE;    } else    {   lock = TRUE;    }    if (kbhit())						// See if a key has been pressed    {   *c = (INT16S) getchar();                                // Get key pressed        lock = FALSE;        return (TRUE);    } else    {   *c = 0x00;                                              // No key pressed        lock = FALSE;        return (FALSE);    }}/*   *********************************************************************************************************   *                                 DISPLAY A STRING  AT 'X' & 'Y' COORDINATE   *   * Description : This function writes an ASCII string anywhere on the PC's screen.  This function writes   *               directly to video RAM instead of using the BIOS for speed reasons.  It assumed that the   *               video adapter is VGA compatible.  Video RAM starts at absolute address 0x000B8000.  Each   *               character on the screen is composed of two bytes: the ASCII character to appear on the   *               screen followed by a video attribute.  An attribute of 0x07 displays the character in   *               WHITE with a black background.   *   * Arguments   : x      corresponds to the desired column on the screen.  Valid columns numbers are from   *                      0 to 79.  Column 0 corresponds to the leftmost column.   *               y      corresponds to the desired row on the screen.  Valid row numbers are from 0 to 24.   *                      Line 0 corresponds to the topmost row.   *               s      Is the ASCII string to display.  You can also specify a string containing   *                      characters with numeric values higher than 128.  In this case, special character   *                      based graphics will be displayed.   *               color  specifies the foreground/background color to use (see PC.H for available choices)   *   * Returns     : None   ********************************************************************************************************* */void PC_DispStr(INT8U x, INT8U y, INT8U *s, INT8U color){#ifdef DEBUG_PC    printf("PC_DispStr: %s\n", s);    return;#endif    if (PC_CHECK_RECURSIVE_CALLS && lock)			// Check and avoid recursive calls    {   perror("Recursive call in PC_DispStr");        exit(-1);    } else if (lock)    {	return;    } else    {   lock = TRUE;    }    if ((x>79) || (y>24))					// Check for valid cursor position        perror("Invalid screen position in PC_DispStr()");    moveCursor(x, y);						// Move cursor to x, y    setColor(color);						// Set foreground/background color    puts(s);							// Display text string    lock = FALSE;}/*   *********************************************************************************************************   *                           DISPLAY A SINGLE CHARACTER AT 'X' & 'Y' COORDINATE   *   * Description : This function writes a single character anywhere on the PC's screen.  This function   *               writes directly to video RAM instead of using the BIOS for speed reasons.  It assumed   *               that the video adapter is VGA compatible.  Video RAM starts at absolute address   *               0x000B8000.  Each character on the screen is composed of two bytes: the ASCII character   *               to appear on the screen followed by a video attribute.  An attribute of 0x07 displays   *               the character in WHITE with a black background.   *   * Arguments   : x      corresponds to the desired column on the screen.  Valid columns numbers are from   *                      0 to 79.  Column 0 corresponds to the leftmost column.   *               y      corresponds to the desired row on the screen.  Valid row numbers are from 0 to 24.   *                      Line 0 corresponds to the topmost row.   *               c      Is the ASCII character to display.  You can also specify a character with a   *                      numeric value higher than 128.  In this case, special character based graphics   *                      will be displayed.   *               color  specifies the foreground/background color to use (see PC.H for available choices)   *   * Returns     : None   ********************************************************************************************************* */void PC_DispChar(INT8U x, INT8U y, INT8U c, INT8U color){#ifdef DEBUG_PC    printf("PC_DispChar: %c\n", c);    return;#endif    if (PC_CHECK_RECURSIVE_CALLS && lock)			// Check and avoid recursive calls    {   perror("Recursive call in PC_DispChar");        exit(-1);    } else if (lock)    {	return;    } else    {   lock = TRUE;    }    if ((x>79) || (y>24))					// Check for valid cursor position        perror("Invalid screen position in PC_DispChar()");    moveCursor(x, y);						// Move cursor to x, y    setColor(color);						// Set foreground/background color    putchar(c);							// Display character

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区久激情瑜伽 | 在线综合亚洲欧美在线视频| 亚洲女同女同女同女同女同69| 成人av在线观| 亚洲免费在线播放| 欧美日韩亚洲不卡| 国产一区二区调教| 国产精品欧美精品| 欧美午夜理伦三级在线观看| 青草国产精品久久久久久| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 亚洲丰满少妇videoshd| 日韩一区二区影院| 成人精品免费看| 亚洲一区国产视频| wwwwxxxxx欧美| 色偷偷一区二区三区| 日韩高清一区在线| 久久久精品欧美丰满| 日本电影欧美片| 经典三级一区二区| 亚洲综合成人在线视频| 久久亚洲一区二区三区明星换脸| 99久久精品情趣| 日韩激情在线观看| 1区2区3区欧美| 欧美xxxx老人做受| 在线亚洲人成电影网站色www| 另类专区欧美蜜桃臀第一页| 亚洲三级在线免费观看| 国产精品私人影院| 51午夜精品国产| 9l国产精品久久久久麻豆| 秋霞午夜av一区二区三区| 国产精品网站在线播放| 日韩一区二区免费视频| av一区二区三区| 国产在线一区观看| 日韩精品一卡二卡三卡四卡无卡| 国产精品久久久久久一区二区三区| 欧美精品一级二级三级| 91网上在线视频| 国产成a人亚洲精品| 蜜桃传媒麻豆第一区在线观看| 国产精品麻豆视频| 久久久久久久久伊人| 91精品欧美一区二区三区综合在| av毛片久久久久**hd| 经典三级在线一区| 奇米影视7777精品一区二区| 亚洲美女免费在线| 国产精品福利一区| 国产欧美精品一区二区色综合 | 亚洲欧洲成人精品av97| 26uuu精品一区二区在线观看| 欧美日韩国产一级| 色狠狠桃花综合| 99v久久综合狠狠综合久久| 国产一区视频导航| 久久99精品视频| 偷拍亚洲欧洲综合| 亚洲一二三专区| 亚洲制服丝袜av| 一区二区三区中文在线观看| 成人免费小视频| 亚洲三级在线播放| 中文字幕中文字幕中文字幕亚洲无线| 精品国产一区二区三区四区四 | 国产在线播放一区三区四| 蜜臀久久久久久久| 日本不卡视频在线| 日韩高清在线观看| 日韩电影在线免费看| 免费在线看成人av| 久久国产福利国产秒拍| 国模娜娜一区二区三区| 国产乱码字幕精品高清av| 久久精品国产精品亚洲精品| 久久精品国产99| 精彩视频一区二区三区| 国内久久婷婷综合| 国产精品影视在线观看| 国产高清精品网站| 成人av电影在线| 色94色欧美sute亚洲线路二| 欧美色图在线观看| 欧美一区二区成人| 久久中文字幕电影| 国产精品美女一区二区在线观看| 中文字幕一区三区| 亚洲一本大道在线| 日本不卡1234视频| 国产成人aaa| 91成人国产精品| 日韩一区二区在线观看视频| 久久久久国色av免费看影院| 日韩一区日韩二区| 亚洲国产裸拍裸体视频在线观看乱了 | 国产精品77777| 91麻豆蜜桃一区二区三区| 欧美日韩国产综合一区二区三区 | 91福利精品第一导航| 日韩一区和二区| 亚洲国产精品99久久久久久久久 | 亚洲欧洲精品成人久久奇米网| 一区二区三区在线视频免费| 免费人成精品欧美精品| 成人永久免费视频| 欧美日韩一区中文字幕| 久久久综合精品| 亚洲一区二区精品3399| 国内成人自拍视频| 在线观看成人小视频| 精品国产91乱码一区二区三区| 亚洲视频你懂的| 久久国产福利国产秒拍| 91成人免费在线| 国产日韩精品一区二区三区在线| 亚洲综合av网| 国产1区2区3区精品美女| 欧美日韩成人高清| 中文字幕五月欧美| 久久国产精品99精品国产| 色婷婷久久一区二区三区麻豆| 日韩三级在线免费观看| 一区二区三区 在线观看视频| 国模冰冰炮一区二区| 欧美日韩国产色站一区二区三区| 国产女主播视频一区二区| 日韩精品电影在线观看| 色老综合老女人久久久| 中文字幕av资源一区| 裸体一区二区三区| 欧美喷潮久久久xxxxx| 亚洲色图欧美偷拍| 国产乱对白刺激视频不卡 | 欧美成人伊人久久综合网| 亚洲午夜三级在线| 91亚洲精品乱码久久久久久蜜桃| 精品国产乱码久久久久久影片| 亚洲成在人线在线播放| 99精品国产一区二区三区不卡| 久久免费视频色| 久久99热国产| 日韩欧美一级二级三级久久久| 偷拍与自拍一区| 欧美日韩在线综合| 亚洲另类在线制服丝袜| 99久久er热在这里只有精品66| 久久久777精品电影网影网| 久久精品国产免费| 日韩欧美一二区| 日本vs亚洲vs韩国一区三区二区 | 艳妇臀荡乳欲伦亚洲一区| 99热国产精品| 综合色中文字幕| 99视频精品在线| 亚洲精品久久嫩草网站秘色| av一区二区三区四区| 亚洲欧洲日韩综合一区二区| 不卡一区二区中文字幕| 国产精品久久毛片| 91在线精品秘密一区二区| 亚洲同性同志一二三专区| 色综合夜色一区| 亚洲一区在线观看免费| 精品污污网站免费看| 午夜精品久久久久久不卡8050| 欧美视频在线一区| 丝袜亚洲精品中文字幕一区| 在线成人免费观看| 奇米一区二区三区| 久久久夜色精品亚洲| 国产凹凸在线观看一区二区| 久久免费视频色| av在线这里只有精品| 亚洲一区二区三区中文字幕在线| 欧美色网一区二区| 麻豆专区一区二区三区四区五区| 欧美大片一区二区| 丁香一区二区三区| 亚洲男人天堂一区| 欧美日本在线观看| 激情文学综合插| 国产精品久久网站| 欧美日韩在线观看一区二区 | 亚洲第一综合色| 日韩午夜中文字幕| 国产精品123区| 亚洲激情av在线| 欧美一卡二卡三卡| 国产成人无遮挡在线视频| 亚洲欧美一区二区三区久本道91| 欧美日韩综合色| 久久精品国产一区二区| 亚洲欧洲精品成人久久奇米网| 欧美日韩精品高清| 国产成人在线观看| 亚洲尤物在线视频观看| 久久久亚洲午夜电影|