Updated README and added some new images
@@ -5,10 +5,9 @@ Idk why i called it that it was 3am and i needed sleep
|
||||
|
||||
## About
|
||||
Kern is a 32-bit OS based on the x86 architecture written in NASM Assembly and C.
|
||||
I'm working on a basic command line as well as a custom filesystem (filetable for now).
|
||||
|
||||
It supports a basic command line and has a custom filesystem.
|
||||
|
||||
_Note: The filesystem is currently a basic filetable._
|
||||
_Since 32-bit switch, a lot of features have been removed because they were dependent on BIOS interrupts_
|
||||
|
||||
## Usage
|
||||
If you want to try kern for some reason, you can.
|
||||
@@ -16,22 +15,26 @@ You might be able to find some releases, or build it using the build.sh script.
|
||||
|
||||
For building, you'll need these tools:
|
||||
- [NASM](https://www.nasm.us/)
|
||||
- [GCC](https://gcc.gnu.org/) on linux
|
||||
- A cross compiler on mac (installation `$ brew tap nativeos/i386-elf-toolchain && brew install i386-elf-binutils i386-elf-gcc`)
|
||||
- [QEMU](https://www.qemu.org/) (for emulation)
|
||||
|
||||
Then just run `./build.sh` and it should build and run qemu.
|
||||
|
||||
I personally wouldn't recommend running this on real hardware, because it's untested and will just probably break you pc, but if you really want to, you can try it, but don't blame me if something goes wrong.
|
||||
|
||||
If you don't know how to do something, try the 'help' command!
|
||||
|
||||
## Some images
|
||||
|
||||
The command prompt: \
|
||||

|
||||
Text editor **concept**: \
|
||||

|
||||
|
||||
Built-in code editor: \
|
||||

|
||||
Available character set: \
|
||||

|
||||
|
||||
Graphics mode test: \
|
||||

|
||||
Available colors: \
|
||||

|
||||
|
||||
_These images may be outdated, Idk_
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
@@ -4,11 +4,12 @@
|
||||
#include "irq.h"
|
||||
|
||||
void main() {
|
||||
// Interrupts
|
||||
setupIdt();
|
||||
setupIsrs();
|
||||
setupIrqs();
|
||||
|
||||
clear(0x0f);
|
||||
print("kern.\n\n", 0x0f);
|
||||
print("kern.\n", 0x0f);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,13 +51,12 @@ void clear(uint8_t attr) {
|
||||
}
|
||||
|
||||
void printHex(uint8_t d, uint8_t attr) {
|
||||
char digits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
|
||||
|
||||
char hexDigits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
|
||||
uint8_t low = d & 0x0f;
|
||||
uint8_t high = (d & 0xf0) >> 4;
|
||||
|
||||
putc(digits[low], attr);
|
||||
putc(digits[high], attr);
|
||||
putc(hexDigits[low], attr);
|
||||
putc(hexDigits[high], attr);
|
||||
}
|
||||
|
||||
void setCursorPos(uint16_t offset) {
|
||||
|
||||