diff --git a/Legacy/BootPlatform/EfiLdr/Debug.c b/Legacy/BootPlatform/EfiLdr/Debug.c
new file mode 100644
index 00000000..e91549ac
--- /dev/null
+++ b/Legacy/BootPlatform/EfiLdr/Debug.c
@@ -0,0 +1,79 @@
+/*++
+
+Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+ Debug.c
+
+Abstract:
+
+Revision History:
+
+--*/
+#include "EfiLdr.h"
+#include "Debug.h"
+
+UINT8 *mCursor;
+UINT8 mHeaderIndex = 10;
+
+VOID
+PrintHeader (
+ CHAR8 Char
+ )
+{
+ *(UINT8 *)(UINTN)(0x000b8000 + mHeaderIndex) = Char;
+ mHeaderIndex += 2;
+}
+
+VOID
+ClearScreen (
+ VOID
+ )
+{
+ UINT32 Index;
+
+ mCursor = (UINT8 *)(UINTN)(0x000b8000 + 160);
+ for (Index = 0; Index < 80 * 49; Index++) {
+ *mCursor = ' ';
+ mCursor += 2;
+ }
+
+ mCursor = (UINT8 *)(UINTN)(0x000b8000 + 160);
+}
+
+VOID
+EFIAPI
+PrintString (
+ IN CONST CHAR8 *FormatString,
+ ...
+ )
+{
+ UINTN Index;
+ CHAR8 PrintBuffer[256];
+ VA_LIST Marker;
+
+ VA_START (Marker, FormatString);
+ AsciiVSPrint (PrintBuffer, sizeof (PrintBuffer), FormatString, Marker);
+ VA_END (Marker);
+
+ for (Index = 0; PrintBuffer[Index] != 0; Index++) {
+ if (PrintBuffer[Index] == '\n') {
+ mCursor = (UINT8 *)(UINTN)(0xb8000 + (((((UINTN)mCursor - 0xb8000) + 160) / 160) * 160));
+ } else {
+ *mCursor = (UINT8)PrintBuffer[Index];
+ mCursor += 2;
+ }
+ }
+
+ //
+ // All information also output to serial port.
+ //
+ SerialPortWrite ((UINT8 *)PrintBuffer, Index);
+}
diff --git a/Legacy/BootPlatform/EfiLdr/Debug.h b/Legacy/BootPlatform/EfiLdr/Debug.h
new file mode 100644
index 00000000..9897aed2
--- /dev/null
+++ b/Legacy/BootPlatform/EfiLdr/Debug.h
@@ -0,0 +1,44 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation. All rights reserved.
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+ Debug.h
+
+Abstract:
+
+Revision History:
+
+--*/
+
+#ifndef _EFILDR_DEBUG_H_
+#define _EFILDR_DEBUG_H_
+
+#include
+#include
+
+VOID
+PrintHeader (
+ CHAR8 Char
+ );
+
+VOID
+EFIAPI
+PrintString (
+ IN CONST CHAR8 *FormatString,
+ ...
+ );
+
+VOID
+ClearScreen (
+ VOID
+ );
+
+#endif
diff --git a/Legacy/BootPlatform/EfiLdr/EfiLdr.h b/Legacy/BootPlatform/EfiLdr/EfiLdr.h
index 05a076e7..fd833437 100644
--- a/Legacy/BootPlatform/EfiLdr/EfiLdr.h
+++ b/Legacy/BootPlatform/EfiLdr/EfiLdr.h
@@ -28,8 +28,6 @@ Revision History:
#include
#include
#include
-#include
-#include
#define INT15_E820_AddressRangeMemory 1
#define INT15_E820_AddressRangeReserved 2
diff --git a/Legacy/BootPlatform/EfiLdr/EfiLdr.inf b/Legacy/BootPlatform/EfiLdr/EfiLdr.inf
index 303cd573..6b50c35d 100644
--- a/Legacy/BootPlatform/EfiLdr/EfiLdr.inf
+++ b/Legacy/BootPlatform/EfiLdr/EfiLdr.inf
@@ -38,9 +38,11 @@
UefiImageOnlyFvLib
[Sources]
+ Debug.h
Support.h
EfiLdr.h
EfiLoader.c
+ Debug.c
PeLoader.c
Support.c
LzmaDecompress.h
diff --git a/Legacy/BootPlatform/EfiLdr/EfiLoader.c b/Legacy/BootPlatform/EfiLdr/EfiLoader.c
index 9f41d198..2bbd1749 100644
--- a/Legacy/BootPlatform/EfiLdr/EfiLoader.c
+++ b/Legacy/BootPlatform/EfiLdr/EfiLoader.c
@@ -20,6 +20,7 @@ Revision History:
#include "EfiLdr.h"
#include "Support.h"
+#include "Debug.h"
#include "LzmaDecompress.h"
EFILDR_LOADED_IMAGE DxeCoreImage;
@@ -52,7 +53,7 @@ EfiLoader (
#if 0
SerialPortInitialize ();
- SerialPortWrite ((UINT8 *)"EfiLdr\r\n", L_STR_LEN ("EfiLdr\r\n"));
+ PrintString ("EfiLdr\n");
#endif
//
diff --git a/Legacy/BootPlatform/EfiLdr/PeLoader.c b/Legacy/BootPlatform/EfiLdr/PeLoader.c
index 75ca7606..bcf3e3d1 100644
--- a/Legacy/BootPlatform/EfiLdr/PeLoader.c
+++ b/Legacy/BootPlatform/EfiLdr/PeLoader.c
@@ -20,6 +20,7 @@ Revision History:
--*/
#include "EfiLdr.h"
+#include "Debug.h"
#include "Support.h"
#include