Commit Graph

129 Commits

Author SHA1 Message Date
388ac8e7f9 Added checks to be sure paging is actually enabled on the cpu.
- Made a special assembly file to put CPU check function in. E.G. functions to get the state of
	specific registers

In this case I have created a simple assembly function to get the contents of the CR0 register.
With the help of the c++ preprocessor the value can then be used to check if certains bits are set.
For example to check if the PG (paging) bit is set, indicating that paging is enabled for the
processor.
2022-08-16 19:06:16 +02:00
9172da075a Added identity paging basics
Followed wiki.osdev.org/Setting_Up_Paging
2022-08-15 19:51:22 +02:00
23c68d9863 Setup paging function signatures... Ready to be implemented. 2022-03-18 22:09:04 +01:00
2e2693d1ea Build some structures will need for the virtual filesystem 2022-03-15 21:56:32 +01:00
a93bf566c8 Added FAT-16 screenshot 2022-03-12 17:04:38 +01:00
2e59e6593e Add proper Physical memory management to this branch
to ensure it doesn't get too out of date

We can now run the FAT command to demo reading out the FAT16 filesystem,
however this will cause the need for a reboot as after this command. We are FOR NOW
not able to put in any new commands
2022-03-12 16:56:50 +01:00
b4cff3e667 Basic block allocation for physical memory allocation.
- 1 block = 4096 bytes : because this will make page fault handling possibly
somewhat easier

- 1 byte in the bitmap = 8 blocks of physical memory

unsure if the allocation is perfect ... guess i'll find out some day if this is actually correct.

The bitmap needs 16kb to keep track of 2gb of physical memory. Seems a decent percentage to me.
2022-02-26 20:55:34 +01:00
7330b81a10 Started definition file for a CMOS driver 2021-12-29 16:28:55 +01:00
97606dbf71 Clean up of debugging logs and new commands.
As this project grows it becomes important to keep things properly organised.
In this commit I've put some effort into making the kernel.cpp file more consise and thus improve its
readability.
Certain parts of the code have gotten their own definition file where before it
was only a header file.

- Moving the Supervisor Terminal into its own definition file.
- Subtracting debugging messages with preprocessor ifdef's
- Time and Date is now not just a header but has its own proper definition file
- Banner is displayed when booting up
- Terminal has a couple new commands

	Commmand		Description
	=================|||||===================================================
	DATE (was TIME)		Displays the curren time, date and ticks
	VERSION			Displays system version information
	MEMORY			Displays memory information
2021-12-29 16:15:18 +01:00
7496299761 Basic Intel Exceptions
Any interrupt thrown for any Intel defined Exception is not only being caught but
displays an appropriate message to the screen.

Changes made in src/kernel/idt/idt.cpp
2021-12-28 19:54:10 +01:00
0d8ef065e0 Interactive supervisor mode
To ease the pain of debuggin I can now interact with the system through a
very simplistic terminal. Hopefully things can be tested more easily by activating
the piece through a simple command. The max characters for a command is 10.

To achieve this I have had to make the following changes.
- Changed IRQ to update a global status variable
- Added a standalone keyboard driver with getKey functions
- Changed the main kernel loop to display a prompt
- Added a strncmp function to the clib/string file
2021-12-28 19:52:48 +01:00
19b9cfe908 Reading files from disk
- Modified makefile to start the virtualbox vm on `make run`
- Listing files in rootdirectory with their properties and
	content
2021-12-27 19:35:24 +01:00
b8d75dddae Moving lots into seperate folders to cleanup the project structure
- Drivers have now gotten Category folders
- RSDP is now called ACPI
- Ports folders is now called Serial to show that its a serial driver
- Paging assembly definition is moved to the memory folder
- VGA folder has moved into the drivers
- Patched the makefile and include statements to reflect the changes
	in the project structure
2021-12-27 15:26:32 +01:00
fb2a19e11d FAT16 structures read from disk using ATA.
The proper reading of folders and files is not yet implemented. Although
it is close.
2021-12-24 21:31:10 +01:00
72008b0a7a Find RSD Table in early BIOS memory
Adding functions and structures to read the RSD.
2021-12-24 20:13:28 +01:00
2621399349 Small code fix up
- Moved memcmp function to temporary libc/mem.h
- I/O functions are inlined
- ATA_DEVICE read function won't print the 512 bytes by default
2021-12-24 20:08:18 +01:00
767dac7e73 Adjustments to IDE driver 2021-12-23 17:46:27 +01:00
6d946ddce3 Struct defining the EXT2 filesystems superblock 2021-12-23 17:44:27 +01:00
9173b90eb1 Structures added for MasterBootRecord support 2021-12-23 17:43:25 +01:00
bd5d3f5d49 Basic PIO ATA driver which can read and identify ata drives 2021-12-23 17:41:07 +01:00
88cc1d75bb Re-enabled interrupts from keyboard, Enabled and configured the PIT to throw interrupts at a regular interval 2021-12-20 21:53:57 +01:00
2db83b33e1 ATAPI can identify a device correctly 2021-12-01 00:00:45 +01:00
5a68f77b33 Started the base implementation for PCI IDE drivers 2021-11-29 20:00:28 +01:00
72438ae70d Makefile: Added ISO test option for qemu. 2021-11-28 23:06:21 +01:00
a36e3d1c16 PCI support checked of on features.md, PCI enumeration screenshot added to readme.md 2021-11-28 21:12:12 +01:00
08b97af863 PCI: enumeration code cleanup 2021-11-28 21:07:05 +01:00
5089da5e9e PCI: Improved syntax of PCI enumeration, Added a PCI information storage class and structs 2021-11-28 16:46:16 +01:00
ec654143c6 Basic PCI Enumeration 2021-11-25 22:05:16 +01:00
23ede25ed6 Small changes to reflect renaming in readme.md 2021-11-22 20:04:14 +01:00
ba043ef31b Small improvements on Makefile, TODO.md has been renamed to features.md 2021-11-22 20:01:12 +01:00
88c5196586 Rewritten GDT logic 2021-11-16 21:17:49 +01:00
3a87b74224 Renaming/Moving stuff into a different file structure 2021-11-16 13:57:15 +01:00
32909aaed9 GDT is running again 2021-11-06 21:56:42 +01:00
5fb55367ca Implementation of simplistic physical memory manager 2021-11-06 16:27:13 +01:00
d79fc6e8e2 Split up boot.s into multiple assembly definitions, Started page frame allocator implementation, kterm definition is now considered c plus plus 2021-11-06 14:05:29 +01:00
5f39f7e7ed Merge branch 'dev' into InterruptHandling 2021-11-02 21:56:57 +01:00
d455735ea2 Modified screenshot?? 2021-11-02 21:44:50 +01:00
bdcf9e66f8 Small adjustment in directory structure of memory and bootloader files in kernel 2021-11-02 21:15:00 +01:00
c9b789ed7b Added a bunch of new stuff no time to figure out what's what, No longer any compiler warnings 2021-11-02 21:03:11 +01:00
b4b615ae97 Checked off some todo's 2021-10-23 12:27:13 +01:00
092c5d520d Added option to create an iso 2021-10-23 12:26:15 +01:00
643f2d708b Added emulator options, Added header for VBE driver, Added CPUID function, Added demodisk.img as drive 2021-07-22 22:14:58 +01:00
f2c8b8ac5c Improved multiboot compliance 2021-07-22 20:02:47 +01:00
f48f8072c0 Merge InterruptHandling into MemoryManagement 2021-07-22 19:11:01 +01:00
9dc7a05da1 Basic keyboard input 2021-07-21 21:31:57 +01:00
7409e579c8 Basic keyboard input 2021-07-21 21:31:57 +01:00
59bcc17668 Kernel now responding to keyboard interrupts 2021-05-28 22:20:13 +01:00
04f941a625 Kernel now responding to keyboard interrupts 2021-05-28 22:20:13 +01:00
5f50f8c013 Fix up wrong interrupt handler numbers in boot.s 2021-05-28 22:18:50 +01:00
24a855bb3b Fix up wrong interrupt handler numbers in boot.s 2021-05-28 22:18:50 +01:00