Implement BlClearConsoleLine() routine
All checks were successful
Builds / ExectOS (amd64) (push) Successful in 27s
Builds / ExectOS (i686) (push) Successful in 24s

This commit is contained in:
Rafal Kupiec 2023-12-23 10:01:28 +01:00
parent ec861c6296
commit 10aaf7e24e
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
4 changed files with 35 additions and 0 deletions

View File

@ -47,6 +47,7 @@ typedef EFI_STATUS (*PBL_ALLOCATE_PAGES)(IN UINT64 Size, OUT PEFI_PHYSICAL_ADDRE
typedef EFI_STATUS (*PBL_ALLOCATE_POOL)(IN UINT_PTR Size, OUT PVOID *Memory); typedef EFI_STATUS (*PBL_ALLOCATE_POOL)(IN UINT_PTR Size, OUT PVOID *Memory);
typedef VOID (*PBL_BOOTMENU_INITIALIZE_OS_LIST)(OUT PXTBL_BOOTMENU_ITEM MenuEntries, OUT PULONG EntriesCount, OUT PULONG DefaultId); typedef VOID (*PBL_BOOTMENU_INITIALIZE_OS_LIST)(OUT PXTBL_BOOTMENU_ITEM MenuEntries, OUT PULONG EntriesCount, OUT PULONG DefaultId);
typedef EFI_STATUS (*PBL_CLOSE_VOLUME)(IN PEFI_HANDLE VolumeHandle); typedef EFI_STATUS (*PBL_CLOSE_VOLUME)(IN PEFI_HANDLE VolumeHandle);
typedef VOID (*PBL_CLEAR_CONSOLE_LINE)(IN ULONGLONG LineNo);
typedef VOID (*PBL_CONSOLE_CLEAR_SCREEN)(); typedef VOID (*PBL_CONSOLE_CLEAR_SCREEN)();
typedef VOID (*PBL_CONSOLE_DISABLE_CURSOR)(); typedef VOID (*PBL_CONSOLE_DISABLE_CURSOR)();
typedef VOID (*PBL_CONSOLE_ENABLE_CURSOR)(); typedef VOID (*PBL_CONSOLE_ENABLE_CURSOR)();
@ -114,6 +115,7 @@ typedef struct _XTBL_LOADER_PROTOCOL
{ {
struct struct
{ {
PBL_CLEAR_CONSOLE_LINE ClearLine;
PBL_CONSOLE_CLEAR_SCREEN ClearScreen; PBL_CONSOLE_CLEAR_SCREEN ClearScreen;
PBL_CONSOLE_DISABLE_CURSOR DisableCursor; PBL_CONSOLE_DISABLE_CURSOR DisableCursor;
PBL_CONSOLE_ENABLE_CURSOR EnableCursor; PBL_CONSOLE_ENABLE_CURSOR EnableCursor;

View File

@ -9,6 +9,34 @@
#include <xtldr.h> #include <xtldr.h>
/**
* Clears a specified line on the UEFI text console.
*
* @param LineNo
* Supplies a line number to clear.
*
* @return This routine does not return any value.
*
* @since XT 1.0
*/
XTCDECL
VOID
BlClearConsoleLine(IN ULONGLONG LineNo)
{
UINT_PTR Index, ResX, ResY;
/* Query console mode */
BlQueryConsoleMode(&ResX, &ResY);
/* Set cursor position and clear line */
BlSetCursorPosition(0, LineNo);
for(Index = 0; Index < ResX; Index++)
{
/* Clear line */
BlConsoleWrite(L" ");
}
}
/** /**
* This routine clears the UEFI console screen. * This routine clears the UEFI console screen.
* *

View File

@ -16,6 +16,10 @@
typedef VOID (BMPRINTCHAR)(IN USHORT Character); typedef VOID (BMPRINTCHAR)(IN USHORT Character);
/* XTLDR routines forward references */ /* XTLDR routines forward references */
XTCDECL
VOID
BlClearConsoleLine(IN ULONGLONG LineNo);
XTCDECL XTCDECL
VOID VOID
BlClearConsoleScreen(); BlClearConsoleScreen();

View File

@ -90,6 +90,7 @@ BlpRegisterXtLoaderProtocol()
EFI_HANDLE Handle = NULL; EFI_HANDLE Handle = NULL;
/* Set all routines available via loader protocol */ /* Set all routines available via loader protocol */
LdrProtocol.Console.ClearLine = BlClearConsoleLine;
LdrProtocol.Console.ClearScreen = BlClearConsoleScreen; LdrProtocol.Console.ClearScreen = BlClearConsoleScreen;
LdrProtocol.Console.DisableCursor = BlDisableConsoleCursor; LdrProtocol.Console.DisableCursor = BlDisableConsoleCursor;
LdrProtocol.Console.EnableCursor = BlEnableConsoleCursor; LdrProtocol.Console.EnableCursor = BlEnableConsoleCursor;