/* Set the current coordinates of the cursor position. */
VOID EFIAPI SetCursorPosition(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut, IN UINTN Column, IN INTN Row, IN UINTN LineLength, IN UINTN TotalRow, IN CHAR16 *Str, IN UINTN StrPos, IN UINTN Len)
/* Set the current coordinates of the cursor position. */
VOID EFIAPI SetCursorPosition(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut, IN UINTN Column, IN INTN Row, IN UINTN LineLength, IN UINTN TotalRow, IN CHAR16 *Str, IN UINTN StrPos, IN UINTN Len)
{
  CHAR16  Backup;
  ASSERT (ConOut != NULL);
  ASSERT (Str != NULL);
  Backup = 0;
  if (Row >= 0) {
    ConOut->SetCursorPosition (ConOut, Column, Row);
    return;
  }
  if (Len - StrPos > Column * Row) {
    Backup                         = *(Str + StrPos + Column * Row);
    *(Str + StrPos + Column * Row) = 0;
  }
  EDBPrint (L"%s", Str + StrPos);
  if (Len - StrPos > Column * Row) {
    *(Str + StrPos + Column * Row) = Backup;
  }
  ConOut->SetCursorPosition (ConOut, 0, 0);
}