diff options
Diffstat (limited to 'dev/Boot/Modules/SysChk/Module.cc')
| -rw-r--r-- | dev/Boot/Modules/SysChk/Module.cc | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/dev/Boot/Modules/SysChk/Module.cc b/dev/Boot/Modules/SysChk/Module.cc new file mode 100644 index 00000000..a48e524c --- /dev/null +++ b/dev/Boot/Modules/SysChk/Module.cc @@ -0,0 +1,47 @@ +/* + * ======================================================== + * + * NetBoot + * Copyright (C) 2024, Theater Quality Inc, all rights reserved., all rights reserved. + * + * ======================================================== + */ + +#include <BootKit/BootKit.h> +#include <Mod/GfxMgr/FBMgr.h> +#include <Mod/GfxMgr/TextMgr.h> +#include <FirmwareKit/EFI.h> +#include <FirmwareKit/EFI/API.h> +#include <FirmwareKit/Handover.h> +#include <KernelKit/MSDOS.h> +#include <KernelKit/PE.h> +#include <KernelKit/PEF.h> +#include <NewKit/Macros.h> +#include <NewKit/Ref.h> +#include <BootKit/Thread.h> +#include <Mod/GfxMgr/FBMgr.h> + +EXTERN_C Int32 ModuleMain(Kernel::HEL::BootInfoHeader* Handover) +{ + EfiSystemTable* system_table = (EfiSystemTable*)Handover->f_FirmwareCustomTables[1]; + + EfiInputKey key{}; + + system_table->ConIn->ReadKeyStroke(system_table->ConIn, &key); + + if (key.UnicodeChar == 'F' || + key.UnicodeChar == 'f') + { + UI::ui_draw_background(); + + fb_init(); + + FBDrawBitMapInRegion(zka_no_disk, ZKA_NO_DISK_HEIGHT, ZKA_NO_DISK_WIDTH, (kHandoverHeader->f_GOP.f_Width - ZKA_NO_DISK_WIDTH) / 2, (kHandoverHeader->f_GOP.f_Height - ZKA_NO_DISK_HEIGHT) / 2); + + fb_fini(); + + return kEfiOk; + } + + return kEfiFail; +} |
