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

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

?? terminal.c

?? ReactOS是一些高手根據Windows XP的內核編寫出的類XP。內核實現機理和API函數調用幾乎相同。甚至可以兼容XP的程序。喜歡研究系統內核的人可以看一看。
?? C
字號:
/*++

Copyright (c) 1998-2001 Klaus P. Gerlicher

Module Name:

    term韓al.c

Abstract:

    serial terminal for pICE headless mode

Environment:

    User mode only

Author:

    Klaus P. Gerlicher

Revision History:

    23-Jan-2001:	created

Copyright notice:

  This file may be distributed under the terms of the GNU Public License.

--*/
#if 0 //ei not ready
#include "stdinc.h"
#include <curses.h>


#define CONSOLE_WIDTH (80)
#define CONSOLE_HEIGHT (25)

USHORT major_version=0xFFFF,minor_version=0xFFFF,build_number=0xFFFF;

USHORT g_attr = 0;

USHORT usCurX,usCurY,xSize,ySize;

USHORT foreground_color_map[]=
{
};

USHORT background_color_map[]=
{
};


int fd_comm;
struct termios oldtio;

//************************************************************************
// CheckSum()
//
//************************************************************************
UCHAR CheckSum(LPSTR p,ULONG Len)
{
	UCHAR ucCheckSum = 0;
	ULONG i;
	for(i=0;i<Len;i++)
	{
		ucCheckSum ^= *p++;
        ucCheckSum += 1;
	}

	return ucCheckSum;
}

///************************************************************************
// ReadByte()
//
///************************************************************************
BOOLEAN ReadByte(PUCHAR pc)
{
    return (read(fd_comm,pc,1) > 0);
}

///************************************************************************
// SendByte()
//
///************************************************************************
BOOLEAN SendByte(UCHAR c)
{
    return (write(fd_comm,&c,1) > 0);
}


///************************************************************************
// ReadPacket()
//
///************************************************************************
PSERIAL_PACKET ReadPacket(void)
{
    ULONG i;
    PSERIAL_PACKET p;
    SERIAL_PACKET_HEADER header;
    PUCHAR pHeaderRaw,pData;
    char temp[256];
    ULONG ulCheckSum;

    // read a packet header
    pHeaderRaw = (PUCHAR)&header;
    for(i=0;i<sizeof(SERIAL_PACKET_HEADER);i++)
    {
//        //printf("reading()\n");
        if(! ReadByte(pHeaderRaw))
        {
  //          //printf("no header byte read!\n");
            return NULL;
        }

        pHeaderRaw++;
    }

    //printf("received header!\n");

    ulCheckSum = header.packet_header_chksum;
    header.packet_header_chksum = 0;

    if(ulCheckSum != CheckSum((PUCHAR)&header,sizeof(SERIAL_PACKET_HEADER)) )
    {
        //printf("header checksum mismatch!\n");
        tcflush(fd_comm, TCIFLUSH);
        return NULL;
    }

    p = malloc(sizeof(SERIAL_PACKET_HEADER) + header.packet_size);
    if(!p)
    {
        //printf("out of memory!\n");
        return NULL;
    }
    PICE_memcpy(p,&header,sizeof(SERIAL_PACKET_HEADER));

    sprintf(temp,"size %X chksum %x\n",header.packet_size,header.packet_chksum);
    //printf(temp);

    // read the attached data
    pData = (PUCHAR)p + sizeof(header);
    for(i=0;i<header.packet_size;i++)
    {
        if(! ReadByte(pData))
        {
            //printf("no data byte read!\n");
            return NULL;
        }

        pData++;
    }

    //printf("received data!\n");

    pData = (PUCHAR)p + sizeof(header);
    if(header.packet_chksum != CheckSum(pData,header.packet_size))
    {
        free(p);
        p = NULL;
        //printf("data checksum mismatch!\n");
        return NULL;
    }

    while(!SendByte(ACK));

    return p;
}

///************************************************************************
// SendPacket()
//
///************************************************************************
BOOLEAN SendPacket(PSERIAL_PACKET p)
{
    return TRUE;
}

void DeletePacket(PSERIAL_PACKET p)
{
    free(p);
}

//************************************************************************
// SetupSerial()
//
//************************************************************************
BOOLEAN SetupSerial(ULONG port,ULONG baudrate)
{
    struct termios newtio;
    char* ports[]={"/dev/ttyS0","/dev/ttyS1","/dev/ttyS2","/dev/ttyS3"};

    /*
    Open modem device for reading and writing and not as controlling tty
    because we don't want to get killed if linenoise sends CTRL-C.
    */
    //printf("opening comm %s\n",ports[port-1]);
    fd_comm = open(ports[port-1], O_RDWR | O_NOCTTY);
    if (fd_comm <0)
    {
        perror(ports[port-1]);
        exit(-1);
    }

    //printf("tcgetattr()\n");
    tcgetattr(fd_comm,&oldtio); /* save current modem settings */

                           /*
                           Set bps rate and hardware flow control and 8n1 (8bit,no parity,1 stopbit).
                           Also don't hangup automatically and ignore modem status.
                           Finally enable receiving characters.
    */
    newtio.c_cflag = baudrate | CS8 | CLOCAL | CREAD;

    /*
    Ignore bytes with parity errors and make terminal raw and dumb.
    */
    newtio.c_iflag = IGNPAR;

    /*
    Raw output.
    */
    newtio.c_oflag = 0;

    /*
    Don't echo characters because if you connect to a host it or your
    modem will echo characters for you. Don't generate signals.
    */
    newtio.c_lflag = 0;

    /* blocking read until 1 char arrives */
    newtio.c_cc[VMIN]=0;
    newtio.c_cc[VTIME]=0;

    /* now clean the modem line and activate the settings for modem */
    //printf("tcflush()\n");
    tcflush(fd_comm, TCIFLUSH);
    //printf("tcsetattr()\n");
    tcsetattr(fd_comm,TCSANOW,&newtio);

    // NCURSES
    initscr();
    refresh();

    return TRUE;
}

//************************************************************************
// CloseSerial()
//
//************************************************************************
void CloseSerial(void)
{
    // NCURSES
    endwin();

    tcsetattr(fd_comm,TCSANOW,&oldtio); /* save current modem settings */
    close(fd_comm);
}

//************************************************************************
// ClrLine()
//
//************************************************************************
void ClrLine(UCHAR line)
{
    move(line,0);
}

//************************************************************************
// InvertLine()
//
//************************************************************************
void InvertLine(UCHAR line)
{
    move(line,0);
}

//************************************************************************
// SetCursorPosition()
//
//************************************************************************
void SetCursorPosition(USHORT x, USHORT y)
{
    move(y,x);
}

//************************************************************************
// GetCursorPosition()
//
//************************************************************************
void GetCursorPosition(PUSHORT px,PUSHORT py)
{
}

//************************************************************************
// SetCursorState()
//
//************************************************************************
void SetCursorState(UCHAR c)
{
}


//************************************************************************
// Print()
//
//************************************************************************
void Print(LPSTR p,USHORT x,USHORT y)
{
    // save the cursor pos
    GetCursorPosition(&usCurX,&usCurY);

    if(y<25)
    {
        SetCursorPosition(x,y);
        refresh();

        addstr(p);
        refresh();
        SetCursorPosition(usCurX,usCurY);
    }
}

//************************************************************************
// ProcessPacket()
//
//************************************************************************
void ProcessPacket(PSERIAL_PACKET p)
{
    ULONG ulSize;
    PSERIAL_DATA_PACKET pData;

    pData = (PSERIAL_DATA_PACKET)((PUCHAR)p + sizeof(SERIAL_PACKET_HEADER));
    ulSize = p->header.packet_size;

    switch(pData->type)
    {
        case PACKET_TYPE_CONNECT:
            {
                PSERIAL_DATA_PACKET_CONNECT pDataConnect = (PSERIAL_DATA_PACKET_CONNECT)pData;
                UCHAR i;

                for(i=0;i<ySize;i++)
                    ClrLine(i);

                SetCursorState(0);
                SetCursorPosition(0,0);
//                ResizeConsole(hConsole,pDataConnect->xsize,pDataConnect->ysize);
                xSize = pDataConnect->xsize;
                ySize = pDataConnect->ysize;
            }
            break;
        case PACKET_TYPE_CLRLINE:
            {
                PSERIAL_DATA_PACKET_CLRLINE pDataClrLine = (PSERIAL_DATA_PACKET_CLRLINE)pData;

                ClrLine(pDataClrLine->line);
            }
            break;
        case PACKET_TYPE_INVERTLINE:
            {
                PSERIAL_DATA_PACKET_INVERTLINE pDataInvertLine = (PSERIAL_DATA_PACKET_INVERTLINE)pData;

                InvertLine(pDataInvertLine->line);
            }
            break;
        case PACKET_TYPE_PRINT:
            {
                PSERIAL_DATA_PACKET_PRINT pDataPrint = (PSERIAL_DATA_PACKET_PRINT)pData;

                Print(pDataPrint->string,pDataPrint->x,pDataPrint->y);
            }
            break;
        case PACKET_TYPE_CURSOR:
            {
                PSERIAL_DATA_PACKET_CURSOR pDataCursor = (PSERIAL_DATA_PACKET_CURSOR)pData;

                SetCursorPosition(pDataCursor->x,pDataCursor->y);
                SetCursorState(pDataCursor->state);
            }
            break;
        case PACKET_TYPE_POLL:
            {
                PSERIAL_DATA_PACKET_POLL pDataPoll= (PSERIAL_DATA_PACKET_POLL)pData;

                if( (major_version != pDataPoll->major_version) ||
                    (minor_version != pDataPoll->minor_version) ||
                    (build_number != pDataPoll->build_number) )
                {
                    major_version = pDataPoll->major_version;
                    minor_version = pDataPoll->minor_version;
                    build_number  = pDataPoll->build_number;

//                    SetAppTitle();
                }

            }
            break;
        default:
            //printf("UNHANDLED\n");
            break;
    }
}

//************************************************************************
// DebuggerShell()
//
//************************************************************************
void DebuggerShell(void)
{
    PSERIAL_PACKET p;

    //printf("DebuggerShell()\n");
    for(;;)
    {
         p = ReadPacket();
         if(p)
         {
             ProcessPacket(p);
             DeletePacket(p);
         }
         else
         {
             usleep(100*1000);
         }
    }
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
678五月天丁香亚洲综合网| 91香蕉视频污在线| 日韩欧美你懂的| 久久精品国产一区二区三区免费看| 69堂精品视频| 捆绑调教一区二区三区| 久久久久国产精品人| 99天天综合性| 舔着乳尖日韩一区| 亚洲精品一区在线观看| 成人免费毛片片v| 一区二区三区视频在线观看| 911精品国产一区二区在线| 男人的j进女人的j一区| 日本一区免费视频| 色猫猫国产区一区二在线视频| 婷婷久久综合九色国产成人| 精品国产乱码久久久久久久久 | 欧美国产日本韩| 99国产精品国产精品久久| 午夜不卡av在线| 国产偷v国产偷v亚洲高清| 在线免费精品视频| 激情另类小说区图片区视频区| 中文字幕亚洲不卡| 欧美一区二区福利视频| 99re热视频这里只精品| 免费人成精品欧美精品| 中文字幕一区三区| 日韩色在线观看| 色猫猫国产区一区二在线视频| 麻豆精品一区二区综合av| 亚洲视频一区二区免费在线观看| 51午夜精品国产| 91小视频免费观看| 国产精品自拍毛片| 无码av免费一区二区三区试看 | 18欧美亚洲精品| 日韩欧美高清一区| 欧美自拍偷拍一区| 成人亚洲精品久久久久软件| 秋霞影院一区二区| 亚洲激情在线激情| 国产亚洲成aⅴ人片在线观看| 欧美精品丝袜久久久中文字幕| 不卡的av在线播放| 韩国精品主播一区二区在线观看 | 国产精品不卡在线观看| 日韩欧美高清dvd碟片| 欧美色图在线观看| 91在线一区二区三区| 国产麻豆成人精品| 久久国产精品第一页| 日韩精品福利网| 一区二区免费看| 综合久久久久久久| 欧美激情资源网| 久久青草欧美一区二区三区| 日韩一区二区在线播放| 欧美卡1卡2卡| 精品视频999| 在线免费观看日本欧美| 99精品久久只有精品| 成人激情免费电影网址| 国产精品18久久久| 国产在线不卡一区| 精品一区二区三区免费观看| 免费看欧美女人艹b| 日韩成人一级片| 国产精品私人自拍| 欧美一区二区成人6969| 欧美久久婷婷综合色| 欧美日韩精品欧美日韩精品一综合 | 欧美日本一区二区三区四区| 日本道色综合久久| 欧美性生活久久| 欧美日韩高清影院| 51精品秘密在线观看| 日韩精品在线网站| 久久综合狠狠综合| 久久精品综合网| 国产欧美日韩在线| 一色屋精品亚洲香蕉网站| 亚洲免费av网站| 天堂va蜜桃一区二区三区漫画版| 日韩综合小视频| 国产一区在线观看麻豆| 国产成人欧美日韩在线电影| 成人高清免费观看| 日本高清视频一区二区| 欧美日免费三级在线| 日韩丝袜情趣美女图片| 国产午夜精品在线观看| 国产精品日韩成人| 亚洲国产精品人人做人人爽| 日韩av在线免费观看不卡| 国产在线视频一区二区| av在线不卡免费看| 欧美日韩情趣电影| 欧美v日韩v国产v| 欧美国产禁国产网站cc| 亚洲国产一区二区在线播放| 蜜桃一区二区三区在线| 成人av动漫网站| 欧美日韩成人一区二区| 久久夜色精品国产欧美乱极品| 欧美激情一区二区三区全黄| 亚洲国产日韩在线一区模特| 毛片av一区二区| 99久久99久久免费精品蜜臀| 欧美日韩高清一区| 国产午夜精品一区二区三区视频| 亚洲精品中文在线观看| 久久99热这里只有精品| 97久久精品人人澡人人爽| 欧美一级夜夜爽| 国产精品二三区| 老司机精品视频导航| 一本色道**综合亚洲精品蜜桃冫 | 国产盗摄视频一区二区三区| 欧美午夜在线观看| 国产精品无圣光一区二区| 天使萌一区二区三区免费观看| 国产999精品久久久久久绿帽| 欧美色成人综合| 国产精品毛片久久久久久| 麻豆91小视频| 欧美系列日韩一区| 国产精品狼人久久影院观看方式| 久久精品国产亚洲a| 色综合久久88色综合天天6| 久久女同互慰一区二区三区| 丝瓜av网站精品一区二区| aaa亚洲精品| 久久久久国产一区二区三区四区| 日韩成人一级片| 欧洲精品一区二区| 亚洲天堂a在线| 成人性生交大片免费看在线播放| 日韩视频永久免费| 丝袜美腿高跟呻吟高潮一区| 在线日韩国产精品| 亚洲男人天堂一区| 国产成人午夜精品5599| 亚洲精品在线观看视频| 久国产精品韩国三级视频| 欧美日韩在线直播| 伊人色综合久久天天| 波多野结衣亚洲一区| 久久久99精品免费观看| 韩国v欧美v日本v亚洲v| 欧美一级电影网站| 免费观看一级欧美片| 欧美精品一级二级| 日韩中文字幕亚洲一区二区va在线 | 26uuu国产电影一区二区| 欧美a级理论片| 欧美一区二区三区视频在线观看| 亚洲成人综合在线| 欧美性感一区二区三区| 亚洲精品视频一区| 色综合久久综合网欧美综合网| 亚洲视频免费看| 91麻豆国产在线观看| 亚洲视频一区在线| 色噜噜久久综合| 五月婷婷综合在线| 欧美一区二区视频观看视频| 蜜臀av国产精品久久久久| 精品少妇一区二区三区在线播放 | 日本午夜一本久久久综合| 欧美日韩激情一区二区三区| 肉丝袜脚交视频一区二区| 日韩亚洲欧美成人一区| 韩国av一区二区三区四区| 国产日韩精品久久久| 成人av在线网| 亚洲国产一二三| 日韩欧美的一区| 国产乱码精品一品二品| 国产精品色哟哟| 色88888久久久久久影院野外| 亚洲一区二区精品视频| 3d动漫精品啪啪| 国内精品在线播放| 国产精品美女www爽爽爽| 色狠狠一区二区三区香蕉| 午夜国产精品一区| 久久蜜桃av一区精品变态类天堂| av一区二区三区黑人| 亚洲一区二区黄色| 欧美www视频| 色网站国产精品| 婷婷丁香久久五月婷婷| 久久免费视频色| 欧美亚州韩日在线看免费版国语版| 免费三级欧美电影| 亚洲国产成人私人影院tom| 欧美性xxxxxx少妇| 国产美女主播视频一区|