- Features:
- ✅ Architecture x86;
- ✅ Boot process usign a single stage in assembly;
- ✅ Vga Text mode 80x25;
- ✅ Print text on screen;
- ✅ Scroll content up on last line reached and is full filled;
- ✅ Supported Scape sequences:
- ✅ \n = Line break;
- ✅ \t = Tabulation;
- ⬜ \r = Carriage return (move cursor position to start of the line);
- ✅ \b = Backspace;
- ⬜ \f = Form feed (clear screen);
- ✅ Format strings (stdlib::kprintf("A String: %s", "My string")):
- ✅ %s = String data type;
- ✅ %c = Char data type;
- ✅ %d = Integer data type;
- ✅ %x = Hex representation of int data type;
- ✅ %b = Binary representation of int data type;
- ✅ %0d = Leading zeros for above format types %d, $x, %b;
- ✅ PS/2 8042 - Controller:
- ✅ Self Tests and Configuration;
- ✅ PS/2 Keyboard;
- ✅ Self Tests and Configuration;
- ✅ Key code scan read;
- ✅ ASCII key buffer to send key data to processes;
- ✅ PIT - Programmable Interval Timer;
- ✅ Minimum implementation;
- ✅ Kernel sleep function pit::ksleep(int Millis);
- ✅ Configurable channels;
- ✅ GDT - Global Descriptor Table;
- ✅ IDT - Interrupt Descriptor Table;
- ✅ ISR - Interrupt Service Routine;
- ✅ CPU Interruptions (0-31);
- ✅ PIC Interruptions (32-47);
- ✅ Kernel Interruptions (48-255) (Kernel Syscalls);
- ✅ int 0x30 Syscall that handle all SYSFUNCS;
- ✅ PIC 8259 - Programmable Interrupt Controller;
- ✅ Remaped the Master and Slave PIC IRQs vectors to offsets (Master = 0x20), (Slave = 0x28);
- ✅ Maskable IRQs lines. Mask function implemented to disable/enable IRQs lines from being triggered by hardware and notified to the CPU.
- ✅ EOI - End Of Interruption. Implemented to clear the In Service Register (ISR).
- ✅ Possibility to disable the PIC to use in it's place the APIC;
- ⬜ APIC - Advanced Programmable Interrupt Controller;
- ✅ CPUID - Central Processing Unit Identification;
- ✅ Vendor id implemented to get the CPU vendor, like AMD, INTEL, ARM, etc;
- ✅ Func EAX=1 Fully implemented to get the CPU capabilities;
- ⬜ Not fully implemented yet;
- ✅ MMU - Memory Management Unity or Paging;
- ✅ PageDirs and PageTables configured;
- ✅ Kernel mapped successfully;
- ✅ VGA memory mapped successfully;
- ⬜ I/O ports mapped successfully;
- ✅ HEAP - Heap system management mechanism;
- ✅ SHARED - For test purpose the user process heaps are allocated inside kernel heap;
- ✅ KERNEL - Functions that handle kernel heap. kmalloc and kfree;
- ✅ PROCESS - Functions that handle user process heap. malloc and free;
- ✅ VFS - Virtual file system. Since we actually don't have a file system;
- ✅ findFile - Function to search a file by it's name in virtual file system list;
- ✅ SYSCALLS - System calls that is executed when a SYSFUNCS is called;
- ✅ INT 0x30(48) - General Syscall that handle all SYSFUNCS;
- ✅ EAX 0x01(1) - VGA - print;
- ✅ EAX 0x02(2) - SCHEDULER - exit;
- ✅ INT 0x30(48) - General Syscall that handle all SYSFUNCS;
- ⬜ Programs/Processes/Libs;
- ✅ SYSFUNCS - System Functions that runs in user mode and perform SYSCALLS;
- ✅ VGA - Video Graphics Array;
- ✅ TEXT - print - Prints raw text with escape sequences only in the screen;
- ✅ TEXT - printf - Prints formatted text with escape sequences in the screen; Uses the same interruption of print;
- ✅ SCHEDULER - Process Scheduler;
- ✅ EXIT - exit - Terminate current process and return a result code, then move to the next process;
- ✅ KEYBOARD - Keyboard Driver;
- ✅ TEXT - readln - Read one line of text typed by the user and stop in next \n (KEY_ENTER) scape sequence;
- ✅ VGA - Video Graphics Array;
- ✅ SHELL process creation;
- ✅ Communicate with kernel using IDT Interruptions to access VGA memory;
- ✅ Hello World Print;
- ✅ IMAGEFS - Format Storage Devices Using a File System Architecture;
- ⬜ FAT32 - File system format implemented;
- ✅ LIST - List all archives inside a absolute folder path;
- ⬜ READ - Read file content;
- ⬜ CREATE DIR - Create directories;
- ⬜ CREATE FILE - Create files;
- ⬜ CREATE - Creates a .img for a file system format;
- ⬜ FAT32 - File system format implemented;
- ✅ SYSFUNCS - System Functions that runs in user mode and perform SYSCALLS;
-
Notifications
You must be signed in to change notification settings - Fork 0
richard-hgs/infinity-os
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
Minimal Operating System for Student Purpose
Topics
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published