IN UINTN LastRow\r
)\r
{\r
+ UINTN Col;\r
CHAR16 Line[200];\r
\r
if (Row == 0) {\r
\r
//\r
// prepare a blank line\r
+ // If max column is larger, split to multiple prints.\r
//\r
- SetMem16(Line, LastCol*sizeof(CHAR16), L' ');\r
-\r
- if (Row == LastRow) {\r
+ SetMem16 (Line, sizeof (Line), L' ');\r
+ Line[ARRAY_SIZE (Line) - 1] = CHAR_NULL;\r
+\r
+ for (Col = 1; Col <= LastCol; Col += ARRAY_SIZE (Line) - 1) {\r
+ if (Col + ARRAY_SIZE (Line) - 1 > LastCol) {\r
+ if (Row == LastRow) {\r
+ //\r
+ // if CHAR_NULL is still at position LastCol, it will cause first line error\r
+ //\r
+ Line[(LastCol % (ARRAY_SIZE (Line) - 1)) - 1] = CHAR_NULL;\r
+ } else {\r
+ Line[LastCol % (ARRAY_SIZE (Line) - 1)] = CHAR_NULL;\r
+ }\r
+ }\r
+ \r
//\r
- // if CHAR_NULL is still at position 80, it will cause first line error\r
+ // print out the blank line\r
//\r
- Line[LastCol - 1] = CHAR_NULL;\r
- } else {\r
- Line[LastCol] = CHAR_NULL;\r
+ ShellPrintEx ((INT32) Col - 1, (INT32) Row - 1, Line);\r
}\r
-\r
- //\r
- // print out the blank line\r
- //\r
- ShellPrintEx (0, ((INT32)Row) - 1, Line);\r
}\r
\r
/**\r