⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serial.c

📁 Linux下的类似softice的调试工具
💻 C
📖 第 1 页 / 共 2 页
字号:
//*************************************************************************// SetBackgroundColorVga()////*************************************************************************void SetBackgroundColorSerial(ECOLORS col){    eBackgroundColor = col;}//*************************************************************************// PrintGrafSerial()////*************************************************************************void PrintGrafSerial(ULONG x,ULONG y,UCHAR c){    // put this into memory     pScreenBufferSerial[y*GLOBAL_SCREEN_WIDTH + x] = c;    // put this into cache    if(ulFlushBufferPos == 0)    {        g_x = x;        g_y = y;    }    flush_buffer[ulFlushBufferPos++] = c;}//*************************************************************************// FlushSerial()////*************************************************************************void FlushSerial(void){    PSERIAL_DATA_PACKET_PRINT pPrint;    PSERIAL_PACKET p;    pPrint = (PSERIAL_DATA_PACKET_PRINT)packet;    pPrint->type = PACKET_TYPE_PRINT;    pPrint->x = g_x;    pPrint->y = g_y;    pPrint->fgcol = eForegroundColor;    pPrint->bkcol = eBackgroundColor;    flush_buffer[ulFlushBufferPos++] = 0;    strcpy(pPrint->string,flush_buffer);    ulFlushBufferPos = 0;    p = AssemblePacket((PUCHAR)pPrint,sizeof(SERIAL_DATA_PACKET_PRINT)+strlen(flush_buffer));    SendPacket(p);}//*************************************************************************// ShowCursorSerial()//// show hardware cursor//*************************************************************************void ShowCursorSerial(void){    PSERIAL_DATA_PACKET_CURSOR pCursor;    PSERIAL_PACKET p;    ENTER_FUNC();	    bCursorEnabled = TRUE;    pCursor = (PSERIAL_DATA_PACKET_CURSOR)packet;    pCursor->type = PACKET_TYPE_CURSOR;    pCursor->state = (UCHAR)TRUE;    pCursor->x = (UCHAR)wWindow[OUTPUT_WINDOW].usCurX;    pCursor->y = (UCHAR)wWindow[OUTPUT_WINDOW].usCurY;    p = AssemblePacket((PUCHAR)pCursor,sizeof(SERIAL_DATA_PACKET_CURSOR));    SendPacket(p);    LEAVE_FUNC();}//*************************************************************************// HideCursorSerial()//// hide hardware cursor//*************************************************************************void HideCursorSerial(void){    PSERIAL_DATA_PACKET_CURSOR pCursor;    PSERIAL_PACKET p;    ENTER_FUNC();	    bCursorEnabled = FALSE;    pCursor = (PSERIAL_DATA_PACKET_CURSOR)packet;    pCursor->type = PACKET_TYPE_CURSOR;    pCursor->state = (UCHAR)TRUE;    p = AssemblePacket((PUCHAR)pCursor,sizeof(SERIAL_DATA_PACKET_CURSOR));    SendPacket(p);    LEAVE_FUNC();}//*************************************************************************// CopyLineToSerial()//// copy a line from src to dest//*************************************************************************void CopyLineToSerial(USHORT dest,USHORT src){    NOT_IMPLEMENTED();}//*************************************************************************// InvertLineSerial()//// invert a line on the screen//*************************************************************************void InvertLineSerial(ULONG line){    PSERIAL_DATA_PACKET_INVERTLINE pInvertLine;    PSERIAL_PACKET p;    pInvertLine = (PSERIAL_DATA_PACKET_INVERTLINE)packet;    pInvertLine->type = PACKET_TYPE_INVERTLINE;    pInvertLine->line = line;    p = AssemblePacket((PUCHAR)pInvertLine,sizeof(SERIAL_DATA_PACKET_INVERTLINE));    SendPacket(p);}//*************************************************************************// HatchLineSerial()//// hatches a line on the screen//*************************************************************************void HatchLineSerial(ULONG line){    NOT_IMPLEMENTED();}//*************************************************************************// ClrLineSerial()//// clear a line on the screen//*************************************************************************void ClrLineSerial(ULONG line){    PSERIAL_DATA_PACKET_CLRLINE pClrLine;    PSERIAL_PACKET p;    pClrLine = (PSERIAL_DATA_PACKET_CLRLINE)packet;    pClrLine->type = PACKET_TYPE_CLRLINE;    pClrLine->fgcol = eForegroundColor;    pClrLine->bkcol = eBackgroundColor;    pClrLine->line = line;    pClrLine->count = 1;    p = AssemblePacket((PUCHAR)pClrLine,sizeof(SERIAL_DATA_PACKET_CLRLINE));    SendPacket(p);}//*************************************************************************// ClrLineSerial()//// clear a line on the screen//*************************************************************************void ClrLinesSerial(ULONG line,ULONG count){    PSERIAL_DATA_PACKET_CLRLINE pClrLine;    PSERIAL_PACKET p;    pClrLine = (PSERIAL_DATA_PACKET_CLRLINE)packet;    pClrLine->type = PACKET_TYPE_CLRLINE;    pClrLine->fgcol = eForegroundColor;    pClrLine->bkcol = eBackgroundColor;    pClrLine->line = line;    pClrLine->count = count;    p = AssemblePacket((PUCHAR)pClrLine,sizeof(SERIAL_DATA_PACKET_CLRLINE));    SendPacket(p);}//*************************************************************************// PrintLogoSerial()////*************************************************************************void PrintLogoSerial(BOOLEAN bShow){    NOT_IMPLEMENTED();}//*************************************************************************// PrintCursorSerial()//// emulate a blinking cursor block//*************************************************************************void PrintCursorSerial(BOOLEAN bForce){    NOT_IMPLEMENTED();}//*************************************************************************// SaveGraphicsStateSerial()////*************************************************************************void SaveGraphicsStateSerial(void){    // not implemented}//*************************************************************************// RestoreGraphicsStateSerial()////*************************************************************************void RestoreGraphicsStateSerial(void){    // not implemented}// INPUT handlers//*************************************************************************// GetKeyPolledSerial()////*************************************************************************UCHAR GetKeyPolledSerial(void){    UCHAR ucResult;    PSERIAL_DATA_PACKET_POLL pPoll;    PSERIAL_PACKET p;    pPoll =                 (PSERIAL_DATA_PACKET_POLL)packet;    pPoll->type             = PACKET_TYPE_POLL;    pPoll->major_version    = PICE_MAJOR_VERSION;    pPoll->minor_version    = PICE_MINOR_VERSION;    pPoll->build_number     = PICE_BUILD;             p = AssemblePacket((PUCHAR)pPoll,sizeof(SERIAL_DATA_PACKET_POLL));    SendPacket(p);    ucResult = ucLastKeyRead;    ucLastKeyRead = 0;    return ucResult;}//*************************************************************************// FlushKeyboardQueueSerial()////*************************************************************************void FlushKeyboardQueueSerial(void){    // not implemented}//*************************************************************************// Connect()////*************************************************************************BOOLEAN Connect(USHORT xSize,USHORT ySize){    PSERIAL_DATA_PACKET_CONNECT pConnect;    PSERIAL_PACKET p;    pConnect = (PSERIAL_DATA_PACKET_CONNECT)packet;    pConnect->type = PACKET_TYPE_CONNECT;    pConnect->xsize = xSize;    pConnect->ysize = ySize;    p = AssemblePacket((PUCHAR)pConnect,sizeof(SERIAL_DATA_PACKET_CONNECT));    return SendPacketTimeout(p);}//*************************************************************************// ConsoleInitSerial()//// init terminal screen//*************************************************************************BOOLEAN ConsoleInitSerial(void) {	BOOLEAN bResult = FALSE;    ENTER_FUNC();    ohandlers.CopyLineTo            = CopyLineToSerial;    ohandlers.PrintGraf             = PrintGrafSerial;    ohandlers.Flush                 = FlushSerial;    ohandlers.ClrLine               = ClrLineSerial;    ohandlers.InvertLine            = InvertLineSerial;    ohandlers.HatchLine             = HatchLineSerial;    ohandlers.PrintLogo             = PrintLogoSerial;    ohandlers.PrintCursor           = PrintCursorSerial;    ohandlers.SaveGraphicsState     = SaveGraphicsStateSerial;    ohandlers.RestoreGraphicsState  = RestoreGraphicsStateSerial;    ohandlers.ShowCursor            = ShowCursorSerial;    ohandlers.HideCursor            = HideCursorSerial;    ohandlers.SetForegroundColor    = SetForegroundColorSerial;    ohandlers.SetBackgroundColor    = SetBackgroundColorSerial;    ihandlers.GetKeyPolled          = GetKeyPolledSerial;    ihandlers.FlushKeyboardQueue    = FlushKeyboardQueueSerial;    SetWindowGeometry(wWindowSerial);    GLOBAL_SCREEN_WIDTH = 80;    GLOBAL_SCREEN_HEIGHT = 60;	pScreenBufferSerial = PICE_HeapAlloc(FRAMEBUFFER_SIZE);     if(pScreenBufferSerial)    {	    bResult = TRUE;        EmptyRingBuffer();        SetupSerial(2,115200);        // connect to terminal, if none's there, we give up        bResult = Connect(GLOBAL_SCREEN_WIDTH,GLOBAL_SCREEN_HEIGHT);        if(bResult)        {            GetKeyPolledSerial();        }    }    LEAVE_FUNC();	return bResult;}//*************************************************************************// ConsoleShutdownSerial()//// exit terminal screen//*************************************************************************void ConsoleShutdownSerial(void) {    ENTER_FUNC();    Connect(80,25);    FlushSerialBuffer();    if(pScreenBufferSerial)        PICE_HeapFree(pScreenBufferSerial);    LEAVE_FUNC();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -