| Subject | Value |
|---|---|
| 🏷️Version | 1.2 |
| 🖥️Architecture | x86 |
| 🔢Bit | 64 |
| 📅Start Date | 09.06.2024 |
| 🔄Last Update | 30.03.2026 |
This is a x86 architecture based 64 bit Operating System. This operating system has interrupt based system call.Here PCI scan discovers AHCI Devices. The OS currently has keyboard, mouse, SATA Disk, SATAPI Disk Driver. The installer can formatt SATA disk , Build GPT Partition along with 100 MB FAT32 ESP Volume. Rest of EXT2 Volume at the Disk. Here AHCI port 0 has SATAPI Disk and port 1 has SATA Disk.Currently working to build ext2 filesystem then complete systemcall and finally GNU C Header. The operating system also support userspace elf file.The operating system currently is using limine bootloader.
| Feature | Sub-Features / Notes |
|---|---|
| ✅ 🚀Limine Bootloader | Getting Various Boot Information, Getting Firmware Information |
| ✅ ACPI | RSDT, FADT, MADT, MCFG, HPET |
| ✅ CPU Info & Control | CPUID, SMP |
| ✅ GDT | Multi-core support |
| ✅ TSS | Multi-core support |
| ✅ ⚡Interrupts | APIC (Multi-core), PIC, ISR, IRQ |
| ✅ 🧠Memory Management | Memory Info Parsing, 4-Level Paging, PMM, Kmalloc, VMM, KHEAP |
| ✅ ⏱️Timers | TSC, RTC, PIT, APIC, |
| ✅ Multitasking | Process, Thread, Scheduler, CPU State Handling, Multi-core Multitasking |
| ✅ Kernel Shell (kshell) | Calculator, Steam Locomotive Animation |
| ✅ 📂Filesystem | FAT32, EXT2, VSFS, VFS Layer |
| ✅ System Calls | Interrupt-based (Using), MSR-based (Not Using) |
| ✅ User Mode Switching | ELF Loader, Binary Loader, minimal libc,stemcall |
| ✅ 🔌Drivers | 🎴PCI, AHCI SATA Disk, VGA Framebuffer, I/O Ports, Serial, Keyboard, Speaker, Mouse |
| ✅ Installer | GPT Disk Creator and UEFI Disk Installer |
- ✅ 📦External Libraries :
- Limine Bootloader - 9.2.3
- x86_64-elf-gcc (GCC) 14.2.0
- GNU ld (GNU Binutils) 2.43
- GNU Make 4.3
- bison (GNU Bison) 3.8.2
- flex 2.6.4
- xorriso 1.5.6
- NASM version 2.16.01
- GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git
- FatFs R0.15b Library
- QEMU emulator 8.2.2 (Debian 1:8.2.2+ds-0ubuntu1.9)
- WSL 2.5.10.0
- mkfs util-linux 2.39.3
- parted (GNU parted) 3.6
- sync (GNU coreutils) 9.4
- mount from util-linux 2.39.3 (libmount 2.39.3: selinux, smack, btrfs, verity, namespaces, idmapping, statx, assert, debug)
-
General System Call:
-
int syscall_keyboard_read(uint8_t *buffer, size_t size) -
int syscall_print(const char *msg) -
int syscall_exit() -
int syscall_print_rax() -
uint64_t syscall_uheap_alloc(size_t size, enum allocation_type type); -
uint64_t syscall_uheap_free(void *ptr, size_t size);
-
-
FatFs File Manage:
-
int64_t syscall_vfs_mkfs(int fs_type, char *disk); -
nt64_t syscall_vfs_init(char *fs_name); -
uint64_t syscall_mount(char *path); -
uint64_t syscall_open(const char *path, uint64_t flags); -
uint64_t syscall_close(void *file); -
uint64_t syscall_read(void *file, uint64_t offset, void *buf, uint32_t size); -
uint64_t syscall_write(void *file, uint64_t offset, void *buf, uint32_t btw); -
uint64_t syscall_lseek(void *file, uint32_t offs); -
uint64_t syscall_unlink(char *path);
-
-
FatFs Directory Manage:
uint64_t syscall_opendir(const char *path);uint64_t syscall_closedir(void * dir_ptr);uint64_t syscall_readdir(void * dir_ptr);uint64_t syscall_mkdir(void * dir_ptr);int syscall_list_dir(const char* path);int syscall_getcwd(void *buf, size_t size);int syscall_chdir(const char *path);int syscall_chdrive(const char *path);
-
Process Manage:
void *syscall_create_process(char* process_name);int syscall_delete_process(void *process);void *syscall_get_process_from_pid(size_t pid);void *syscall_get_current_process();
-
Thread Manage:
void *syscall_create_thread(void* parent, const char* thread_name, void (*function)(void*), void* arg);void *syscall_delete_thread(void *thread);
-
Time Manage:
time_t syscall_time(time_t *t);int syscall_clock_gettime(int clk_id, struct timespec *tp);int syscall_gettimeofday(struct timeval *tv, struct timezone *tz);clock_t syscall_times(struct tms *buf);uint64_t syscall_get_uptime(void);
-
VGA:
int syscall_set_pixel(int x, int y, uint32_t color);uint32_t syscall_get_pixel(int x, int y);int syscall_cls_color();int syscall_display_image( int x, int y, const uint64_t* image_data, int img_width, int img_height);int syscall_display_transparent_image( int x, int y, const uint64_t* image_data, int img_width, int img_height);
Before building set GCC , LD, OBJDUMP,
src directory is containing source code. build directory is containing generated object file, binary file and iso file. iso_root is required for building image.iso file.
To build and run by QEmu iso make.
To get Make help by make help
Downloaded from here.
© 2025 baponkar. All rights reserved except externel library used.

