From efc6b5d169d2b6eaabe7384141cec6054ae622a0 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Tue, 2 Apr 2024 21:35:34 +0200 Subject: OS: Changes related to System API, breaking changes, also added HTMLLib. Signed-off-by: Amlal El Mahrouss --- Private/Builtins/Toolbox/Toolbox.hxx | 77 +++++++++++++++++++++++++++++++---- Private/Builtins/Toolbox/Utils.hxx | 70 ------------------------------- Private/KernelRsrc.rc | 25 ++++++++++++ Private/NewKit/Application.hxx | 2 +- Private/Root/Boot/kernel-logo.ico | Bin 0 -> 150570 bytes Private/Root/Boot/kernel-logo.svg | 10 +++++ Private/makefile | 1 + 7 files changed, 106 insertions(+), 79 deletions(-) delete mode 100644 Private/Builtins/Toolbox/Utils.hxx create mode 100644 Private/KernelRsrc.rc create mode 100644 Private/Root/Boot/kernel-logo.ico create mode 100644 Private/Root/Boot/kernel-logo.svg (limited to 'Private') diff --git a/Private/Builtins/Toolbox/Toolbox.hxx b/Private/Builtins/Toolbox/Toolbox.hxx index f831acb5..2ac23267 100644 --- a/Private/Builtins/Toolbox/Toolbox.hxx +++ b/Private/Builtins/Toolbox/Toolbox.hxx @@ -8,11 +8,72 @@ #include -EXTERN_C NewOS::Void _hal_init_mouse(); -EXTERN_C NewOS::Boolean _hal_draw_mouse(); -EXTERN_C NewOS::Void _hal_handle_mouse(); -EXTERN_C NewOS::Boolean _hal_left_button_pressed(); -EXTERN_C NewOS::Boolean _hal_middle_button_pressed(); -EXTERN_C NewOS::Boolean _hal_right_button_pressed(); - -#include +EXTERN_C NewOS::Void _hal_init_mouse(); +EXTERN_C NewOS::Boolean _hal_draw_mouse(); +EXTERN_C NewOS::Void _hal_handle_mouse(); +EXTERN_C NewOS::Boolean _hal_left_button_pressed(); +EXTERN_C NewOS::Boolean _hal_middle_button_pressed(); +EXTERN_C NewOS::Boolean _hal_right_button_pressed(); + +#define ToolboxInitRsrc() NewOS::SizeT uA = 0 + +#define kClearClr RGB(00, 00, 00) + +#define ToolboxClearRsrc() uA = 0 + +/// @brief Draws a resource. +#define ToolboxDrawRsrc(ImgPtr, _Height, _Width, BaseX, BaseY) \ + uA = 0; \ + \ + for (NewOS::SizeT i = BaseX; i < _Height + BaseX; ++i) { \ + for (NewOS::SizeT u = BaseY; u < _Width + BaseY; ++u) { \ + if (ImgPtr[uA] == 0) { \ + *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ + 4 * \ + kHandoverHeader->f_GOP \ + .f_PixelPerLine * \ + i + \ + 4 * u))) |= ImgPtr[uA]; \ + } else { \ + *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ + 4 * \ + kHandoverHeader->f_GOP \ + .f_PixelPerLine * \ + i + \ + 4 * u))) = ImgPtr[uA]; \ + } \ + \ + ++uA; \ + } \ + } + + +/// @brief Cleans a resource. +#define ToolboxClearZone(_Height, _Width, BaseX, BaseY) \ + \ + for (NewOS::SizeT i = BaseX; i < _Height + BaseX; ++i) { \ + for (NewOS::SizeT u = BaseY; u < _Width + BaseY; ++u) { \ + *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ + 4 * \ + kHandoverHeader->f_GOP \ + .f_PixelPerLine * \ + i + \ + 4 * u))) = kClearClr; \ + } \ + } + + +/// @brief Draws inside a zone. +#define ToolboxDrawZone(_Clr, _Height, _Width, BaseX, BaseY) \ + \ + for (NewOS::SizeT i = BaseX; i < _Width + BaseX; ++i) { \ + for (NewOS::SizeT u = BaseY; u < _Height + BaseY; ++u) { \ + *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ + 4 * \ + kHandoverHeader->f_GOP \ + .f_PixelPerLine * \ + i + \ + 4 * u))) = _Clr; \ + } \ + } + diff --git a/Private/Builtins/Toolbox/Utils.hxx b/Private/Builtins/Toolbox/Utils.hxx deleted file mode 100644 index 29ca585a..00000000 --- a/Private/Builtins/Toolbox/Utils.hxx +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef __RSRC_UTIL__ -#define __RSRC_UTIL__ - -// Last Rev -// Sat Feb 24 CET 2024 - -#define ToolboxInitRsrc() NewOS::SizeT uA = 0 - -#define kClearClr RGB(00, 00, 00) - -#define ToolboxClearRsrc() uA = 0 - -/// @brief Draws a resource. -#define ToolboxDrawRsrc(ImgPtr, _Height, _Width, BaseX, BaseY) \ - uA = 0; \ - \ - for (NewOS::SizeT i = BaseX; i < _Height + BaseX; ++i) { \ - for (NewOS::SizeT u = BaseY; u < _Width + BaseY; ++u) { \ - if (ImgPtr[uA] == 0) { \ - *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ - 4 * \ - kHandoverHeader->f_GOP \ - .f_PixelPerLine * \ - i + \ - 4 * u))) |= ImgPtr[uA]; \ - } else { \ - *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ - 4 * \ - kHandoverHeader->f_GOP \ - .f_PixelPerLine * \ - i + \ - 4 * u))) = ImgPtr[uA]; \ - } \ - \ - ++uA; \ - } \ - } - - -/// @brief Cleans a resource. -#define ToolboxClearZone(_Height, _Width, BaseX, BaseY) \ - \ - for (NewOS::SizeT i = BaseX; i < _Height + BaseX; ++i) { \ - for (NewOS::SizeT u = BaseY; u < _Width + BaseY; ++u) { \ - *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ - 4 * \ - kHandoverHeader->f_GOP \ - .f_PixelPerLine * \ - i + \ - 4 * u))) = kClearClr; \ - } \ - } - - -/// @brief Draws inside a zone. -#define ToolboxDrawZone(_Clr, _Height, _Width, BaseX, BaseY) \ - \ - for (NewOS::SizeT i = BaseX; i < _Width + BaseX; ++i) { \ - for (NewOS::SizeT u = BaseY; u < _Height + BaseY; ++u) { \ - *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ - 4 * \ - kHandoverHeader->f_GOP \ - .f_PixelPerLine * \ - i + \ - 4 * u))) = _Clr; \ - } \ - } - - -#endif diff --git a/Private/KernelRsrc.rc b/Private/KernelRsrc.rc new file mode 100644 index 00000000..3f5fffd3 --- /dev/null +++ b/Private/KernelRsrc.rc @@ -0,0 +1,25 @@ +1 ICON "Root/Boot/kernel-logo.ico" + +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080904E4" + BEGIN + VALUE "CompanyName", "Mahrouss Logic" + VALUE "FileDescription", "NewOS Microkernel for AMD64" + VALUE "FileVersion", "1.0" + VALUE "InternalName", "NewKernel" + VALUE "LegalCopyright", "Mahrouss Logic" + VALUE "OriginalFilename", "NewKernel.exe" + VALUE "ProductName", "NewKernel" + VALUE "ProductVersion", "1.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x809, 1252 + END +END \ No newline at end of file diff --git a/Private/NewKit/Application.hxx b/Private/NewKit/Application.hxx index 8075e8ac..f19dbd97 100644 --- a/Private/NewKit/Application.hxx +++ b/Private/NewKit/Application.hxx @@ -27,4 +27,4 @@ typedef struct Application final { NewOS::Void(*Query)(struct Application* Self, NewOS::VoidPtr* Dst, NewOS::SizeT SzDst, NewOS::XRN::GUIDSequence GuidOf); } Application, *ApplicationRef; -#define object_cast reinterpret_cast +#define app_cast reinterpret_cast diff --git a/Private/Root/Boot/kernel-logo.ico b/Private/Root/Boot/kernel-logo.ico new file mode 100644 index 00000000..945049b9 Binary files /dev/null and b/Private/Root/Boot/kernel-logo.ico differ diff --git a/Private/Root/Boot/kernel-logo.svg b/Private/Root/Boot/kernel-logo.svg new file mode 100644 index 00000000..751ec02c --- /dev/null +++ b/Private/Root/Boot/kernel-logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Private/makefile b/Private/makefile index af311d44..0a47157a 100644 --- a/Private/makefile +++ b/Private/makefile @@ -43,6 +43,7 @@ MOVEALL=./MoveAll.sh .PHONY: h-core-amd64-epm h-core-amd64-epm: clean + windres KernelRsrc.rc -O coff -o KernelRsrc.obj $(CC) $(CCFLAGS) $(DISKDRIVER) $(DEBUG) $(wildcard Source/*.cxx HALKit/AMD64/Storage/*.cxx) $(wildcard HALKit/AMD64/PCI/*.cxx) $(wildcard Source/Network/*.cxx) $(wildcard Source/Storage/*.cxx) $(wildcard HALKit/AMD64/*.cxx) $(wildcard HALKit/AMD64/*.cpp) $(wildcard HALKit/AMD64/*.s) $(ASM) $(ASMFLAGS) HALKit/AMD64/HalInterruptAPI.asm $(ASM) $(ASMFLAGS) HALKit/AMD64/HalSMPCoreManager.asm -- cgit v1.2.3