summaryrefslogtreecommitdiffhomepage
path: root/dev/ZBA/Sources
diff options
context:
space:
mode:
Diffstat (limited to 'dev/ZBA/Sources')
-rw-r--r--dev/ZBA/Sources/HEL/AMD64/BootFileReader.cxx2
-rw-r--r--dev/ZBA/Sources/HEL/AMD64/BootJump.S2
-rw-r--r--dev/ZBA/Sources/HEL/AMD64/BootMain.cxx20
-rw-r--r--dev/ZBA/Sources/HEL/AMD64/compile_flags.txt2
-rw-r--r--dev/ZBA/Sources/Thread.cxx26
-rw-r--r--dev/ZBA/Sources/compile_flags.txt2
6 files changed, 34 insertions, 20 deletions
diff --git a/dev/ZBA/Sources/HEL/AMD64/BootFileReader.cxx b/dev/ZBA/Sources/HEL/AMD64/BootFileReader.cxx
index e94c690a..5686318b 100644
--- a/dev/ZBA/Sources/HEL/AMD64/BootFileReader.cxx
+++ b/dev/ZBA/Sources/HEL/AMD64/BootFileReader.cxx
@@ -139,7 +139,7 @@ Void BFileReader::ReadAll(SizeT readUntil, SizeT chunkToRead, UIntPtr outAddress
else if (readUntil < 1)
readUntil = newPtrInfo.FileSize;
- mWriter.Write(L"newosldr: physical size: ").Write(readUntil).Write("\r");
+ mWriter.Write(L"newosldr: Physical size: ").Write(readUntil).Write("\r");
}
if (!outAddress)
diff --git a/dev/ZBA/Sources/HEL/AMD64/BootJump.S b/dev/ZBA/Sources/HEL/AMD64/BootJump.S
index 2eb745d0..de474c96 100644
--- a/dev/ZBA/Sources/HEL/AMD64/BootJump.S
+++ b/dev/ZBA/Sources/HEL/AMD64/BootJump.S
@@ -1,8 +1,8 @@
.global rt_jump_to_address
.global rt_reset_hardware
-.text
.text
+
.intel_syntax noprefix
/**
diff --git a/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx b/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx
index 1011ce10..c5ee3fb3 100644
--- a/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx
+++ b/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx
@@ -185,7 +185,8 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle,
handoverHdrPtr->f_HeapStart = nullptr;
- while (BS->AllocatePool(EfiLoaderCode, kHandoverHeapSz, &handoverHdrPtr->f_HeapStart) != kEfiOk);
+ while (BS->AllocatePool(EfiLoaderCode, kHandoverHeapSz, &handoverHdrPtr->f_HeapStart) != kEfiOk)
+ ;
handoverHdrPtr->f_VirtualSize =
Descriptor[cDefaultMemoryMap].NumberOfPages; /* # of pages */
@@ -225,6 +226,23 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle,
// format the disk.
// ---------------------------------------------------- //
+ BFileReader readerBootScr(L"bootscr.sys", ImageHandle);
+ readerBootScr.ReadAll(0);
+
+ Boot::BThread* loaderBootScr = nullptr;
+
+ // ------------------------------------------ //
+ // If we succeed in reading the blob, then execute it.
+ // ------------------------------------------ //
+
+ if (readerBootScr.Blob())
+ {
+ loaderBootScr = new Boot::BThread(readerBootScr.Blob());
+ loaderBootScr->SetName("64-bit Boot Screen DLL.");
+ }
+
+ loaderBootScr->Start(handoverHdrPtr);
+
BFileReader readerKernel(L"newoskrnl.dll", ImageHandle);
readerKernel.ReadAll(0);
diff --git a/dev/ZBA/Sources/HEL/AMD64/compile_flags.txt b/dev/ZBA/Sources/HEL/AMD64/compile_flags.txt
index c24c4b09..cc79d229 100644
--- a/dev/ZBA/Sources/HEL/AMD64/compile_flags.txt
+++ b/dev/ZBA/Sources/HEL/AMD64/compile_flags.txt
@@ -1,7 +1,7 @@
-std=c++20
-I../../../
-I../../../../Kernel
--D__NEWOS_AMD64__
+-D__ZKA_AMD64__
-std=c++20
-D__x86_64__
-D__NEWOS_OTA__
diff --git a/dev/ZBA/Sources/Thread.cxx b/dev/ZBA/Sources/Thread.cxx
index c13d25b9..7362e484 100644
--- a/dev/ZBA/Sources/Thread.cxx
+++ b/dev/ZBA/Sources/Thread.cxx
@@ -15,13 +15,10 @@
#include <Modules/CoreCG/TextRenderer.hxx>
#include <CFKit/LoaderUtils.hxx>
-EXTERN_C
-{
+EXTERN_C{
#include <string.h>
}
-#define kHOTypeKernel 100
-
EXTERN EfiBootServices* BS;
namespace Boot
@@ -53,13 +50,13 @@ namespace Boot
return;
}
- if (optHdr->mSubsystem != kNewOSSubsystem)
+ if (optHdr->mSubsystem != kZKASubsystem)
{
- writer.Write("newosldr: Not a New OS executable.\r");
+ writer.Write("newosldr: Not a ZKA Subsystem executable.\r");
return;
}
- writer.Write("newosldr: PE32+ executable detected (New OS Subsystem).\r");
+ writer.Write("newosldr: PE32+ executable detected (ZKA Subsystem).\r");
auto numSecs = hdrPtr->mNumberOfSections;
@@ -83,7 +80,7 @@ namespace Boot
constexpr auto sectionForCode = ".text";
constexpr auto sectionForNewLdr = ".ldr";
- constexpr auto sectionForBSS = ".bss";
+ constexpr auto sectionForBSS = ".bss";
for (SizeT sectIndex = 0; sectIndex < numSecs; ++sectIndex)
{
@@ -92,7 +89,7 @@ namespace Boot
if (StrCmp(sectionForCode, sect->mName) == 0)
{
fStartAddress = (VoidPtr)((UIntPtr)loadStartAddress + optHdr->mAddressOfEntryPoint);
- writer.Write("newosldr: Start Address: ").Write((UIntPtr)fStartAddress).Write("\r");
+ writer.Write("newosldr: Entrypoint of DLL: ").Write((UIntPtr)fStartAddress).Write("\r");
}
else if (StrCmp(sectionForBSS, sect->mName) == 0)
{
@@ -106,11 +103,11 @@ namespace Boot
UInt32 HandoverType;
}* structHandover = (struct HANDOVER_INFORMATION_STUB*)((UIntPtr)fBlob + sect->mPointerToRawData);
- if (structHandover->HandoverMagic != kHandoverMagic ||
- structHandover->HandoverType != kHOTypeKernel)
+ if (structHandover->HandoverMagic != kHandoverMagic &&
+ structHandover->HandoverType != HEL::kTypeKernel)
{
- cg_write_text("NEWOSLDR: INVALID HANDOVER IMAGE! ABORTING...", 40, 10, RGB(0x00, 0x00, 0x00));
- EFI::Stop();
+ writer.Write("newosldr: Entrypoint of SYS: ").Write((UIntPtr)fStartAddress).Write("\r");
+ cg_write_text("NEWOSLDR: NOT AN HANDOVER IMAGE...", 40, 10, RGB(0xFF, 0xFF, 0xFF));
}
}
@@ -149,7 +146,7 @@ namespace Boot
}
HEL::HandoverProc err_fn = [](HEL::HandoverInformationHeader* rcx) -> void {
- cg_write_text("NEWOSLDR: INVALID IMAGE! ABORTING...", 40, 10, RGB(0x00, 0x00, 0x00));
+ cg_write_text("NEWOSLDR: INVALID IMAGE! ABORTING...", 50, 10, RGB(0xFF, 0xFF, 0xFF));
EFI::Stop();
};
@@ -159,7 +156,6 @@ namespace Boot
}
reinterpret_cast<HEL::HandoverProc>(fStartAddress)(handover);
- err_fn(handover);
}
const Char* BThread::GetName()
diff --git a/dev/ZBA/Sources/compile_flags.txt b/dev/ZBA/Sources/compile_flags.txt
index f9ca281f..18bc8512 100644
--- a/dev/ZBA/Sources/compile_flags.txt
+++ b/dev/ZBA/Sources/compile_flags.txt
@@ -2,7 +2,7 @@
-I../
-I../../
-I../../Kernel
--D__NEWOS_AMD64__
+-D__ZKA_AMD64__
-std=c++20
-D__x86_64__
-D__NEWOS_OTA__