summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlalelmahrouss@icloud.com>2024-02-24 18:42:41 +0100
committerAmlal El Mahrouss <amlalelmahrouss@icloud.com>2024-02-24 18:43:09 +0100
commit27e0af3ecfe0be226f88837634111299121e5ddb (patch)
treec6db44321fa7af03acd040772f9220c1827ceb25
parenta481180f3bcb979fecdced3851506bf572327fcf (diff)
Drivers and Rsrc: Adding PS/2 support, add DrawResource macro.
Signed-off-by: Amlal El Mahrouss <amlalelmahrouss@icloud.com>
-rw-r--r--Private/Drivers/PS2/Mouse.hxx49
-rw-r--r--Private/KernelKit/Rsrc/HCore.hxx1
-rw-r--r--Private/KernelKit/Rsrc/Util.hxx30
-rw-r--r--Private/LinkerScripts/16x0.json (renamed from Private/Linker/16x0.json)0
-rw-r--r--Private/LinkerScripts/32x0.json (renamed from Private/Linker/32x0.json)0
-rw-r--r--Private/LinkerScripts/64x0.json (renamed from Private/Linker/64x0.json)0
-rw-r--r--Private/Source/KernelMain.cxx38
7 files changed, 83 insertions, 35 deletions
diff --git a/Private/Drivers/PS2/Mouse.hxx b/Private/Drivers/PS2/Mouse.hxx
new file mode 100644
index 00000000..20cac560
--- /dev/null
+++ b/Private/Drivers/PS2/Mouse.hxx
@@ -0,0 +1,49 @@
+/* -------------------------------------------
+
+ Copyright Mahrouss Logic
+
+ File: Mouse.hxx
+ Purpose: PS/2 mouse.
+
+ Revision History:
+
+ 03/02/24: Added file (amlel)
+
+------------------------------------------- */
+
+#pragma once
+
+#include <ArchKit/ArchKit.hpp>
+#include <CompilerKit/CompilerKit.hpp>
+#include <NewKit/Defines.hpp>
+
+namespace HCore {
+
+class PS2Mouse {
+ explicit PS2Mouse() = default;
+ ~PS2Mouse() = default;
+
+ HCORE_COPY_DEFAULT(PS2Mouse);
+
+ struct PS2MouseTraits final {
+ Int16 Status;
+ Int32 X, Y;
+ };
+
+ PS2MouseTraits Read() noexcept {
+ PS2MouseTraits stat;
+
+ return stat;
+ }
+
+ private:
+ UInt8 Wait() {
+ while (!(HAL::In8(0x64) & 1)) {
+ asm("pause");
+ } // wait until we can read
+
+ // return the ack bit.
+ return HAL::In8(0x64);
+ }
+};
+} // namespace HCore
diff --git a/Private/KernelKit/Rsrc/HCore.hxx b/Private/KernelKit/Rsrc/HCore.hxx
index 323fe23c..d3c3217d 100644
--- a/Private/KernelKit/Rsrc/HCore.hxx
+++ b/Private/KernelKit/Rsrc/HCore.hxx
@@ -3,6 +3,7 @@
#define HCORELOGO_HEIGHT 512
#define HCORELOGO_WIDTH 512
+
// array size is 786432
inline const unsigned int HCoreLogo[] = {
0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xc9c9c9, 0xbcbcbc, 0xb9b9b9, 0xb8b8b8, 0xb9b9b9, 0xbababa, 0xb9b9b9, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b7b7, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb8b8b8, 0xb7b7b7, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb8b8b8, 0xb7b7b7, 0xb9b9b9, 0xb8b8b8, 0xb9b9b9, 0xb8b8b8, 0xbfbfbf, 0xaaaaaa, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
diff --git a/Private/KernelKit/Rsrc/Util.hxx b/Private/KernelKit/Rsrc/Util.hxx
new file mode 100644
index 00000000..4322890c
--- /dev/null
+++ b/Private/KernelKit/Rsrc/Util.hxx
@@ -0,0 +1,30 @@
+#ifndef __RSRC_UTIL__
+#define __RSRC_UTIL__
+
+/// @brief draws a resource icon.
+#define DrawResource(ImgPtr, HandoverHeader, Width, Height, BaseX, BaseY) \
+ HCore::SizeT uA = 0; \
+ \
+ for (HCore::SizeT i = BaseX; i < Width + BaseX; ++i) { \
+ for (HCore::SizeT u = BaseY; u < Height + BaseY; ++u) { \
+ if (ImgPtr[uA] == 0) { \
+ *(((volatile HCore::UInt32*)(HandoverHeader->f_GOP.f_The + \
+ 4 * \
+ HandoverHeader->f_GOP \
+ .f_PixelPerLine * \
+ i + \
+ 4 * u))) |= ImgPtr[uA]; \
+ } else { \
+ *(((volatile HCore::UInt32*)(HandoverHeader->f_GOP.f_The + \
+ 4 * \
+ HandoverHeader->f_GOP \
+ .f_PixelPerLine * \
+ i + \
+ 4 * u))) = ImgPtr[uA]; \
+ } \
+ \
+ ++uA; \
+ } \
+ }
+
+#endif
diff --git a/Private/Linker/16x0.json b/Private/LinkerScripts/16x0.json
index f41c0fc7..f41c0fc7 100644
--- a/Private/Linker/16x0.json
+++ b/Private/LinkerScripts/16x0.json
diff --git a/Private/Linker/32x0.json b/Private/LinkerScripts/32x0.json
index f41c0fc7..f41c0fc7 100644
--- a/Private/Linker/32x0.json
+++ b/Private/LinkerScripts/32x0.json
diff --git a/Private/Linker/64x0.json b/Private/LinkerScripts/64x0.json
index f41c0fc7..f41c0fc7 100644
--- a/Private/Linker/64x0.json
+++ b/Private/LinkerScripts/64x0.json
diff --git a/Private/Source/KernelMain.cxx b/Private/Source/KernelMain.cxx
index 1b2698c4..cfd27748 100644
--- a/Private/Source/KernelMain.cxx
+++ b/Private/Source/KernelMain.cxx
@@ -13,6 +13,7 @@
#include <KernelKit/Framebuffer.hpp>
#include <KernelKit/PEFCodeManager.hxx>
#include <KernelKit/Rsrc/HCore.hxx>
+#include <KernelKit/Rsrc/Util.hxx>
#include <NewKit/Json.hpp>
#include <NewKit/KernelHeap.hpp>
#include <NewKit/UserHeap.hpp>
@@ -48,48 +49,15 @@ EXTERN_C void RuntimeMain(
** This draws the background.
*/
- for (HCore::SizeT i = 0ul; i < HandoverHeader->f_GOP.f_Width; ++i) {
- for (HCore::SizeT u = 0ul; u < HandoverHeader->f_GOP.f_Height; ++u) {
- *(((volatile HCore::UInt32*)(HandoverHeader->f_GOP.f_The +
- 4 * HandoverHeader->f_GOP.f_PixelPerLine *
- i +
- 4 * u))) = RGB(20, 20, 20);
- }
- }
+ DrawResource(HCoreLogo, HandoverHeader, HCORELOGO_WIDTH, HCORELOGO_HEIGHT,
+ 10, 10);
/**
** This draws the HCore resource icon..
*/
- HCore::SizeT uA = 0;
-
- for (HCore::SizeT i = 10ul; i < HCORELOGO_WIDTH + 10; ++i) {
- for (HCore::SizeT u = 10ul; u < HCORELOGO_HEIGHT + 10; ++u) {
- if (HCoreLogo[uA] == 0) {
- *(((volatile HCore::UInt32*)(HandoverHeader->f_GOP.f_The +
- 4 *
- HandoverHeader->f_GOP
- .f_PixelPerLine *
- i +
- 4 * u))) |= HCoreLogo[uA];
- } else {
- *(((volatile HCore::UInt32*)(HandoverHeader->f_GOP.f_The +
- 4 *
- HandoverHeader->f_GOP
- .f_PixelPerLine *
- i +
- 4 * u))) = HCoreLogo[uA];
- }
-
- ++uA;
- }
- }
-
/**
This mounts the NewFS drive.
*/
-
- HCore::kcout << "HCoreKrnl: Setup is starting...\n";
- HCore::kcout << "HCoreKrnl: Mounting drive A: ...\n";
}
}