Commit Graph

50 Commits

Author SHA1 Message Date
8a54815712 Add all of the functionality to allow the kernel to boot itself.
This is a trimmed down version of Syncboot integrated into the kernel.
The plan is, eventually, to allow the kernel to be booted by Syncboot, but that'll take a lot of research into QEMU.
This was just quicker to do.

This isn't tested, as I still need to figure out how to compile the EFI entry point separately.
They can be linked together, however. That's why the kernel is designed around a PE32+ format.
2019-09-11 23:44:11 +01:00
51af007cd5 Many small changes 2019-09-11 03:59:27 +01:00
ae6d4ecabd ? 2019-09-11 03:59:11 +01:00
2536c58607 Redo the utils file 2019-09-11 03:59:01 +01:00
b13f7e6755 Add debugging to the bootstrap, reformat some function names 2019-09-11 03:58:53 +01:00
c22bd248e3 Serial reformat, minor bug fixes 2019-09-11 03:58:20 +01:00
f79f04361a Added a ClearScreen call to the graphics init.
This should erase everything on the screen before anything else.
2019-08-20 16:42:57 +01:00
d3c8dd45c7 Enable all serial debugging outputs in the interrupt handlers.
Serial should be working now, but i can never trust things to work first time.
2019-08-20 16:41:50 +01:00
4af4ad89a4 Updated the kernel.c comments.
Minor changes, but whatever.
2019-08-20 16:41:11 +01:00
c5178d56bd Semantics. 2019-08-20 16:40:48 +01:00
f33b63d1fb Removed beep on boot.
That stuff hurts, man.
Also moved all the ASM port wrappers into their own file.
2019-08-20 16:40:20 +01:00
d830acbbd4 Fix WritePort mistakes in the serial file. 2019-08-20 16:39:20 +01:00
927aeb0872 Fix an implicit function declaration 2019-08-19 23:51:15 +01:00
9308aaa300 Fix some small pointer issues. 2019-08-19 23:50:59 +01:00
f980acc136 Fix a small bug in the GDT sections that can cause a halt in the kernel.. 2019-08-19 23:02:48 +01:00
2691c1e30e Seriously prioritise output.
Added a beep function to allow PC Speaker output.
This will require an edit to the current QEMU launchscript to get working.
2019-08-19 22:58:26 +01:00
437e10e86c Prioritise output before all else, just so we know when the kernel actually works. 2019-08-19 22:55:28 +01:00
24aad1e4a5 Fix a silly issue with the Interrupts using bits instead of bytes when reading and writing ports. 2019-08-19 22:54:08 +01:00
7cafb959dd Add missing Reserved ISR Handler function. 2019-07-24 21:49:49 +01:00
5ed922bd20 Update serial functions for new WritePort system. 2019-07-24 21:49:35 +01:00
5760ed1dde Add some public-domain memory manipulation files as a stand-in for my AVX functions.
These are messy, but they let the kernel compile.
2019-07-24 20:24:38 +01:00
f92114539c It's interrupt time, baby.
This should bring the kernel to a working state.
Don't forget that the interrupts.c file absolutely must be compiled with -mgeneral-regs-only.
All the other files absolutely must be compiled with -mavx2.

:)
2019-07-24 19:47:44 +01:00
f74809718a Slight cleanup of utils.c
Also added the missing memX functions needed for compilation.
Interrupts next, I do believe.
2019-07-24 15:54:14 +01:00
e4500c27e3 Finish basic memory management.
This won't compile, as it's missing the xAVX functions.
I have a sort-of implementation of them, but it's brutal.
5400 lines total.

For now, they can be substituted with the x functions (remove AVX) to compile the kernel.
2019-07-24 15:53:39 +01:00
f88524a9b9 Starting memory management. 2019-07-24 01:39:12 +01:00
874e7e9a05 The print file.
A whopper. Lots of printing functions, most of them internal.
No this doesn't mean actual physical printing, it's printf, etc.
2019-07-24 01:39:00 +01:00
cdd8b7933f Remove inb and outb, since they have counterparts in ReadPort and WritePort. 2019-07-24 01:38:00 +01:00
f524eee6ff More minor changes.
Header and graphics had some one-liners.
2019-07-24 01:37:39 +01:00
80154dbb51 Update main kernel file and Utils for the new functions.
Can't use term_x any more.
2019-07-23 23:01:12 +01:00
d14da0af89 Add Graphics file.
A few TODOs here, but nothing that can't be handled.
2019-07-23 22:59:33 +01:00
67cbaad539 Add the bootstrap file.
Provides all the functions necessary to get the kernel started, and to continue working in the future.
It is to be split up in the future.
2019-07-23 20:32:24 +01:00
c9bd659f5c Add bootstrap source.
Made to manage holdover from Syncboot, but is half-finished because of
an issue with the prior mentioned header file.
2019-07-22 22:34:02 +01:00
04e70ab274 Commenting improvements
Even more preparing for UEFI.
2019-07-22 22:32:35 +01:00
93729c40b5 Change branding, ProjectRED -> Sync.
Additionally, added header comments to all files.
The next few commits will likely be structure and comment-related.
2019-07-17 02:04:04 +01:00
4edd4b7cc8 Major refactor. Major improvements.
All ISR/IRQ stuff moved into its own header and source.

Comments added on all major parts.

Some optimisations in important functions.

All ASM removed for ISR and IRQ, instead using new GCC directives.
2019-06-27 19:57:54 +01:00
022884e20d Fixes and improvements.
Including a new, rewritten and restructured boot.s file, plus automagical Protected Mode.
2019-06-25 22:31:26 +01:00
Jenny Curle
31d2e10b69 Implement a GDT, IDT with ISR and IRQ
Basically, added error handling, interrupts and basic hardware communication is now possible. Yay.
2019-04-07 23:43:09 +01:00
Jenny Curle
388834ef8a Implement ISRs and fault handling 2019-04-07 19:25:27 +01:00
Jenny Curle
d845a64a4e Update all essential code to working state 2019-04-07 16:58:36 +01:00
Jenny Curle
15dc60aa12 Fix GDT subroutine
Also made some type changes in serial.h
2019-04-07 16:36:51 +01:00
Jenny Curle
e4fcbb20b4 Implement Serial Console messaging.
Intended to be used for debugging, but it's useful.
2019-04-07 15:34:15 +01:00
Jenny Curle
245d09b056 Implemented IDT
But something's wrong with the GDT
Next up is a Serial Console
2019-04-07 13:16:53 +01:00
Jenny Curle
7c3dc4cacc Finish GDT code 2019-04-06 20:25:31 +01:00
Jenny Curle
913c2d2844 Fix merge conflicts 2019-04-06 20:06:19 +01:00
Jenny Curle
a3e0852ec7 Begin support for Global Descriptor Tables 2019-04-06 20:00:11 +01:00
3fe2d7aa33 Format files 2019-04-03 17:46:58 -04:00
Jenny Curle
904cb38128 Add harware reading and writing functions 2019-04-03 09:51:46 +01:00
Jenny Curle
96ed9e6785 Update system to minimum working status 2019-04-01 12:46:40 +01:00
Jenny Curle
b01480d361 Initial update - fixed broken files, dependencies on outside libraries, \nThe system will now compile under 'make all', and no errors are thrown.\nThe system itself hasn't been tested, yet. Here goes... 2019-04-01 12:21:00 +01:00
Jenny Curle
b7fe138549 First upload. Libc incomplete. 2019-04-01 02:18:48 +01:00