📄 editor_output.c
字号:
} } 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 + -