summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKA
diff options
context:
space:
mode:
authorAmlal <amlal@el-mahrouss-logic.com>2024-09-12 05:32:09 +0200
committerAmlal <amlal@el-mahrouss-logic.com>2024-09-12 05:32:09 +0200
commit95f2fc6a9ba93d98a81a817c489de5946dc3f13b (patch)
treeb97f07c20b41a34550eaa37bc877507e044e356a /dev/ZKA
parentb323d403149db3d720a63af1087d44718821bd67 (diff)
Kernel and Bootloader improvements.
- The Allocator works, we have to find a free memory region for the kernel though. - Add Init procedure to DriveMgr. - Refactor CG for cgwm.sys Signed-off-by: Amlal <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'dev/ZKA')
-rw-r--r--dev/ZKA/FirmwareKit/Handover.hxx3
-rw-r--r--dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx4
-rw-r--r--dev/ZKA/HALKit/AMD64/HalKernelMain.cxx6
-rw-r--r--dev/ZKA/KernelKit/DriveMgr.hxx1
-rw-r--r--dev/ZKA/Modules/CoreCG/WindowRenderer.hxx8
-rw-r--r--dev/ZKA/Sources/DriveMgr.cxx16
-rw-r--r--dev/ZKA/Sources/FS/NeFS.cxx14
-rw-r--r--dev/ZKA/Sources/KernelCheck.cxx6
8 files changed, 32 insertions, 26 deletions
diff --git a/dev/ZKA/FirmwareKit/Handover.hxx b/dev/ZKA/FirmwareKit/Handover.hxx
index 41c038ae..a08ff725 100644
--- a/dev/ZKA/FirmwareKit/Handover.hxx
+++ b/dev/ZKA/FirmwareKit/Handover.hxx
@@ -23,8 +23,7 @@
#define kHandoverVersion 0x0117
/* Initial bitmap pointer location and size. */
-#define kHandoverBitMapStart (0x100000000)
-#define kHandoverBitMapSz (gib_cast(4))
+#define kHandoverBitMapSz (gib_cast(3))
/* Executable base */
#define kHandoverExecBase (0x4000000)
diff --git a/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx b/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx
index 4549021f..b38fb5ef 100644
--- a/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx
+++ b/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx
@@ -126,7 +126,9 @@ namespace Kernel
ptr_new = traits.FindBitMap(kKernelBitMpStart, size, rw, user);
if (!ptr_new)
- return nullptr;
+ {
+ ke_stop(RUNTIME_CHECK_PAGE);
+ }
if (rw)
mm_map_page(ptr_new, eFlagsRw | eFlagsPresent);
diff --git a/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx
index b7dfee8a..ef743c20 100644
--- a/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx
+++ b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx
@@ -86,7 +86,11 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept
if (kHandoverHeader->f_HardwareTables.f_MultiProcessingEnabled)
Kernel::HAL::mp_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr);
- Kernel::NeFileSystemMgr::Mount(Kernel::mm_new_class<Kernel::NeFileSystemMgr>());
+ Kernel::NeFileSystemMgr* mgr = (Kernel::mm_new_class<Kernel::NeFileSystemMgr>());
+ Kernel::NeFileSystemMgr::Mount(mgr);
+
+ delete (NFS_CATALOG_STRUCT*)mgr->CreateDirectory("\\Boot\\");
+ delete (NFS_CATALOG_STRUCT*)mgr->CreateDirectory("\\Support\\");
mp_do_user_switch();
diff --git a/dev/ZKA/KernelKit/DriveMgr.hxx b/dev/ZKA/KernelKit/DriveMgr.hxx
index 55c4912d..e2e0bc3a 100644
--- a/dev/ZKA/KernelKit/DriveMgr.hxx
+++ b/dev/ZKA/KernelKit/DriveMgr.hxx
@@ -63,6 +63,7 @@ namespace Kernel
Void (*fInput)(DrivePacket* packetPtr);
Void (*fOutput)(DrivePacket* packetPtr);
Void (*fVerify)(DrivePacket* packetPtr);
+ Void (*fInit)(DrivePacket* packetPtr);
const Char* (*fDriveKind)(Void);
};
diff --git a/dev/ZKA/Modules/CoreCG/WindowRenderer.hxx b/dev/ZKA/Modules/CoreCG/WindowRenderer.hxx
index ebd47ac9..153cb64f 100644
--- a/dev/ZKA/Modules/CoreCG/WindowRenderer.hxx
+++ b/dev/ZKA/Modules/CoreCG/WindowRenderer.hxx
@@ -47,7 +47,7 @@ namespace CG
Size w_child_count{0};
struct UI_WINDOW_STRUCT* w_child_elements[cChildElementCount]{0};
struct UI_WINDOW_STRUCT* w_parent{nullptr};
- UInt32* display_ptr{nullptr};
+ UInt32* w_display_ptr{nullptr};
Bool w_needs_repaint{false};
};
@@ -92,8 +92,8 @@ namespace CG
wnd->w_w = width;
wnd->w_h = height;
- wnd->display_ptr = new UInt32[width * height];
- rt_set_memory(wnd->display_ptr, CGColor(0xF5, 0xF5, 0xF5), width * height);
+ wnd->w_display_ptr = new UInt32[width * height];
+ rt_set_memory(wnd->w_display_ptr, CGColor(0xF5, 0xF5, 0xF5), width * height);
return wnd;
}
@@ -182,7 +182,7 @@ namespace CG
// Draw fake controls, just for the looks of it (WINDOW ONLY)
if (wnd[index]->w_type == cWndFlagWindow)
{
- CGDrawBitMapInRegion(wnd[index]->display_ptr, wnd[index]->w_h, wnd[index]->w_w, wnd[index]->w_y, wnd[index]->w_x);
+ CGDrawBitMapInRegion(wnd[index]->w_display_ptr, wnd[index]->w_h, wnd[index]->w_w, wnd[index]->w_y, wnd[index]->w_x);
CGDrawInRegion(CGColor(0xFF, 0xFF, 0xFF), wnd[index]->w_w, FLATCONTROLS_HEIGHT, wnd[index]->w_y, wnd[index]->w_x);
if (wnd[index]->w_sub_type != cWndFlagHideCloseControl)
diff --git a/dev/ZKA/Sources/DriveMgr.cxx b/dev/ZKA/Sources/DriveMgr.cxx
index 5d0f7fc3..82291ada 100644
--- a/dev/ZKA/Sources/DriveMgr.cxx
+++ b/dev/ZKA/Sources/DriveMgr.cxx
@@ -58,7 +58,7 @@ namespace Kernel
/// @brief Executes a disk check on the ATA drive.
/// @param pckt
/// @return
- Void ke_drv_check_disk(DriveTrait::DrivePacket* pckt)
+ Void ke_drv_init(DriveTrait::DrivePacket* pckt)
{
if (!pckt)
{
@@ -84,21 +84,21 @@ namespace Kernel
/// @param
/// @return
#ifdef __ATA_PIO__
- const Char* io_drive_kind(Void)
+ const Char* ke_drv_kind(Void)
{
return "ATA-PIO";
}
#endif
#ifdef __ATA_DMA__
- const Char* io_drive_kind(Void)
+ const Char* ke_drv_kind(Void)
{
return "ATA-DMA";
}
#endif
#ifdef __AHCI__
- const Char* io_drive_kind(Void)
+ const Char* ke_drv_kind(Void)
{
return "AHCI";
}
@@ -124,7 +124,8 @@ namespace Kernel
trait.fInput = io_drv_unimplemented;
trait.fOutput = io_drv_unimplemented;
trait.fVerify = io_drv_unimplemented;
- trait.fDriveKind = io_drive_kind;
+ trait.fInit = io_drv_unimplemented;
+ trait.fDriveKind = ke_drv_kind;
return trait;
}
@@ -140,8 +141,9 @@ namespace Kernel
trait.fInput = ke_drv_input;
trait.fOutput = ke_drv_output;
- trait.fVerify = ke_drv_check_disk;
- trait.fDriveKind = io_drive_kind;
+ trait.fVerify = io_drv_unimplemented;
+ trait.fInit = ke_drv_init;
+ trait.fDriveKind = ke_drv_kind;
kcout << "Construct drive with success.\r";
diff --git a/dev/ZKA/Sources/FS/NeFS.cxx b/dev/ZKA/Sources/FS/NeFS.cxx
index 9c33b78c..8bd467c6 100644
--- a/dev/ZKA/Sources/FS/NeFS.cxx
+++ b/dev/ZKA/Sources/FS/NeFS.cxx
@@ -790,9 +790,13 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::FindCatalog(_Input const Char* catalogNa
{
delete parentCatalog;
}
+ else
+ {
+ return nullptr;
+ }
}
- kcout << "fetching catalog...\r";
+ kcout << "Fetching catalog...\r";
NeFSSearchThroughCatalogList:
while (drive.fPacket.fPacketGood)
@@ -980,7 +984,7 @@ VoidPtr NeFSParser::ReadCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog,
if (dataForkLba < kNeFSCatalogStartAddress)
{
- delete[] fs_buf;
+ delete fs_buf;
return nullptr;
}
@@ -1038,11 +1042,11 @@ namespace Kernel::Detail
sMountpointInterface.C() = io_construct_drive();
sMountpointInterface.D() = io_construct_drive();
- kcout << "Testing A:\r";
+ kcout << "Constructing A:\r";
- sMountpointInterface.A().fVerify(&sMountpointInterface.A().fPacket);
+ sMountpointInterface.A().fInit(&sMountpointInterface.A().fPacket);
- kcout << "Testing A: [ OK ]\r";
+ kcout << "Constructing A: [ OK ]\r";
return true;
}
diff --git a/dev/ZKA/Sources/KernelCheck.cxx b/dev/ZKA/Sources/KernelCheck.cxx
index 833ac6de..4c316c0b 100644
--- a/dev/ZKA/Sources/KernelCheck.cxx
+++ b/dev/ZKA/Sources/KernelCheck.cxx
@@ -138,12 +138,6 @@ namespace Kernel
Void RecoveryFactory::Recover() noexcept
{
- if (NeFileSystemMgr::GetMounted())
- {
- NeFileSystemMgr::GetMounted()->CreateSwapFile("\\Boot\\$DUMP");
- NeFileSystemMgr::GetMounted()->CreateSwapFile("\\Support\\$CHKDSK");
- }
-
PowerFactoryInterface power(nullptr);
power.Reboot();
}