From b3402255b13ef776ee350e0ec5c9f5d1d2ecb455 Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Fri, 4 Jan 2019 22:10:38 -0800 Subject: [PATCH 01/17] run script added --- scripts/run.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 scripts/run.sh diff --git a/scripts/run.sh b/scripts/run.sh new file mode 100644 index 0000000..5f1ad73 --- /dev/null +++ b/scripts/run.sh @@ -0,0 +1,2 @@ +#!/zsh +bochs -f bochsrc.conf -q From b2f820660fb3e6047acbdb53d6cb0c63c0aac02d Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Tue, 15 Jan 2019 15:31:14 -0800 Subject: [PATCH 02/17] added basic run recipe --- makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/makefile b/makefile index 0a3fb59..1f4fbf2 100644 --- a/makefile +++ b/makefile @@ -2,6 +2,8 @@ ASM=nasm CC=gcc LINK=ld ISO=genisoimage +EMU=bochs +emuconfig='bochsrc.conf' all: loader link iso echo 'yeeting' @@ -15,6 +17,9 @@ loader: loader.asm link: loader.o $(LINK) -T link.ld -melf_i386 loader.o -o kernel.elf +run: + $(EMU) -f $(emuconfig) -q + # build the iso file into our target directory iso: $(ISO) -R \ From 5436a330c45c34fecfb429a7ec5c56fc848be5cc Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Tue, 15 Jan 2019 20:10:35 -0800 Subject: [PATCH 03/17] updated makefile to be more flexible --- makefile | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/makefile b/makefile index 1f4fbf2..1409ebd 100644 --- a/makefile +++ b/makefile @@ -1,27 +1,22 @@ -ASM=nasm CC=gcc +ASM=nasm LINK=ld ISO=genisoimage -EMU=bochs -emuconfig='bochsrc.conf' -all: loader link iso - echo 'yeeting' -# build our loader -loader: loader.asm - # loading the kernel form loader.asm - # creates loader.o - $(ASM) -f elf32 loader.asm +OBJECTS=loader.o kernel.o +AFLAGS=-f elf32 +CFLAGS=-m32 -nostdlib -nostdinc -fno-builtin -fno-stack-protector -nostartfiles \ + -nodefaultlibs -Wall -Wextra -Werror -c -# link the kernel to our loader -link: loader.o - $(LINK) -T link.ld -melf_i386 loader.o -o kernel.elf +all: kernel.elf -run: - $(EMU) -f $(emuconfig) -q +# Link objects together to produce the kernel object +kernel.elf: $(OBJECTS) + $(LINK) -T link.ld -melf_i386 $(OBJECTS) -o kernel.elf -# build the iso file into our target directory -iso: +# Builds image of our os +os.iso: kernel.elf + cp kernel.elf iso/boot/kernel.elf $(ISO) -R \ -b boot/grub/stage2_eltorito \ -no-emul-boot \ @@ -32,3 +27,18 @@ iso: -boot-info-table \ -o os.iso \ iso + +# Building C objecets +%.o: %.c + $(CC) $(CFLAGS) $< -o $@ + +# Builind asm objects +%.o: %.asm + $(ASM) $(AFLAGS) $< -o $@ + +# Running (no recipes called) +run: os.iso + bochs -f bochsrc.conf -q + +clean: + rm -rf *.o kernel.elf os.iso bochslog.txt From 0e052663131b191b6608e9eedff6ac6ecdf7c373 Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Tue, 15 Jan 2019 20:11:37 -0800 Subject: [PATCH 04/17] First pass for the following: * adding sample function call * adding 4KB of stack space --- loader.asm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/loader.asm b/loader.asm index 8b34b43..a06de7e 100644 --- a/loader.asm +++ b/loader.asm @@ -5,6 +5,27 @@ MAGIC_NUMBER equ 0x1BADB002 FLAGS equ 0x0 CHECKSUM equ -MAGIC_NUMBER +; example stuff +A equ 3 +B equ 2 +C equ 1 + +; size in bytes +KERNEL_STACK_SIZE equ 4096 + +; external labels(cdecl) calling convention +extern sum + +section .bss +align 4 ; aligning to bytes for x86(32-bit) reasons +; because this is the first thing we actually do (virual)address 0x00000000 will +; contain 4KB of memory for our stack +kernel_stack: + resb KERNEL_STACK_SIZE ; reserver bytes instruction + ; point to what will be bottom of stack + ; which will grow down towards (virtual)address 0x00000000 + mov esp, kernel_stack + KERNEL_STACK_SIZE + section .text ; align all instructions to 4 byte boundary by the x86 instruction set law align 4 @@ -15,6 +36,11 @@ align 4 loader: mov eax, 0X1234ABCD + ; call our external function + push dword C + push dword B + push dword A + call sum .loop: jmp .loop From c6eeed41c79fc40c05e4f12b1a180890250cc340 Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Tue, 15 Jan 2019 20:16:11 -0800 Subject: [PATCH 05/17] ignoring proper binary file types --- .gitignore | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index a84db7a..1faa69c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ *bochslog* -*.o -*.elf -./*o -./*elf +*o +*elf +*iso \ No newline at end of file From 24d62e82f2e6867cff74f8e1d5615dd42cdb48c1 Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Wed, 16 Jan 2019 15:49:57 -0800 Subject: [PATCH 06/17] adding framebuffer module for testing and other things --- makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile b/makefile index 1409ebd..0467a86 100644 --- a/makefile +++ b/makefile @@ -3,7 +3,7 @@ ASM=nasm LINK=ld ISO=genisoimage -OBJECTS=loader.o kernel.o +OBJECTS=loader.o kernel.o framebuffer.o AFLAGS=-f elf32 CFLAGS=-m32 -nostdlib -nostdinc -fno-builtin -fno-stack-protector -nostartfiles \ -nodefaultlibs -Wall -Wextra -Werror -c From a02a286aeab4397b7b9b8a9ee6f379278e4e5870 Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Wed, 16 Jan 2019 15:50:43 -0800 Subject: [PATCH 07/17] testing colors in the frame buffer --- loader.asm | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/loader.asm b/loader.asm index a06de7e..82dc859 100644 --- a/loader.asm +++ b/loader.asm @@ -14,7 +14,7 @@ C equ 1 KERNEL_STACK_SIZE equ 4096 ; external labels(cdecl) calling convention -extern sum +extern colors section .bss align 4 ; aligning to bytes for x86(32-bit) reasons @@ -35,12 +35,8 @@ align 4 dd CHECKSUM loader: - mov eax, 0X1234ABCD - ; call our external function - push dword C - push dword B - push dword A - call sum + ; pls + call colors .loop: jmp .loop From 835e9ee6f081c2b8d2f645f4258423d707614851 Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Wed, 16 Jan 2019 15:51:02 -0800 Subject: [PATCH 08/17] adding some basic frame buffer testing functions --- framebuffer.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ framebuffer.h | 7 +++++++ 2 files changed, 59 insertions(+) create mode 100644 framebuffer.c create mode 100644 framebuffer.h diff --git a/framebuffer.c b/framebuffer.c new file mode 100644 index 0000000..2324266 --- /dev/null +++ b/framebuffer.c @@ -0,0 +1,52 @@ +// Driver implementation for Jank's text frame buffer + +// Buffer can display 80 columns by 25 Rows +// Start of buffer is at (real)address 0x000B8000 +// Memory at this section is divided into 16-bit cells + // | 15-8 | 7-4 | 0-3 + // | Asci | FG | BG +// The following colors are available(from 0x0 to 0xF): + // Black Blue Green Cyan Red Magenta + // Brown LightGrey DarkGrey LightBlue LightGreen + // LightCyan LightRed LightMagenta LightBrown White + +/* +enum typedef Colors{ + Black, + Blue, + Green, + Cyan, + Red, + Magenta, + Brown, + LightGrey, + DarkGrey, + LightBlue, + LightGreen, + LightCyan, + LightRed, + LightMagenta, + LightBrown, + White, +}; +*/ +#include "framebuffer.h" + +// page 24 +static char* Frame_Buffer = (char*)0x000B8000; +// Writes character to a given cell in the framebuffer + // Safety handled by caller function +void write_cell(const unsigned cell, const char c, const char fg_bg) { + Frame_Buffer[cell] = c; + Frame_Buffer[cell+1] = fg_bg; +} + +void colors() { + // finding what the fucking colors are that we can draw + unsigned char color = 0x00; + for(int i =0;i<0x20;i++) { + Frame_Buffer[i] = 'a'; + Frame_Buffer[i+1] = color; + color++; + } +} \ No newline at end of file diff --git a/framebuffer.h b/framebuffer.h new file mode 100644 index 0000000..0ac75f7 --- /dev/null +++ b/framebuffer.h @@ -0,0 +1,7 @@ +#define COLUMNS 80 +#define ROWS 25 +#define AREA ( COLUMNS * ROWS ) + +void write_cell(const unsigned cell, const char c , const char fg_bg); + +void hello(); \ No newline at end of file From 2600868abdbc04f5196da33f50158cc66e4364a6 Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Fri, 18 Jan 2019 12:46:49 -0800 Subject: [PATCH 09/17] changed function signature of write_cell --- framebuffer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framebuffer.h b/framebuffer.h index 0ac75f7..515e1bd 100644 --- a/framebuffer.h +++ b/framebuffer.h @@ -2,6 +2,6 @@ #define ROWS 25 #define AREA ( COLUMNS * ROWS ) -void write_cell(const unsigned cell, const char c , const char fg_bg); +void write_cell(unsigned cell, char c , char fg, char bg); void hello(); \ No newline at end of file From e09e9ffc827ff8e5f1a0f1b53ce4a2963a10a363 Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Fri, 18 Jan 2019 12:47:13 -0800 Subject: [PATCH 10/17] using write_cell to test color palette --- framebuffer.c | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/framebuffer.c b/framebuffer.c index 2324266..3144f68 100644 --- a/framebuffer.c +++ b/framebuffer.c @@ -12,21 +12,11 @@ /* enum typedef Colors{ - Black, - Blue, - Green, - Cyan, - Red, - Magenta, - Brown, - LightGrey, - DarkGrey, - LightBlue, - LightGreen, - LightCyan, - LightRed, - LightMagenta, - LightBrown, + Black, Blue, Green, + Cyan, Red, Magenta, + Brown, LightGrey, DarkGrey, + LightBlue, LightGreen, LightCyan, + LightRed, LightMagenta, LightBrown, White, }; */ @@ -36,17 +26,13 @@ enum typedef Colors{ static char* Frame_Buffer = (char*)0x000B8000; // Writes character to a given cell in the framebuffer // Safety handled by caller function -void write_cell(const unsigned cell, const char c, const char fg_bg) { +void write_cell(unsigned cell, char c, char fg, char bg) { Frame_Buffer[cell] = c; - Frame_Buffer[cell+1] = fg_bg; + Frame_Buffer[cell+1] = (fg & 0x0f << 4) | (bg & 0x0f); } void colors() { - // finding what the fucking colors are that we can draw - unsigned char color = 0x00; - for(int i =0;i<0x20;i++) { - Frame_Buffer[i] = 'a'; - Frame_Buffer[i+1] = color; - color++; + for(int i =0;i<0x10;i++) { + write_cell(i, 'a', 8, 8); } } \ No newline at end of file From 3aaed95484b63222e7131a696022f5fd5c979401 Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Wed, 23 Jan 2019 00:52:52 -0800 Subject: [PATCH 11/17] swap files --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1faa69c..ba18e08 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *bochslog* *o *elf -*iso \ No newline at end of file +*iso +*swp From de036ce32729be2ec4441b7a03cf55b6ba04ee8c Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Wed, 23 Jan 2019 00:53:28 -0800 Subject: [PATCH 12/17] first pass of some test functions --- framebuffer.c | 28 +++++++++++++++++++++------- framebuffer.h | 25 ++++++++++++++++++++++++- 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/framebuffer.c b/framebuffer.c index 3144f68..fad5bdb 100644 --- a/framebuffer.c +++ b/framebuffer.c @@ -22,17 +22,31 @@ enum typedef Colors{ */ #include "framebuffer.h" -// page 24 -static char* Frame_Buffer = (char*)0x000B8000; +static char* Frame_Buffer = (char*)FRAME_BUFFER_ADDR; +static char* Frame_Buffer_End = (char*)(FRAME_BUFFER_ADDR + AREA); // Writes character to a given cell in the framebuffer // Safety handled by caller function + // also proper location is caller's responsibility void write_cell(unsigned cell, char c, char fg, char bg) { Frame_Buffer[cell] = c; Frame_Buffer[cell+1] = (fg & 0x0f << 4) | (bg & 0x0f); } -void colors() { - for(int i =0;i<0x10;i++) { - write_cell(i, 'a', 8, 8); - } -} \ No newline at end of file +void clear_buffer() { + char* fp = Frame_Buffer; + while(fp!=Frame_Buffer_End) { + *fp = 0x00; + } +} +static void print(char* str) { + unsigned idx = 0; + char* c = str; + while(c != 0x00) { + write_cell(idx, *c, Green, White); + idx += 2; + } +} + +void yote() { + print(" JankOS "); +} diff --git a/framebuffer.h b/framebuffer.h index 515e1bd..5d4e8f8 100644 --- a/framebuffer.h +++ b/framebuffer.h @@ -2,6 +2,29 @@ #define ROWS 25 #define AREA ( COLUMNS * ROWS ) + +#define FRAME_BUFFER_ADDR 0x000B8000 +#define Black 0x01 +#define Blue 0x02 +#define Green 0x03 +#define Cyan 0x04 +#define Red 0x05 +#define Magenta 0x05 +#define Brown 0x06 +#define LightGrey 0x07 +#define DarkGrey 0x08 +#define LightBlue 0x09 +#define LightGreen 0x0a +#define LightCyan 0x0b +#define LightRed 0x0c +#define LightMagenta 0x0d +#define LightBrown 0x0e +#define White 0x0f + void write_cell(unsigned cell, char c , char fg, char bg); -void hello(); \ No newline at end of file +void clear_buffer(); + +static void print(char* str); + +void yote(); From 39c96dd3c0da3f787c2a7e1ddc1990498ad96279 Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Wed, 23 Jan 2019 01:11:20 -0800 Subject: [PATCH 13/17] first function of stl --- stl/string.h | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 stl/string.h diff --git a/stl/string.h b/stl/string.h new file mode 100644 index 0000000..dbbeab9 --- /dev/null +++ b/stl/string.h @@ -0,0 +1,8 @@ +// our own stuff for stl utilities + +unsigned strlen(const char* str) { + unsigned idx = 0; + while(str[idx]) + idx++; + return idx; +} From e2315fc3cc6ff6ebb3bf2087cbb0aabf49a73d71 Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Wed, 23 Jan 2019 01:12:36 -0800 Subject: [PATCH 14/17] fixing print function slowly but surely --- framebuffer.c | 26 ++++---------------------- framebuffer.h | 3 ++- 2 files changed, 6 insertions(+), 23 deletions(-) diff --git a/framebuffer.c b/framebuffer.c index fad5bdb..d87dac3 100644 --- a/framebuffer.c +++ b/framebuffer.c @@ -5,21 +5,6 @@ // Memory at this section is divided into 16-bit cells // | 15-8 | 7-4 | 0-3 // | Asci | FG | BG -// The following colors are available(from 0x0 to 0xF): - // Black Blue Green Cyan Red Magenta - // Brown LightGrey DarkGrey LightBlue LightGreen - // LightCyan LightRed LightMagenta LightBrown White - -/* -enum typedef Colors{ - Black, Blue, Green, - Cyan, Red, Magenta, - Brown, LightGrey, DarkGrey, - LightBlue, LightGreen, LightCyan, - LightRed, LightMagenta, LightBrown, - White, -}; -*/ #include "framebuffer.h" static char* Frame_Buffer = (char*)FRAME_BUFFER_ADDR; @@ -38,15 +23,12 @@ void clear_buffer() { *fp = 0x00; } } -static void print(char* str) { - unsigned idx = 0; - char* c = str; - while(c != 0x00) { - write_cell(idx, *c, Green, White); - idx += 2; +void print(char* str) { + for(unsigned i =0;i Date: Wed, 23 Jan 2019 01:13:14 -0800 Subject: [PATCH 15/17] adding yote call and fixed weird comment --- loader.asm | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/loader.asm b/loader.asm index 82dc859..fed4a33 100644 --- a/loader.asm +++ b/loader.asm @@ -5,16 +5,12 @@ MAGIC_NUMBER equ 0x1BADB002 FLAGS equ 0x0 CHECKSUM equ -MAGIC_NUMBER -; example stuff -A equ 3 -B equ 2 -C equ 1 -; size in bytes +; size in bytes of stack KERNEL_STACK_SIZE equ 4096 ; external labels(cdecl) calling convention -extern colors +extern yote section .bss align 4 ; aligning to bytes for x86(32-bit) reasons @@ -35,8 +31,7 @@ align 4 dd CHECKSUM loader: - ; pls - call colors + call yote .loop: jmp .loop From 3cd8d8ac7325239d87f26570e6b553e8f5619808 Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Wed, 23 Jan 2019 01:13:59 -0800 Subject: [PATCH 16/17] this changes way to much to tarck its changes anymore --- os.iso | Bin 481280 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 os.iso diff --git a/os.iso b/os.iso deleted file mode 100644 index 973a532e5dad178fb461a0f255737a8c222e73dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 481280 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 z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr lKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0{^1~{tp`!WWE3Z From 3a5da9ce967f9e74346f2ffc41b30d4a21f5b63d Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Wed, 23 Jan 2019 01:14:18 -0800 Subject: [PATCH 17/17] removed silly kernel.c --- makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile b/makefile index 0467a86..b0b0478 100644 --- a/makefile +++ b/makefile @@ -3,7 +3,7 @@ ASM=nasm LINK=ld ISO=genisoimage -OBJECTS=loader.o kernel.o framebuffer.o +OBJECTS=loader.o framebuffer.o AFLAGS=-f elf32 CFLAGS=-m32 -nostdlib -nostdinc -fno-builtin -fno-stack-protector -nostartfiles \ -nodefaultlibs -Wall -Wextra -Werror -c