MAKE CURRENTLY DOESNT COMPILE I WILL FIX LATER :3333
This commit is contained in:
parent
d08f4dc2f5
commit
d23b4d9c6c
5 changed files with 57 additions and 2 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,2 +1,5 @@
|
||||||
badloader.img
|
badloader.img
|
||||||
baddos.img
|
baddos.img
|
||||||
|
kernel_entry.o
|
||||||
|
kernel.o
|
||||||
|
kernel.bin
|
12
Makefile
Normal file
12
Makefile
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
all: bootloader baddos
|
||||||
|
|
||||||
|
bootloader:
|
||||||
|
nasm -f bin main.asm -o badloader.img
|
||||||
|
kernel:
|
||||||
|
nasm -f elf kernel_entry.asm -o kernel_entry.o
|
||||||
|
gcc -m16 -ffreestanding -c kernel.c -o kernel.o
|
||||||
|
ld -m elf_i386 -T linker.ld --oformat binary kernel_entry.o kernel.o -o kernel.bin
|
||||||
|
baddos: bootloader kernel
|
||||||
|
cat badloader.img kernel.bin > baddos.img
|
||||||
|
clean:
|
||||||
|
rm -f *.o *.img *.bin
|
23
kernel.c
23
kernel.c
|
@ -11,7 +11,7 @@ void print(const char* str) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void main() {
|
void kernel_main() {
|
||||||
print("Welcome to BadDOS!\r\n");
|
print("Welcome to BadDOS!\r\n");
|
||||||
print("type something or die:\r\n");
|
print("type something or die:\r\n");
|
||||||
|
|
||||||
|
@ -22,3 +22,24 @@ void main() {
|
||||||
if (c == '\r') print("\r\n");
|
if (c == '\r') print("\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char get_char() {
|
||||||
|
char c;
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"mov ah, 0x00;"
|
||||||
|
"int 0x16;"
|
||||||
|
"mov %[char], al;"
|
||||||
|
: [char] "=r" (c)
|
||||||
|
);
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_char(char c) {
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"mov ah, 0x0E;"
|
||||||
|
"mov al, %[char];"
|
||||||
|
"int 0x10;"
|
||||||
|
:
|
||||||
|
: [char] "r" (c)
|
||||||
|
);
|
||||||
|
}
|
|
@ -1,7 +1,11 @@
|
||||||
; wait, WHAT? we have a bad DOS now????? This is absurd! You can't just add a SECOND project into the FIRST project.
|
; wait, WHAT? we have a bad DOS now????? This is absurd! You can't just add a SECOND project into the FIRST project.
|
||||||
|
|
||||||
[BITS 16]
|
[BITS 16]
|
||||||
[ORG 0x7E00]
|
[GLOBAL start]
|
||||||
|
[EXTERN kernel_main]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
start:
|
start:
|
||||||
cli
|
cli
|
||||||
|
|
15
linker.ld
Normal file
15
linker.ld
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
SECTIONS {
|
||||||
|
. = 0x7E00;
|
||||||
|
|
||||||
|
.text : {
|
||||||
|
*(.text)
|
||||||
|
}
|
||||||
|
|
||||||
|
.data : {
|
||||||
|
*(.data)
|
||||||
|
}
|
||||||
|
|
||||||
|
.bss : {
|
||||||
|
*(.bss)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue