From 437e7ff593265cf665f238c6ba46533f1194645b Mon Sep 17 00:00:00 2001 From: p7mj Date: Tue, 14 Apr 2026 10:04:20 -0400 Subject: [PATCH] nothing works but time to update --- .vscode/c_cpp_properties.json | 18 ++++++++++ .vscode/launch.json | 24 +++++++++++++ .vscode/settings.json | 59 ++++++++++++++++++++++++++++++++ boot.asm | 61 ++++++++++++++++++++++++++++++++++ boot.o | Bin 0 -> 960 bytes file.py | 0 gdt.asm | 29 ++++++++++++++++ kernel.c | 25 ++++++++++++++ kernel.o | Bin 0 -> 1084 bytes linker.ld | 22 ++++++++++++ networking.py | 0 os-image.bin | Bin 0 -> 16384 bytes 12 files changed, 238 insertions(+) create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 boot.asm create mode 100644 boot.o delete mode 100644 file.py create mode 100644 gdt.asm create mode 100644 kernel.c create mode 100644 kernel.o create mode 100644 linker.ld delete mode 100644 networking.py create mode 100755 os-image.bin diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -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 +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..3e5234c --- /dev/null +++ b/.vscode/launch.json @@ -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 + } + ] + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..bb879da --- /dev/null +++ b/.vscode/settings.json @@ -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 +} \ No newline at end of file diff --git a/boot.asm b/boot.asm new file mode 100644 index 0000000..d6e73c1 --- /dev/null +++ b/boot.asm @@ -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 \ No newline at end of file diff --git a/boot.o b/boot.o new file mode 100644 index 0000000000000000000000000000000000000000..3a8f1d4e6939412d0d212e332dbb5c0e34afb411 GIT binary patch literal 960 zcmb7C!Alfj6o20;rd@WWP$Y=T4vDmRs1Ba8b`_ymQ1Q^gVRmQC!JQrX<^xkf4<0fP zgLv$(C@2X+Sm@$K^w`nkk{$Fa;`Dnn-)vvqdhq7=`@QeI_q};D8|9bdLI}!CPzU`{ zM9=iW;{+d27v-|l|3dD`-leNXAl8fy1oLXbP~1pc_iF)8OL$^qM~x&Dk_Exp_0n3g01)|YAxM*nxhB%8?yK1XeXWX&~4){ z&wFK0P0%e6-eGEj?t}2IQWNwLWGIuUfAWtmLG#{HJC9$1WZ#-_|19()eaf4zf=?LQ z2cIJhJylz4<9p literal 0 HcmV?d00001 diff --git a/file.py b/file.py deleted file mode 100644 index e69de29..0000000 diff --git a/gdt.asm b/gdt.asm new file mode 100644 index 0000000..86ca333 --- /dev/null +++ b/gdt.asm @@ -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 \ No newline at end of file diff --git a/kernel.c b/kernel.c new file mode 100644 index 0000000..33dbdbf --- /dev/null +++ b/kernel.c @@ -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); +} \ No newline at end of file diff --git a/kernel.o b/kernel.o new file mode 100644 index 0000000000000000000000000000000000000000..2fecb8af786a567d1c371aa238cc27de024a98b2 GIT binary patch literal 1084 zcma)4OKTHR6h3#-YHb6FrJzv75foB1Lt48~aS@4Q5vx|h;6|vE$;Bj1W@Kgr#W(39 zVJP$;_$%zjg-@&>$~h+=xQ65wgf)FrG7WFUFOAaOOMTJ+HZE=7GL=mN5nr3=;51 z0jw%gW@)Ibl{mY7gGn|i1`x)(l9 z0o?zzzW(l2R6iBy$(G&~T>>NB?!5S_Fno-*^`7i{D(X7MI>>9u$-wBbt@ek&=(DZV z2DB8KGzEd)V;wQ^Wokq3wiF!7WG!Z{KEL@yjQ$Z027?-_jaTTsBh`GJtSPlrW$)0z z_Aj`?>z32ts_&@hiiJW^y;M9%HRri&^SZj|m}Op8tG0SXPgD-1714f>Y)i zz(S#LQq7#!M6X6 z1DHuW+94|FpZqR-BDue5^mn1<(FkLBpA0b?<>0j<|FF<_?FiGdfzVPOK~1&)%FAI6 z)!?`Y`%vVCPegMG$I&Q{@(EW_sF4>xC`NW#aC{1Imkx&@C9#}IVamIPOgo@=rn%`M cjc$a`m^UK@vh24TeR)?3=dk%@as*`FZ}ic^SO5S3 literal 0 HcmV?d00001 diff --git a/linker.ld b/linker.ld new file mode 100644 index 0000000..960e6d1 --- /dev/null +++ b/linker.ld @@ -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); + } +} \ No newline at end of file diff --git a/networking.py b/networking.py deleted file mode 100644 index e69de29..0000000 diff --git a/os-image.bin b/os-image.bin new file mode 100755 index 0000000000000000000000000000000000000000..d6dfb59dbdf5589fe81f06476d6d4bb2222fe160 GIT binary patch literal 16384 zcmeIuze^io7zgm@J&^h%aA^&3Qr@p+DYC)T2Tl`w?H))G^ht5UE~x?I^6Z} z2#zl9Zh{7(Skk6w8z?z9adHt3lc7U~P>x*ROV2-`gWLBV?tR~f_j$hD$4YOQr&O`q z{!{X&snw%+g`qs`HL1VvHff9=nna&zt2*&X_8ckJ?_;Xcq4I0A$m*@$AC;viO_kU3 zl6&cTZq2=R{ZpbLl1X3WWErH{H|2KnTy$xBgw90}1-Hf>EpSAa zd1u5O5$r6m`1YVI0_DSIu&)wrT~#VS>;3+eBNCQq$5R|FX?tI<6(&Cew&>hVec7Kn z$UM34Bpx|hhc)aAN9(eNS|v+~l2YV|4)fx~Z)#PvEk%a1yI%S7W9|KM9PPgf!?3^# z!^^o%BHxg=^7lkRDX7b4RLK4-w0il