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

📄 editor_output.c

📁 Linux下的类似softice的调试工具
💻 C
📖 第 1 页 / 共 2 页
字号:
									 }								}								else if(!bShift && !bControl && !bAlt)								{								}						   }						   break;					       case SCANCODE_END: // end						   {								DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "END\n");								// memory window								if(bAlt)								{									 DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "data window end\n");									 OldOffset=0xFFFFFFFF-0x10*4;									 // display data window									 Args.Value[0]=OldSelector;									 Args.Value[1]=OldOffset;									 Args.Count=2;									 DisplayMemory(pFrame,&Args);								}								// output window								else if(bShift)								{									 DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "output window end\n");									 if(ulLastLineDisplayedOffset)									 {										  ulLastLineDisplayedOffset = 0;										  										  PrintRingBuffer(wWindow[OUTPUT_WINDOW].cy-1);									 }								}								else if(!bShift && !bControl && !bAlt)								{								}						   }						   break;					       case SCANCODE_UP: // up						   {								DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "UP\n");								// memory window								if(bAlt)								{									 DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "data window up\n");									 OldOffset-=0x10;									 // display data window									 Args.Value[0]=OldSelector;									 Args.Value[1]=OldOffset;									 Args.Count=2;									 DisplayMemory(pFrame,&Args);								}								// output window								else if(bShift)								{									 DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "output window up ulLastLineDisplayedOffset = %u\n",ulLastLineDisplayedOffset);									 									 if(ulLastLineDisplayedOffset+wWindow[OUTPUT_WINDOW].cy < LinesInRingBuffer())									 {										  ulLastLineDisplayedOffset += 1;										  PrintRingBufferOffset(wWindow[OUTPUT_WINDOW].cy-1,ulLastLineDisplayedOffset);									 }								}								// source window up								else if(bControl)								{									 if((ulCurrentlyDisplayedLineNumber-1)>0 && strlen(szCurrentFile) )									 {										  PICE_SYMBOLFILE_SOURCE* pSrc;										  if(ConvertTokenToSrcFile(szCurrentFile,(PULONG)&pSrc) )										  {											   ulCurrentlyDisplayedLineNumber--;											   DisplaySourceFile((LPSTR)pSrc+sizeof(PICE_SYMBOLFILE_SOURCE),																 (LPSTR)pSrc+pSrc->ulOffsetToNext,																 ulCurrentlyDisplayedLineNumber,-1);										  }									 }									 else									 {										  UnassembleOneLineUp(pFrame);									 }								}								// command line history								else if(!bShift && !bControl && !bAlt)								{									 LPSTR pCurrentCmd;									 ULONG len;									 DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "command line up\n");									 // only if anything in history									 if(GetLinesInCommandHistory())									 {										  // go to next entry in history										  if(ulCommandCurrentPos)											   ulCommandCurrentPos = (ulCommandCurrentPos-1)%GetLinesInCommandHistory();										  else											   ulCommandCurrentPos = GetLinesInCommandHistory()-1;										  DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "current history pos = %u\n",ulCommandCurrentPos);										  // get this entry										  pCurrentCmd = GetFromCommandLineHistory(ulCommandCurrentPos);										  // if it has a string attached										  if((len = PICE_strlen(pCurrentCmd)))										  {											   // replace the current command line 											   PICE_sprintf(tempShell,":");											   ReplaceRingBufferCurrent(tempShell);											   PICE_memset(&ucCommandBuffer,0,sizeof(ucCommandBuffer));											   strcpy(ucCommandBuffer,pCurrentCmd);											   usCurrentPosInInputBuffer=len;											   Print(OUTPUT_WINDOW,pCurrentCmd);										  }									 }								}						   }						   break;					       case SCANCODE_DOWN: // down						   {								DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "DOWN\n");								// memory window								if(bAlt)								{									 DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "data window down\n");									 OldOffset+=0x10;									 // display data window									 Args.Value[0]=OldSelector;									 Args.Value[1]=OldOffset;									 Args.Count=2;									 DisplayMemory(pFrame,&Args);								}								// output window								else if(bShift)								{									 DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "output window down ulLastLineDisplayedOffset = %u\n",ulLastLineDisplayedOffset);									 if(ulLastLineDisplayedOffset)									 {										  ulLastLineDisplayedOffset -= 1;										  										  if(!PrintRingBufferOffset(wWindow[OUTPUT_WINDOW].cy-1,ulLastLineDisplayedOffset))										  {											   ulLastLineDisplayedOffset = 0;											   PrintRingBuffer(wWindow[OUTPUT_WINDOW].cy-1);										  }									 }								}								// source window down								else if(bControl)								{									 if(ulCurrentlyDisplayedLineNumber>0 && strlen(szCurrentFile))									 {										  PICE_SYMBOLFILE_SOURCE* pSrc;										  if(ConvertTokenToSrcFile(szCurrentFile,(PULONG)&pSrc) )										  {											   ulCurrentlyDisplayedLineNumber++;											   DisplaySourceFile((LPSTR)pSrc+sizeof(PICE_SYMBOLFILE_SOURCE),																 (LPSTR)pSrc+pSrc->ulOffsetToNext,																 ulCurrentlyDisplayedLineNumber,-1);										  }									 }									 else									 {										  UnassembleOneLineDown(pFrame);									 }								}								// command line history								else if(!bShift && !bControl && !bAlt)								{									 LPSTR pCurrentCmd;									 ULONG len;									 DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "command line down\n");									 // only if anything in history									 if(GetLinesInCommandHistory())									 {										  // go to next entry in history										  ulCommandCurrentPos = (ulCommandCurrentPos+1)%(GetLinesInCommandHistory());										  DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "current history pos = %u\n",ulCommandCurrentPos);										  // get this entry										  pCurrentCmd = GetFromCommandLineHistory(ulCommandCurrentPos);										  // if it has a string attached										  if((len = PICE_strlen(pCurrentCmd)))										  {											   // replace the current command line 											   PICE_sprintf(tempShell,":");											   ReplaceRingBufferCurrent(tempShell);											   PICE_memset(&ucCommandBuffer,0,sizeof(ucCommandBuffer));											   strcpy(ucCommandBuffer,pCurrentCmd);											   usCurrentPosInInputBuffer=len;											   Print(OUTPUT_WINDOW,pCurrentCmd);										  }									 }								}						   }						   break;					       case SCANCODE_LEFT: // left						   {								DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "LEFT\n");								// memory window								if(bAlt)								{									 DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "data window left\n");									 									 OldOffset-=0x1;									 // display data window									 Args.Value[0]=OldSelector;									 Args.Value[1]=OldOffset;									 Args.Count=2;									 DisplayMemory(pFrame,&Args);								}								else if(!bShift && !bControl && !bAlt)								{									 DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "backwards\n");									 if(usCurrentPosInInputBuffer)									 {										  usCurrentPosInInputBuffer--;										  wWindow[OUTPUT_WINDOW].usCurX--;										  PrintCursor(TRUE);									 }								}								else if(bControl)								{									 if(ulWindowOffset > 0)										  ulWindowOffset--;									 PICE_memset(&Args,0,sizeof(ARGS));									 Args.Count=0;									 Unassemble(pFrame,&Args);								}						   }						   break;					      case SCANCODE_RIGHT: // right						  {							   // memory window							   if(bAlt)							   {									DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "data window right\n");									OldOffset+=0x1;									// display data window									Args.Value[0]=OldSelector;									Args.Value[1]=OldOffset;									Args.Count=2;									DisplayMemory(pFrame,&Args);							   }							   else if(!bShift && !bControl && !bAlt)							   {									DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "forward\n");									if(ucCommandBuffer[usCurrentPosInInputBuffer])									{										 usCurrentPosInInputBuffer++;										 wWindow[OUTPUT_WINDOW].usCurX++;										 PrintCursor(TRUE);									}							   }							   else if(bControl)							   {									if(ulWindowOffset < 80)										 ulWindowOffset++;									PICE_memset(&Args,0,sizeof(ARGS));									Args.Count=0;									Unassemble(pFrame,&Args);							   }						  }						  break;					      case SCANCODE_PGUP: // page up						  {							   DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "PAGEUP\n");							   // memory window							   if(bAlt)							   {									OldOffset-=wWindow[DATA_WINDOW].cy*0x10;									// display data window									Args.Value[0]=OldSelector;									Args.Value[1]=OldOffset;									Args.Count=2;									DisplayMemory(pFrame,&Args);							   }							   // output window							   else if(bShift)							   {									if(ulLastLineDisplayedOffset+2*(wWindow[OUTPUT_WINDOW].cy) < LinesInRingBuffer())									{										 ulLastLineDisplayedOffset += (wWindow[OUTPUT_WINDOW].cy);										 										 PrintRingBufferOffset(wWindow[OUTPUT_WINDOW].cy-1,ulLastLineDisplayedOffset);									}									else									{										 if(ulLastLineDisplayedOffset != LinesInRingBuffer()-wWindow[OUTPUT_WINDOW].cy)										 {											  ulLastLineDisplayedOffset = LinesInRingBuffer()-wWindow[OUTPUT_WINDOW].cy;											  PrintRingBufferOffset(wWindow[OUTPUT_WINDOW].cy-1,ulLastLineDisplayedOffset);										 }									}							   }							   // source window page up							   else if(bControl)							   {									if(strlen(szCurrentFile))									{										 if((ulCurrentlyDisplayedLineNumber-wWindow[SOURCE_WINDOW].cy)>0)										 {											  PICE_SYMBOLFILE_SOURCE* pSrc;											  if(ConvertTokenToSrcFile(szCurrentFile,(PULONG)&pSrc) )											  {												   ulCurrentlyDisplayedLineNumber -= wWindow[SOURCE_WINDOW].cy;												   DisplaySourceFile((LPSTR)pSrc+sizeof(PICE_SYMBOLFILE_SOURCE),																	 (LPSTR)pSrc+pSrc->ulOffsetToNext,																	 ulCurrentlyDisplayedLineNumber ,-1);											  }										 }										 else										 {											  PICE_SYMBOLFILE_SOURCE* pSrc;											  if(ConvertTokenToSrcFile(szCurrentFile,(PULONG)&pSrc) )											  {												   ulCurrentlyDisplayedLineNumber = 1;												   DisplaySourceFile((LPSTR)pSrc+sizeof(PICE_SYMBOLFILE_SOURCE),																	 (LPSTR)pSrc+pSrc->ulOffsetToNext,																	 ulCurrentlyDisplayedLineNumber ,-1);											  }										 }									}									else									{										 UnassembleOnePageUp(pFrame,wWindow[SOURCE_WINDOW].cy);									}							   }							   else if(!bShift && !bControl && !bAlt)							   {							   }						  }						  break;					      case SCANCODE_PGDN: // page down						  {							   DPRINT(PICE_DEBUG, DBT_EDITOR, DBL_INFO, "PAGEDOWN\n");							   // memory window							   if(bAlt)							   {									OldOffset+=wWindow[DATA_WINDOW].cy*0x10;									// display data window									Args.Value[0]=OldSelector;									Args.Value[1]=OldOffset;									Args.Count=2;									DisplayMemory(pFrame,&Args);							   }							   else if(bShift)							   {									if(ulLastLineDisplayedOffset>wWindow[OUTPUT_WINDOW].cy)									{										 ulLastLineDisplayedOffset -= (wWindow[OUTPUT_WINDOW].cy);										 PrintRingBufferOffset(wWindow[OUTPUT_WINDOW].cy-1,ulLastLineDisplayedOffset);									}									else									{										 if(ulLastLineDisplayedOffset)										 {											  ulLastLineDisplayedOffset = 0;											  PrintRingBufferOffset(wWindow[OUTPUT_WINDOW].cy-1,ulLastLineDisplayedOffset);										 }									}							   }							   else if(bControl)							   {									if(strlen(szCurrentFile) )									{										 if((ulCurrentlyDisplayedLineNumber+wWindow[SOURCE_WINDOW].cy)>0)										 {											  PICE_SYMBOLFILE_SOURCE* pSrc;											  if(ConvertTokenToSrcFile(szCurrentFile,(PULONG)&pSrc) )											  {												   ulCurrentlyDisplayedLineNumber += wWindow[SOURCE_WINDOW].cy;												   DisplaySourceFile((LPSTR)pSrc+sizeof(PICE_SYMBOLFILE_SOURCE),																	 (LPSTR)pSrc+pSrc->ulOffsetToNext,																	 ulCurrentlyDisplayedLineNumber ,-1);											  }										 }										 else										 {											  PICE_SYMBOLFILE_SOURCE* pSrc;											  if(ConvertTokenToSrcFile(szCurrentFile,(PULONG)&pSrc) )											  {												   ulCurrentlyDisplayedLineNumber = 1;												   DisplaySourceFile((LPSTR)pSrc+sizeof(PICE_SYMBOLFILE_SOURCE),																	 (LPSTR)pSrc+pSrc->ulOffsetToNext,																	 ulCurrentlyDisplayedLineNumber ,-1);											  }										 }									}									else									{										 UnassembleOnePageDown(pFrame,wWindow[SOURCE_WINDOW].cy);									}							   }							   else if(!bShift && !bControl && !bAlt)							   {							   }						  }						  break;					   }				  }			 }		}   }}

⌨️ 快捷键说明

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