Skip to content

Commit f74b8e4

Browse files
author
Louis Jenkins
committed
Merge branch 'development'
2 parents c98f3ab + 4f26c0c commit f74b8e4

40 files changed

+1027
-254
lines changed

MoltarOS.sublime-workspace

Lines changed: 349 additions & 114 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ The below depicts an early "schedule" or rather a path I will be taking in terms
1212
- [x] Interrupts (IRQ + ISR)
1313
- [x] VGA Display Driver
1414
- [x] Keyboard Driver
15-
- [ ] Interactive Shell
1615
- [ ] Memory Management (Physical + Virtual)
16+
- [ ] Interactive Shell
1717
- [ ] File System
1818
- [ ] Multitasking and Scheduling
1919
- [ ] Networking
2020
- [ ] Process Creation and Managements
2121
- [ ] ELF Binary Support
2222
- [ ] Graphical User Interfaces
2323

24-
#Progress Update
24+
#Progress Update & Changelog
2525

2626
## Version .001a
2727

@@ -34,4 +34,17 @@ Implemented the GDT, IDT (and IRQs and ISRs), reprogrammed the PIC's (Master and
3434
Implemented the keyboard driver, but it won't be able to communicate with other components (such as an interactive shell) until memory management is implemented... perhaps, not even until processes and scheduling is implemented. That is the next thing I will be releasing. Currently, when you execute
3535
the OS, it will have a blank screen, until you use the keyboard. When executing the keyboard, it will display what key has been pressed and what has been released... but only one at a time unfortunaately, no multi-key press events are supported.
3636

37-
![Screenshot](/kbd_input.PNG)
37+
![Screenshot](/kbd_input.PNG)
38+
39+
## Version .001c
40+
41+
Began implementation of memory management, but not finished yet. Paging SHOULD be implemented very soon (and most code has been written), as well the heap is also mainly written using Pancakes' Bitmap Heap implementation, and paired with the identity paging technique, development of all other parts of the OS should proceed as expected. Today, I also managed to make use of the multiboot info struct that GRUB
42+
gives us that was pushed on the stack in 'kernel_init', and now it can detect the amount of physical memory (RAM) that the machine (or virtual machine) has to offer. This is crucial to finished memory management.
43+
44+
As well, there has been a huge restructure in terms of the hierarchy and logical structure of the operating system. For example, the folders 'mm' and 'drivers' now also have their own respective folders in the
45+
include folder, I.E 'drivers/vga.c' will have it's header in 'include/drivers/vga.h'. While in terms of usability, it is not too much of an update (yet, memory management will be in version .002), there has been
46+
a significant amount of work and should be pushed to master.
47+
48+
Lastly, I also added a nice logger macro, `KLOG`, and panic macro, `KPANIC`.
49+
50+
![Screenshot](/ram_and_kbd.PNG)

ram_and_kbd.PNG

62.5 KB
Loading

src/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,4 @@ if [ $? -ne 0 ]; then
3333
fi
3434

3535
# Finally, run the virtual machine.
36-
bochs -f bochs.bxrc;
36+
bochs -f bochsrc.bxrc;

src/kernel/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Include directories
2-
INCLUDE := kernel include arch/i686 display drivers
2+
INCLUDE := kernel x86 drivers
33

44
# List of all headers from the included directories
55
HEADERS := $(shell find $(INCLUDE) -type f -name \*.h)
@@ -18,7 +18,7 @@ OBJECTS := $(C_OBJECTS) $(ASM_OBJECTS)
1818
DEPENDENCIES := $(patsubst %.c, %.d, $(C_SOURCES))
1919

2020
# Linker to be used
21-
LINKER := arch/i686/linker.ld
21+
LINKER := x86/linker.ld
2222

2323
# Compilers used during specific build sections
2424
LINKER_COMPILER := i686-elf-gcc -static

src/kernel/arch/i686/exceptions.c

Lines changed: 0 additions & 2 deletions
This file was deleted.

src/kernel/drivers/kbd.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
#include <include/kbd.h>
2-
#include <include/vga.h>
3-
#include <include/idt.h>
4-
#include <include/io_port.h>
1+
#include <include/drivers/kbd.h>
2+
#include <include/drivers/vga.h>
3+
#include <include/x86/idt.h>
4+
#include <include/x86/io_port.h>
55
#include <include/helpers.h>
66
#include <stdbool.h>
77
#include <stdio.h>

src/kernel/drivers/rtc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#include <include/rtc.h>
2-
#include <include/io_port.h>
1+
#include <include/drivers/rtc.h>
2+
#include <include/x86/io_port.h>
33
#include <stdio.h>
44
#include <stdbool.h>
55

src/kernel/kernel/timer.c renamed to src/kernel/drivers/timer.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
#include <include/timer.h>
2-
#include <include/io_port.h>
1+
#include <include/drivers/timer.h>
2+
#include <include/x86/io_port.h>
3+
#include <include/helpers.h>
34
#include <stdio.h>
45
#include <limits.h>
56

67
static const uint32_t oscillator_frequency = 1193180;
78

8-
static void timer_default_irq(struct registers *regs) {
9+
static void timer_default_irq(struct registers *UNUSED(regs)) {
910
// NOP
1011
}
1112

src/kernel/display/vga.c renamed to src/kernel/drivers/vga.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include <stdint.h>
22

3-
#include <include/vga.h>
4-
#include <include/io_port.h>
3+
#include <include/drivers/vga.h>
4+
#include <include/x86/io_port.h>
55

66
/* X and Y coordinates for current position in VGA buffer */
77
static size_t x, y;

0 commit comments

Comments
 (0)