📄 backdoor.c
字号:
OSDUTL_OutputNumFromIndex(wTemp); memcpy(&(pwVersionString[bTemp]), &(__wOSDUTLStringBuf[1]), __wOSDUTLStringBuf[0]*2); bTemp += __wOSDUTLStringBuf[0]; // Version pwVersionString[0] = bTemp - 1; break; case FORMAT_NUMBER: wTemp = dwVersion; if (0 != wTemp / 1000) { pwVersionString[bTemp++] = CHAR_0 + (wTemp / 1000); } wTemp = wTemp % 1000; pwVersionString[bTemp++] = CHAR_0 + (wTemp / 100); wTemp = wTemp % 100; pwVersionString[bTemp++] = CHAR_0 + (wTemp / 10); wTemp = wTemp % 10; pwVersionString[bTemp++] = CHAR_0 + wTemp; pwVersionString[0] = bTemp - 1; break; default: break; } GDI_DrawString_909(0, pVersion_StrAttr, pwVersionString);}void _TranslateString(PBYTE pbAsciiString, PWORD pwString){ BYTE bTemp = 0; while ('\0' != pbAsciiString[bTemp] && GDI_STRING_LENGTH > bTemp) { pwString[bTemp+1] = OSDUTL_TransformChar(pbAsciiString[bTemp]); //CoCo1.20, reduce code size. bTemp++; } pwString[0] = bTemp;}void _OutputDebugInfo(void){ PARM_DRAW_STRING DebugStrAttr; WORD wStrTmp[9]; _bCARDPath = FALSE; _bNIMPath = FALSE; DebugStrAttr.bBackground = MAINMENU_PALETTE_ENTRY_CONTENT_REGION; DebugStrAttr.bTextColor = MAINMENU_PALETTE_ENTRY_BACKDOOR_STRING; DebugStrAttr.wX = BACKDOOR_DISPLAY_VERSION_START_H; DebugStrAttr.wY = BACKDOOR_DISPLAY_VERSION_START_V+15; // Show titile: Debug Mode Info GDI_DrawString_909(0, &DebugStrAttr, aSETUPDebugModeInfo); DebugStrAttr.wY += GDI_GetStringHeight(aSETUPDebugModeInfo); // Show default debug mode value OSDUTL_PrepareOutputString(); OSDUTL_CopyStringFromIndex(aSETUPDefault); wStrTmp[0] = 8; wStrTmp[1] = _TranslateNum((BYTE)((_dwBackupDebugMode & 0xF0000000) >> 28)); wStrTmp[2] = _TranslateNum((BYTE)((_dwBackupDebugMode & 0xF000000) >> 24)); wStrTmp[3] = _TranslateNum((BYTE)((_dwBackupDebugMode & 0xF00000) >> 20)); wStrTmp[4] = _TranslateNum((BYTE)((_dwBackupDebugMode & 0xF0000) >> 16)); wStrTmp[5] = _TranslateNum((BYTE)((_dwBackupDebugMode & 0xF000) >> 12)); wStrTmp[6] = _TranslateNum((BYTE)((_dwBackupDebugMode & 0xF00) >> 8)); wStrTmp[7] = _TranslateNum((BYTE)((_dwBackupDebugMode & 0xF0) >> 4)); wStrTmp[8] = _TranslateNum((BYTE)(_dwBackupDebugMode & 0xF)); OSDUTL_CopyStringFromIndex(wStrTmp); GDI_DrawString_909(0, &DebugStrAttr, __pOSDUTLOutputString); DebugStrAttr.wY += GDI_GetStringHeight(aSETUPDefault); // Show new debug mode value OSDUTL_PrepareOutputString(); OSDUTL_CopyStringFromIndex(aSETUPNew); if (_bDebugSetMode) { wStrTmp[0] = 8; wStrTmp[1] = _TranslateNum((BYTE)((_dwDebugMode & 0xF0000000) >> 28)); wStrTmp[2] = _TranslateNum((BYTE)((_dwDebugMode & 0xF000000) >> 24)); wStrTmp[3] = _TranslateNum((BYTE)((_dwDebugMode & 0xF00000) >> 20)); wStrTmp[4] = _TranslateNum((BYTE)((_dwDebugMode & 0xF0000) >> 16)); wStrTmp[5] = _TranslateNum((BYTE)((_dwDebugMode & 0xF000) >> 12)); wStrTmp[6] = _TranslateNum((BYTE)((_dwDebugMode & 0xF00) >> 8)); wStrTmp[7] = _TranslateNum((BYTE)((_dwDebugMode & 0xF0) >> 4)); wStrTmp[8] = _TranslateNum((BYTE)(_dwDebugMode & 0xF)); OSDUTL_CopyStringFromIndex(wStrTmp); } else { OSDUTL_CopyStringFromIndex(aSETUPNotSet); } GDI_DrawString_909(0, &DebugStrAttr, __pOSDUTLOutputString); DebugStrAttr.wY += GDI_GetStringHeight(aSETUPNew); // Show DSU_TX mode. OSDUTL_PrepareOutputString(); OSDUTL_CopyStringFromIndex(aSETUPDSU_TX); OSDUTL_CopyStringFromIndex(_TranslateDebugMode((BYTE)(_dwDebugMode & 0xF))); GDI_DrawString_909(0, &DebugStrAttr, __pOSDUTLOutputString); DebugStrAttr.wY += GDI_GetStringHeight(aSETUPDSU_TX); // Show DSU_RX mode. OSDUTL_PrepareOutputString(); OSDUTL_CopyStringFromIndex(aSETUPDSU_RX); OSDUTL_CopyStringFromIndex(_TranslateDebugMode((BYTE)((_dwDebugMode & 0xF0) >> 4))); GDI_DrawString_909(0, &DebugStrAttr, __pOSDUTLOutputString); DebugStrAttr.wY += GDI_GetStringHeight(aSETUPDSU_RX); // Show UR1_TX mode. OSDUTL_PrepareOutputString(); OSDUTL_CopyStringFromIndex(aSETUPUR1_TX); OSDUTL_CopyStringFromIndex(_TranslateDebugMode((BYTE)((_dwDebugMode & 0xF00) >> 8))); GDI_DrawString_909(0, &DebugStrAttr, __pOSDUTLOutputString); DebugStrAttr.wY += GDI_GetStringHeight(aSETUPUR1_TX); // Show UR1_RX mode. OSDUTL_PrepareOutputString(); OSDUTL_CopyStringFromIndex(aSETUPUR1_RX); OSDUTL_CopyStringFromIndex(_TranslateDebugMode((BYTE)((_dwDebugMode & 0xF000) >> 12))); GDI_DrawString_909(0, &DebugStrAttr, __pOSDUTLOutputString); DebugStrAttr.wY += GDI_GetStringHeight(aSETUPUR1_RX); // Show UR2_TX mode. OSDUTL_PrepareOutputString(); OSDUTL_CopyStringFromIndex(aSETUPUR2_TX); OSDUTL_CopyStringFromIndex(_TranslateDebugMode((BYTE)((_dwDebugMode & 0xF0000) >> 16))); GDI_DrawString_909(0, &DebugStrAttr, __pOSDUTLOutputString); DebugStrAttr.wY += GDI_GetStringHeight(aSETUPUR2_TX); // Show UR2_RX mode. OSDUTL_PrepareOutputString(); OSDUTL_CopyStringFromIndex(aSETUPUR2_RX); OSDUTL_CopyStringFromIndex(_TranslateDebugMode((BYTE)((_dwDebugMode & 0xF00000) >> 20))); GDI_DrawString_909(0, &DebugStrAttr, __pOSDUTLOutputString); DebugStrAttr.wY += GDI_GetStringHeight(aSETUPUR2_RX) + 10; if (_bCARDPath) { OSDUTL_PrepareOutputString(); OSDUTL_CopyStringFromIndex(aSETUPDBGInfo1); GDI_DrawString_909(0, &DebugStrAttr, __pOSDUTLOutputString); DebugStrAttr.wY += GDI_GetStringHeight(__pOSDUTLOutputString); } if (_bNIMPath) { OSDUTL_PrepareOutputString(); OSDUTL_CopyStringFromIndex(aSETUPDBGInfo2); GDI_DrawString_909(0, &DebugStrAttr, __pOSDUTLOutputString); DebugStrAttr.wY += GDI_GetStringHeight(__pOSDUTLOutputString); } }WORD _TranslateNum(BYTE bNum){ if (bNum < 10) { return aNDNumbers[bNum]; } else if (bNum <= 15) { return aNDUppercase[bNum-10]; } return aNDNumbers[0]; // Non matched.}WORD* _TranslateDebugMode(BYTE bMode){ WORD * pwDebugModStr; switch (bMode) { case 0: pwDebugModStr = aSETUPDisable; break; case 1: _bNIMPath = TRUE; pwDebugModStr = aSETUPEnable; break; case 2: _bCARDPath = TRUE; pwDebugModStr = aSETUPEnable; break; default: pwDebugModStr = aSETUPEnable; break; } return pwDebugModStr;}BYTE _GetDebugIndex(DWORD dwMode){ switch (dwMode) { case DEBUG_MODE_1: return 1; case DEBUG_MODE_2: return 2; case DEBUG_MODE_3: return 3; case DEBUG_MODE_4: return 4; case DEBUG_MODE_5: return 5; case DEBUG_MODE_6: return 6; case DEBUG_MODE_7: return 7; case DEBUG_MODE_8: return 8; case DEBUG_MODE_9: return 9; case DEBUG_MODE_10: return 10; case DEBUG_MODE_11: return 11; case DEBUG_MODE_0: default: return 0; }}void _SetDebugMode(BYTE bIndex){ _dwDebugMode = 0; switch (bIndex) { case 1: _dwDebugMode|=SET_DSU1_TX_VALUE(NIM_PATH); //DSU1_TX_SOURCE _dwDebugMode|=SET_DSU1_RX_VALUE(NIM_PATH); //DSU1_RX_SOURCE << 4; _dwDebugMode|=SET_UART1_TX_VALUE(NOT_USED); //UART1_TX_SOURCE << 8; _dwDebugMode|=SET_UART1_RX_VALUE(NOT_USED); //UART1_RX_SOURCE << 12; _dwDebugMode|=SET_UART2_TX_VALUE(NOT_USED); //UART2_TX_SOURCE << 16; _dwDebugMode|=SET_UART2_RX_VALUE(NOT_USED); //UART2_RX_SOURCE << 20; break; case 2: _dwDebugMode|=SET_DSU1_TX_VALUE(CARD_READER_PATH); //DSU1_TX_SOURCE _dwDebugMode|=SET_DSU1_RX_VALUE(CARD_READER_PATH); //DSU1_RX_SOURCE << 4; _dwDebugMode|=SET_UART1_TX_VALUE(NOT_USED); //UART1_TX_SOURCE << 8; _dwDebugMode|=SET_UART1_RX_VALUE(NOT_USED); //UART1_RX_SOURCE << 12; _dwDebugMode|=SET_UART2_TX_VALUE(NOT_USED); //UART2_TX_SOURCE << 16; _dwDebugMode|=SET_UART2_RX_VALUE(NOT_USED); //UART2_RX_SOURCE << 20; break; case 3: _dwDebugMode|=SET_DSU1_TX_VALUE(NOT_USED); //DSU1_TX_SOURCE _dwDebugMode|=SET_DSU1_RX_VALUE(NOT_USED); //DSU1_RX_SOURCE << 4; _dwDebugMode|=SET_UART1_TX_VALUE(NIM_PATH); //UART1_TX_SOURCE << 8; _dwDebugMode|=SET_UART1_RX_VALUE(NIM_PATH); //UART1_RX_SOURCE << 12; _dwDebugMode|=SET_UART2_TX_VALUE(NOT_USED); //UART2_TX_SOURCE << 16; _dwDebugMode|=SET_UART2_RX_VALUE(NOT_USED); //UART2_RX_SOURCE << 20; break; case 4: _dwDebugMode|=SET_DSU1_TX_VALUE(NIM_PATH); //DSU1_TX_SOURCE _dwDebugMode|=SET_DSU1_RX_VALUE(NIM_PATH); //DSU1_RX_SOURCE << 4; _dwDebugMode|=SET_UART1_TX_VALUE(NIM_PATH); //UART1_TX_SOURCE << 8; _dwDebugMode|=SET_UART1_RX_VALUE(NIM_PATH); //UART1_RX_SOURCE << 12; _dwDebugMode|=SET_UART2_TX_VALUE(NOT_USED); //UART2_TX_SOURCE << 16; _dwDebugMode|=SET_UART2_RX_VALUE(NOT_USED); //UART2_RX_SOURCE << 20; break; case 5: _dwDebugMode|=SET_DSU1_TX_VALUE(CARD_READER_PATH); //DSU1_TX_SOURCE _dwDebugMode|=SET_DSU1_RX_VALUE(CARD_READER_PATH); //DSU1_RX_SOURCE << 4; _dwDebugMode|=SET_UART1_TX_VALUE(NIM_PATH); //UART1_TX_SOURCE << 8; _dwDebugMode|=SET_UART1_RX_VALUE(NIM_PATH); //UART1_RX_SOURCE << 12; _dwDebugMode|=SET_UART2_TX_VALUE(NOT_USED); //UART2_TX_SOURCE << 16; _dwDebugMode|=SET_UART2_RX_VALUE(NOT_USED); //UART2_RX_SOURCE << 20; break; case 6: _dwDebugMode|=SET_DSU1_TX_VALUE(NOT_USED); //DSU1_TX_SOURCE _dwDebugMode|=SET_DSU1_RX_VALUE(NOT_USED); //DSU1_RX_SOURCE << 4; _dwDebugMode|=SET_UART1_TX_VALUE(CARD_READER_PATH); //UART1_TX_SOURCE << 8; _dwDebugMode|=SET_UART1_RX_VALUE(CARD_READER_PATH); //UART1_RX_SOURCE << 12; _dwDebugMode|=SET_UART2_TX_VALUE(NOT_USED); //UART2_TX_SOURCE << 16; _dwDebugMode|=SET_UART2_RX_VALUE(NOT_USED); //UART2_RX_SOURCE << 20; break; case 7: _dwDebugMode|=SET_DSU1_TX_VALUE(NIM_PATH); //DSU1_TX_SOURCE _dwDebugMode|=SET_DSU1_RX_VALUE(NIM_PATH); //DSU1_RX_SOURCE << 4; _dwDebugMode|=SET_UART1_TX_VALUE(CARD_READER_PATH); //UART1_TX_SOURCE << 8; _dwDebugMode|=SET_UART1_RX_VALUE(CARD_READER_PATH); //UART1_RX_SOURCE << 12; _dwDebugMode|=SET_UART2_TX_VALUE(NOT_USED); //UART2_TX_SOURCE << 16; _dwDebugMode|=SET_UART2_RX_VALUE(NOT_USED); //UART2_RX_SOURCE << 20; break; case 8: _dwDebugMode|=SET_DSU1_TX_VALUE(CARD_READER_PATH); //DSU1_TX_SOURCE _dwDebugMode|=SET_DSU1_RX_VALUE(CARD_READER_PATH); //DSU1_RX_SOURCE << 4; _dwDebugMode|=SET_UART1_TX_VALUE(CARD_READER_PATH); //UART1_TX_SOURCE << 8; _dwDebugMode|=SET_UART1_RX_VALUE(CARD_READER_PATH); //UART1_RX_SOURCE << 12; _dwDebugMode|=SET_UART2_TX_VALUE(NOT_USED); //UART2_TX_SOURCE << 16; _dwDebugMode|=SET_UART2_RX_VALUE(NOT_USED); //UART2_RX_SOURCE << 20; break; case 9: _dwDebugMode|=SET_DSU1_TX_VALUE(CARD_READER_PATH); //DSU1_TX_SOURCE _dwDebugMode|=SET_DSU1_RX_VALUE(CARD_READER_PATH); //DSU1_RX_SOURCE << 4; _dwDebugMode|=SET_UART1_TX_VALUE(CARD_READER_PATH); //UART1_TX_SOURCE << 8; _dwDebugMode|=SET_UART1_RX_VALUE(NOT_USED); //UART1_RX_SOURCE << 12; _dwDebugMode|=SET_UART2_TX_VALUE(NOT_USED); //UART2_TX_SOURCE << 16; _dwDebugMode|=SET_UART2_RX_VALUE(EXPAND_GPIO_PATH); //UART2_RX_SOURCE << 20; break; case 10: _dwDebugMode|=SET_DSU1_TX_VALUE(NIM_PATH); //DSU1_TX_SOURCE _dwDebugMode|=SET_DSU1_RX_VALUE(NIM_PATH); //DSU1_RX_SOURCE << 4; _dwDebugMode|=SET_UART1_TX_VALUE(CARD_READER_PATH); //UART1_TX_SOURCE << 8; _dwDebugMode|=SET_UART1_RX_VALUE(NOT_USED); //UART1_RX_SOURCE << 12; _dwDebugMode|=SET_UART2_TX_VALUE(NOT_USED); //UART2_TX_SOURCE << 16; _dwDebugMode|=SET_UART2_RX_VALUE(EXPAND_GPIO_PATH); //UART2_RX_SOURCE << 20; break; case 11: _dwDebugMode|=SET_DSU1_TX_VALUE(NOT_USED); //DSU1_TX_SOURCE _dwDebugMode|=SET_DSU1_RX_VALUE(NOT_USED); //DSU1_RX_SOURCE << 4; _dwDebugMode|=SET_UART1_TX_VALUE(CARD_READER_PATH); //UART1_TX_SOURCE << 8; _dwDebugMode|=SET_UART1_RX_VALUE(NOT_USED); //UART1_RX_SOURCE << 12; _dwDebugMode|=SET_UART2_TX_VALUE(NOT_USED); //UART2_TX_SOURCE << 16; _dwDebugMode|=SET_UART2_RX_VALUE(EXPAND_GPIO_PATH); //UART2_RX_SOURCE << 20; break; case 0: default: _dwDebugMode|=SET_DSU1_TX_VALUE(NOT_USED); //DSU1_TX_SOURCE _dwDebugMode|=SET_DSU1_RX_VALUE(NOT_USED); //DSU1_RX_SOURCE << 4; _dwDebugMode|=SET_UART1_TX_VALUE(NOT_USED); //UART1_TX_SOURCE << 8; _dwDebugMode|=SET_UART1_RX_VALUE(NOT_USED); //UART1_RX_SOURCE << 12; _dwDebugMode|=SET_UART2_TX_VALUE(NOT_USED); //UART2_TX_SOURCE << 16; _dwDebugMode|=SET_UART2_RX_VALUE(NOT_USED); //UART2_RX_SOURCE << 20; break; }}void _GetUsefulDebugMode(BYTE bDIR){ DWORD dwDBGMode, dwCompare; dwDBGMode = UTL_Get_Path_DebugMode(); if (bDIR) // Increase Index { do { _bDebugIndex++; if (_bDebugIndex >= MAX_DBG_MODE) { _bDebugIndex = 0; } dwCompare = 1L << _bDebugIndex; } while (!(dwCompare & dwDBGMode)); } else // Decrease Index { do { if (_bDebugIndex == 0) { _bDebugIndex = MAX_DBG_MODE - 1; } else { _bDebugIndex--; } dwCompare = 1L << _bDebugIndex; } while (!(dwCompare & dwDBGMode)); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -