nothing works but time to update

This commit is contained in:
2026-04-14 10:04:20 -04:00
parent 2e3dfa9583
commit 437e7ff593
12 changed files with 238 additions and 0 deletions

18
.vscode/c_cpp_properties.json vendored Normal file
View File

@@ -0,0 +1,18 @@
{
"configurations": [
{
"name": "linux-gcc-x64",
"includePath": [
"${workspaceFolder}/**"
],
"compilerPath": "/usr/bin/gcc",
"cStandard": "${default}",
"cppStandard": "${default}",
"intelliSenseMode": "linux-gcc-x64",
"compilerArgs": [
""
]
}
],
"version": 4
}

24
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,24 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++ Runner: Debug Session",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"externalConsole": false,
"cwd": "/home/p7mj/Desktop/ISCCS-1",
"program": "/home/p7mj/Desktop/ISCCS-1/build/Debug/outDebug",
"MIMode": "gdb",
"miDebuggerPath": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}

59
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,59 @@
{
"C_Cpp_Runner.cCompilerPath": "gcc",
"C_Cpp_Runner.cppCompilerPath": "g++",
"C_Cpp_Runner.debuggerPath": "gdb",
"C_Cpp_Runner.cStandard": "",
"C_Cpp_Runner.cppStandard": "",
"C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat",
"C_Cpp_Runner.useMsvc": false,
"C_Cpp_Runner.warnings": [
"-Wall",
"-Wextra",
"-Wpedantic",
"-Wshadow",
"-Wformat=2",
"-Wcast-align",
"-Wconversion",
"-Wsign-conversion",
"-Wnull-dereference"
],
"C_Cpp_Runner.msvcWarnings": [
"/W4",
"/permissive-",
"/w14242",
"/w14287",
"/w14296",
"/w14311",
"/w14826",
"/w44062",
"/w44242",
"/w14905",
"/w14906",
"/w14263",
"/w44265",
"/w14928"
],
"C_Cpp_Runner.enableWarnings": true,
"C_Cpp_Runner.warningsAsError": false,
"C_Cpp_Runner.compilerArgs": [],
"C_Cpp_Runner.linkerArgs": [],
"C_Cpp_Runner.includePaths": [],
"C_Cpp_Runner.includeSearch": [
"*",
"**/*"
],
"C_Cpp_Runner.excludeSearch": [
"**/build",
"**/build/**",
"**/.*",
"**/.*/**",
"**/.vscode",
"**/.vscode/**"
],
"C_Cpp_Runner.useAddressSanitizer": false,
"C_Cpp_Runner.useUndefinedSanitizer": false,
"C_Cpp_Runner.useLeakSanitizer": false,
"C_Cpp_Runner.showCompilationTime": false,
"C_Cpp_Runner.useLinkTimeOptimization": false,
"C_Cpp_Runner.msvcSecureNoWarnings": false
}

61
boot.asm Normal file
View File

@@ -0,0 +1,61 @@
[bits 16]
section .text
global _start
_start:
mov [BOOT_DRIVE], dl ; Save the boot drive number provided by BIOS
mov bp, 0x9000
mov sp, bp
call load_kernel ; Load extra sectors from the disk
call switch_to_pm ; Transition to 32-bit mode
jmp $
%include "gdt.asm"
[bits 16]
load_kernel:
mov bx, 0x7e00 ; Destination memory address for kernel code
mov dh, 30 ; Number of sectors to read
mov dl, [BOOT_DRIVE]
mov ah, 0x02 ; BIOS read sectors function
mov al, dh
mov ch, 0x00
mov dh, 0x00
mov cl, 0x02 ; Start reading from the second sector
int 0x13 ; Trigger BIOS disk interrupt
jc disk_error
ret
disk_error:
jmp $
[bits 16]
switch_to_pm:
cli
lgdt [gdt_descriptor]
mov eax, cr0
or eax, 0x1
mov cr0, eax
jmp CODE_SEG:init_pm
[bits 32]
extern main
init_pm:
mov ax, DATA_SEG
mov ds, ax
mov ss, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ebp, 0x90000
mov esp, ebp
call main
jmp $
BOOT_DRIVE db 0

BIN
boot.o Normal file

Binary file not shown.

View File

29
gdt.asm Normal file
View File

@@ -0,0 +1,29 @@
gdt_start:
dq 0x0 ; The null descriptor (mandatory)
; Code Segment Descriptor
gdt_code:
dw 0xffff ; Limit
dw 0x0 ; Base (bits 0-15)
db 0x0 ; Base (bits 16-23)
db 10011010b ; Access byte
db 11001111b ; Flags + Limit (bits 16-19)
db 0x0 ; Base (bits 24-31)
; Data Segment Descriptor
gdt_data:
dw 0xffff
dw 0x0
db 0x0
db 10010010b
db 11001111b
db 0x0
gdt_end:
gdt_descriptor:
dw gdt_end - gdt_start - 1
dd gdt_start
CODE_SEG equ gdt_code - gdt_start
DATA_SEG equ gdt_data - gdt_start

25
kernel.c Normal file
View File

@@ -0,0 +1,25 @@
void clear_screen() {
char* video_memory = (char*) 0xb8000;
for (int i = 0; i < 80 * 25 * 2; i += 2) {
video_memory[i] = ' '; // Clear char
video_memory[i+1] = 0x07; // Light grey on black
}
}
void print_string(char* str, unsigned char color, int line) {
char* video_memory = (char*) 0xb8000;
int offset = line * 160;
for (int i = 0; str[i] != '\0'; i++) {
video_memory[offset + (i * 2)] = str[i];
video_memory[offset + (i * 2) + 1] = color;
}
}
void main() {
clear_screen();
print_string("Welcome to ISCCS OS!", 0x0a, 1);
print_string("Kernel Loaded in 32-bit Protected Mode.", 0x0f, 2);
while(1);
}

BIN
kernel.o Normal file

Binary file not shown.

22
linker.ld Normal file
View File

@@ -0,0 +1,22 @@
ENTRY(_start)
OUTPUT_FORMAT("binary")
SECTIONS
{
/* Start at the BIOS boot address */
. = 0x7c00;
.text : {
boot.o(.text) /* Ensure bootloader is at the very beginning */
*(.text) /* Compiled C code follows */
*(.rodata) /* REQUIRED: Text strings live here */
}
.data : { *(.data) }
.bss : { *(.bss) }
/* Place the 0xAA55 signature exactly at the end of the first 512 bytes */
.sig : AT(0x7dfe) {
SHORT(0xaa55);
}
}

View File

BIN
os-image.bin Executable file

Binary file not shown.