Commit Graph

  • 28138a54e2
    Merge branch 'dev' of ssh://xnopyt.com:222/xnoe/xnoe-os into dev dev Xnoe 2025-01-08 19:25:23 +00:00
  • fafae757e1
    Miscellaneous changes and fixed (I think?) virtual 8086 mode Xnoe 2025-01-08 18:46:58 +00:00
  • 5a70976f5d
    Various additions Xnoe 2024-04-14 00:50:21 +01:00
  • b00f6d6217
    Added multiple threads per process Xnoe 2022-06-18 17:45:16 +01:00
  • f3b1bfc5ef
    Added VFS, updated DevFS, Added SysFS Xnoe 2022-06-18 15:41:32 +01:00
  • 437c78d374
    Fixed sleep Xnoe 2022-06-18 15:12:20 +01:00
  • fdb77277a7
    Renamed Maybe to maybe. Moved tracking of filehandlers to be per-process rather than global. Various improvements to code. Xnoe 2022-06-18 11:42:09 +01:00
  • da5fc52afe
    Updated the KernelInformationStruct, added BGA (Bochs Graphics Extensions) mode termimal, added new system calls to get terminal width. Updated world.bin to calculate sizes. Fixed a bug where GetExhaustive would crash when given a completely null path. Started work on V86 for VBE support. Xnoe 2022-05-16 09:57:09 +01:00
  • 6339b3e4bd
    Added spinlocks Xnoe 2022-04-15 21:10:10 +01:00
  • dc2fe698a3
    Added oneshot timer functionality. Added sleep function. Added proper tracking of physical pages allocated. Made the 0th page invalid. Fixed a 4KiB memory leak when destroying processes. Fixed scrolling colour in terminal.cpp Xnoe 2022-04-15 16:15:51 +01:00
  • 0fc40ad5e4
    Add system calls for more file system related functionality. Add ls command to world.c. Remove and reorganise certain source code files. Update terminal to no longer have two copies of ANSI escape code handling between write and printf. Massively simplify my printf function. Combine io and ioports. Xnoe 2022-04-12 03:42:13 +01:00
  • 8f4382793c
    Fixed spelling mistake Xnoe 2022-04-09 00:31:08 +01:00
  • bb69d6b713
    Update how syscalls accept arguments in registers, change how syscalls are defined in common.c and common.h Xnoe 2022-04-08 18:00:56 +01:00
  • 7e5f20ef66
    Added sleep syscall Xnoe 2022-04-08 02:01:25 +01:00
  • c2f857fc88
    Removed extra directories Xnoe 2022-04-08 00:49:26 +01:00
  • edd6e82c2c
    Remove old boot_stage2 directory Xnoe 2022-04-06 20:59:33 +01:00
  • a0d0454e32
    Moved to a new Filesystem, ATA and FAT16 driver. Xnoe 2022-04-06 14:46:47 +01:00
  • ed34174d68
    Rename boot_stage2 to bootstage2 Xnoe 2022-03-04 20:25:17 +00:00
  • 232e333a62
    Added VGA Mode Terminal. Updated context_switch and isr.S.base to perform the actual context switch during catchall_return. Program the PIT properly. Implemented timed events. Updated process.cpp. Added a font. Fixed bug in CircularRWBuffer. core Xnoe 2022-02-20 11:30:39 +00:00
  • 5c05866d5d
    Added kill syscall Xnoe 2022-02-14 14:37:48 +00:00
  • 2f2a7a3e45
    Added file reading via filehandlers. Added support for directories. Processes are now created using filehandlers. Xnoe 2022-01-19 16:51:37 +00:00
  • 2bbc81955d
    Updated program linker scripts to have link beginning at 0x20 rather than 0x8020. Program binary is now the first thing allocated. Xnoe 2022-01-19 12:19:52 +00:00
  • 73c0fe429f
    Add ability for other processes to bind to eachother's stdin and stdout. Add PoC for this functionality Xnoe 2022-01-17 19:43:13 +00:00
  • 55a5bea35a
    Update keyboard driver, add start of file handlers, stdio. Xnoe 2022-01-13 13:36:24 +00:00
  • fc2c73225b
    Updated ISR code to properly handle interrupts with error codes. Fixed bug where page faults would clobber the kernel stack Xnoe 2022-01-09 12:10:57 +00:00
  • 2825c1ff5e
    Move to own ISR solution rather than using GCC ISRs. Lots of changes to accomodate that. Xnoe 2021-12-17 14:00:52 +00:00
  • aba8a0a8c9
    Updated boot_stage2.ld Xnoe 2021-12-17 14:00:17 +00:00
  • 3d3b4fe884
    Improved Makefile Xnoe 2021-12-17 13:59:50 +00:00
  • 57768784a6
    Fixed context_switch's handling of the processes linked list, update idt.cpp to add getPID syscall, update memory.cpp to fix but where find_next_available_from would incorrectly return invalid memory locations Xnoe 2021-12-08 18:49:25 +00:00
  • ca131c71e8
    Updated hello.c to print the program's PID. Add getPID syscall. Xnoe 2021-12-08 18:48:24 +00:00
  • 02e0bcd70e
    Finalise mvoe to Ring 3, add separate kernel stacks for each process, correctly switch between those kernel stacks within context_switch, etc Xnoe 2021-12-07 22:04:53 +00:00
  • cd56b924e1
    Correctly mark 0x8a000 + 0x6000 as unavailable, mark the vm_bitmap area as unavailable. Fixed a few comments. Xnoe 2021-12-07 22:04:21 +00:00
  • 2ecc53ee91
    Moved processes to be in ring 3 Xnoe 2021-12-02 19:36:52 +00:00
  • a9ec673b24
    Implemented necessary changes for Process destruction. Processes clean up their memory when deleted. Xnoe 2021-12-01 17:05:46 +00:00
  • b7566ef777
    Fixed major bug in hashtable.h that caused the hashtable to not actually store any data Xnoe 2021-12-01 17:05:17 +00:00
  • b879ae1e92
    Updated world.c to now take user input and print it back to the user when they press enter Xnoe 2021-11-29 10:11:46 +00:00
  • 945bd8c2fa
    Fixed bug in idt.cpp where context_switch would clobber eax Xnoe 2021-11-29 09:15:23 +00:00
  • 5d4454e57a
    Remove debug code from terminal.cpp. Update kmain, update world.c, update process.cpp to construct the initial value of EBP correctly. Xnoe 2021-11-27 15:56:35 +00:00
  • d6c1cc1869
    Fix bug in terminal.cpp where it would use incorrect pointers in scroll_up, removed old debug code from kmain.cpp, kernel.cpp no longer appends itself to the process list, update process.cpp to take a filename when constructing a new process. Update idt.cpp to plug context_switch in to int 0x20 (IRQ0) Xnoe 2021-11-27 13:11:44 +00:00
  • bfa648d96b
    Moved syscall related code to common. Add hello.c and world.c in preparation for testing pre-emptive multitasking Xnoe 2021-11-27 13:10:20 +00:00
  • c84a3ffdea
    Add XnoeOS's first non-kernel program. Test systemcalls Xnoe 2021-11-27 02:32:43 +00:00
  • 0bb88e4da8
    Add system calls, update keybaord, add Terminal* field to kernel. Update process.cpp to load a program called program.bin from disk rather than hardcoding data Xnoe 2021-11-27 02:32:28 +00:00
  • 15ca13a985
    Update atapio.cpp to use new rather than dumb_alloc, add file_size Xnoe 2021-11-27 02:31:23 +00:00
  • ed67adc9c9
    Updated kernel to now have its stack past 0xc0000000. Implemented context switching. Xnoe 2021-11-26 20:20:15 +00:00
  • 2dd799b406
    Preparations towards context switching Xnoe 2021-11-21 16:56:50 +00:00
  • b79ae4ec95
    Updated Hashtable to use xnoe::Maybe, fixed many bugs within hashtable, updated hash Xnoe 2021-11-21 16:40:16 +00:00
  • f581e6b6fe
    Completely overhauled how GDT is defined to make it much easier to add more entries to the GDT in the future Xnoe 2021-11-21 16:39:31 +00:00
  • 760069bbb9
    Updated Makefile to allow debugging. Update gitignore. Xnoe 2021-11-12 00:51:45 +00:00
  • bfa3f3030f
    Initial work on dynamically creating Processes in preparation for implementing context switching Xnoe 2021-11-12 00:30:10 +00:00
  • 01fef9d947
    Rename kernel.cpp to kmain.cpp, update Makefile and kernel.ld Xnoe 2021-11-11 21:55:04 +00:00
  • 0f5e080e15
    Reorganised some code. Moved new/delete out of process Xnoe 2021-11-11 21:52:51 +00:00
  • e06d98b22a
    Add teminal. Update strings. Update screenstuff. Xnoe 2021-11-11 20:47:08 +00:00
  • ea62dcddfa
    Update README. Remove debug code. Xnoe 2021-11-10 22:44:22 +00:00
  • c10c3690a5
    A huge amount of changes and additions. Added xnoe::Maybe, fixed xnoe::linkedlist and xnoe::linkedlistelem, fixed bug in Allocator::deallocate, update Process::allocate, implement Process::deallocate, fix operator delete, add Global namespace and Global::allocator, update new, delete, new\[\] and delete\[\], add AllocTracker, etc. Allocations now work how I want them to :D Xnoe 2021-11-10 18:31:00 +00:00
  • 4a271865e0 Update data types. Update Makefile. Update kernel. Implement Process::allocate. Xnoe 2021-10-28 14:14:36 +01:00
  • 768ceddef0
    Add hash. Add hashtable. Add linkedlist. Separate Process. Begin work on Process. Update memory. Update tuple. Update Makefile. Xnoe 2021-10-27 23:21:37 +01:00
  • b4375d1269
    Initial version of Allocator complete. Added new, delete, new\[\] and delete\[\]. Preparations for Process and Kernel made Xnoe 2021-10-25 20:59:49 +01:00
  • e6e156e255
    Implement Allocator. Add virtual page map. Fix PageMap class. Xnoe 2021-10-25 16:29:53 +01:00
  • f2e09e98a7 Started work on Allocator class. Update PageMap Xnoe 2021-10-25 01:13:29 +01:00
  • 9c887a3a50
    Began the process of moving XnoeOS to using more OOP constructs. Added PageDirectory class. Added PageTable class. Added tuple data type. Added beginnings of the skeleton for Allocator and Process. Xnoe 2021-10-23 01:34:54 +01:00
  • 2a68860bef
    Made kernel C++ now Xnoe 2021-10-21 23:19:36 +01:00
  • cd8bd42ebb
    Kernel now handles page faults. Xnoe 2021-10-21 22:06:27 +01:00
  • 2dcf083763
    Properly print out the e820 entry types. Make kernel_directory and kernel_page_tables available to all. Add a memory unmap function. Update Makefile. Xnoe 2021-10-18 13:50:50 +01:00
  • b117dee07b
    Hopefully fix compilation error encountered on Debian 10 GCC Xnoe 2021-10-13 12:13:51 +01:00
  • f9d7581cec
    Set C standard to gnu11 Xnoe 2021-10-13 12:01:57 +01:00
  • 4a44a8030d
    Hopefully fix compilation error encountered on Debian 10 GCC Xnoe 2021-10-13 11:56:52 +01:00
  • 74b7d7c58c
    Added .editorconfig Xnoe 2021-10-12 21:44:52 +01:00
  • f44d4ad768
    Fixed bug in GDT length calculation in bootloader. Kernel now loads its own GDT so it doesn't clobber itself while touching memory. ATAPIO now loads its own copy of the boot sector so it isn't reliant on 0x7000 being mapped. Removed debug printf statements from a lot of places. Xnoe 2021-10-12 21:41:31 +01:00
  • e2bb3ff634
    The kernel is now actually useable with paging enabled. Xnoe 2021-10-12 00:53:02 +01:00
  • 1225529708
    Fixed paging fully now. Kernel is loaded with virtual memory enabled. Just need to write an allocator and make kernel use virtual memory addresses for its stuff. Restructured codebase to be less messy. Updated Makefile to put binary files under build/ rather than in root directory Xnoe 2021-10-11 20:47:04 +01:00
  • 6328062d4f
    Fixed structs for PDEs and PTEs, got Qemu now properly maps virtual addresses to physical addresses, still triple faults on but I'm getting closer to getting it fixed. Xnoe 2021-10-11 14:02:04 +01:00
  • 65b8e7773e Added initial paging support. Xnoe 2021-10-11 12:26:11 +01:00
  • e9f610d4aa
    Memory bitmap generated Xnoe 2021-10-10 20:19:09 +01:00
  • 7469925ef4
    Added e820 to boot.asm Xnoe 2021-10-10 17:05:57 +01:00
  • 010ea7eb1d
    Fixed bug with capitalisation Xnoe 2021-09-25 17:51:18 +01:00
  • c235befa43
    Completely changed how XnoeOS boots, organised the code somewhat, renamed kernel32 to kernel, now uses the 9 sectors after the boot sector to store a 32 bit stage2 loader. No longer spends unnecessary time in real mode. Updated atapio to properly account for the reserved sector count. Xnoe 2021-09-25 16:31:19 +01:00
  • d617de6a0c
    Moved some files around in preparation for completely changing the way that booting works Xnoe 2021-09-23 15:09:06 +01:00
  • 2c4c76d1e7
    Added filename decoding to strings Xnoe 2021-09-07 10:46:09 +01:00
  • ec314d7b1b
    We can now read from the disk in protected mode Xnoe 2021-09-06 21:32:02 +01:00
  • b2e2cdb19b
    Add inw and outw commands in preparation for ATA-PIO support Xnoe 2021-09-06 17:34:48 +01:00
  • c803f4a38e
    Added single split function, added error message to kernel32 Xnoe 2021-09-06 15:52:12 +01:00
  • 290794b885
    Add string manipulation functions. Update Makefile accordingly. Add echo command to kernel32. Xnoe 2021-09-06 15:36:44 +01:00
  • 26d231a7c9
    Set BPB data from the BIOS, properly support loading data from sectors >63, calculate CHS addressing properly. Calculate certain important values rather than harcoding them. Xnoe 2021-09-06 15:35:37 +01:00
  • 8f1e13e749
    Added caps lock support to readline Xnoe 2021-09-03 12:02:37 +01:00
  • d9d3abbf62
    Moved IDT code wholely to idt.c, add keyboard read support, add readline function, updated Makefile accordingly. Xnoe 2021-09-02 20:59:15 +01:00
  • a184efbc9f
    Added non_moving_put, fixed bug with int_to_ functions that would cause them to not properly convert "0" to a string. Added character printing to printf Xnoe 2021-09-02 20:58:34 +01:00
  • b660fa1a0b
    We can now receive interrupts Xnoe 2021-09-02 18:38:00 +01:00
  • 03e7647fc6
    Updated Makefile, started splitting code in to multiple pieces. Xnoe 2021-09-02 16:29:07 +01:00
  • a4d1679723
    Added primitive printf implementation, can print decimal ints, hex ints and strings Xnoe 2021-09-02 15:09:21 +01:00
  • 76e61b1d71
    Linker script now makes use of kernel32_strap.asm in order to ensure that we enter the correct position in kernel32.bin, updated kernel32.ld, Makefile, etc accordingly. Added types.h for convenience. Xnoe 2021-09-02 12:46:14 +01:00
  • 1905f3babd
    kernel32.bin is now written in C, make necessary modifications to Makefile, .gitignore, boot32.asm, etc to get this working Xnoe 2021-08-31 22:50:10 +01:00
  • 07ef9774c2
    Added program to enter load kernel32.bin, enter Protected Mode, and then execute kernel32.bin Xnoe 2021-08-31 21:35:16 +01:00
  • 79fa2e4e60
    Updated kernel to process all input as upper case Xnoe 2021-08-31 14:31:35 +01:00
  • d9cc9a2fb6
    Updated kernel and programs so that the segment in which programs are loaded and executed from is no longer fixed and is specified by the kernel Xnoe 2021-08-31 12:15:23 +01:00
  • 514f07e009
    Updated kernel to allow for inter-segment calls to functions. Use Unix Line Endings for the print function Xnoe 2021-08-30 09:11:31 +01:00
  • a33c25d744
    Added programs to properly test inter-segment file read and write Xnoe 2021-08-30 08:11:11 +01:00
  • 703a23dfab
    Removed very broken and bad code that could've corrupted memory in other segments, updated hello.asm accordingly Xnoe 2021-08-30 07:26:54 +01:00
  • df9f175662
    Modified load_file to work directly from the stack Xnoe 2021-08-30 07:02:01 +01:00
  • 14fcc32d79
    Added interrupt handler Xnoe 2021-08-29 21:50:27 +01:00
  • fa15c6f6d9
    Added ability for kernel to load files from disk and execute them Xnoe 2021-08-29 17:09:08 +01:00