some more, tag part doesn't work

This commit is contained in:
Benji Dial 2019-12-25 13:53:18 -05:00
parent 2b7b69e1ff
commit 2c542b87ff
5 changed files with 22 additions and 13 deletions

View file

@ -11,7 +11,9 @@ kernel: obj out
gcc -c src/kernel/mem.c -o obj/kmem.o -ffreestanding -nostdlib -m32
gcc -c src/kernel/proc.c -o obj/kproc.o -ffreestanding -nostdlib -m32
gcc -c src/kernel/vga.c -o obj/kvga.o -ffreestanding -nostdlib -m32
ld obj/k*.o -o out/kernel.elf -T src/kernel/link.ld -s --orphan-handling=discard -m elf_i386
ld obj/kstub.o obj/kfiles.o obj/kmain.o obj/kmem.o obj/kproc.o obj/kvga.o \
-o out/kernel.elf -T src/kernel/link.ld -s --orphan-handling=discard -melf_i386
clean:
rm -r obj out

View file

@ -1,3 +1,4 @@
ENTRY(_start)
SECTIONS {
. = 0x01000000;
.mb_header : ALIGN(8) { *(.mb_header) }

View file

@ -79,12 +79,17 @@ bool have_boot_device = false;
bool have_mmap = false;
enum error_codes {
NO_BOOT_DEVICE = 0,
NO_MMAP = 1,
INSUFF_MEMORY = 2
NO_BOOT_DEVICE = 000000000000,
NO_MMAP = 000000000001,
INSUFF_MEMORY = 000000000002
};
uint32_t main(void) {
for (uint32_t *i = (uint32_t *)VGA_BUFFER; i < (uint32_t *)0x000b8fa0; ++i)
*i = 0x70207020;
put_sz("Starting...\n");
uint32_t info_size = *(uint32_t *)info_pointer;
struct tag_start *tag_pointer = (struct tag_start *)(info_pointer + 2);
@ -196,7 +201,6 @@ uint32_t main(void) {
if (!((proc_table = allocate_block(sizeof(struct proc_info) * 65536, KERNEL)) &&
(file_table = allocate_block(sizeof(struct file_info) * 65536, KERNEL))))
return INSUFF_MEMORY;
;
put_sz("Welcome to Portland version 0.0.9!\n");
while (1)

View file

@ -34,13 +34,14 @@ mb_end:
section .text
bits 32
global _start
_start:
mov dword [info_pointer], ebx
mov esp, stack
call main
mov edx, eax
mov eax, 0x20f0_20f0
mov eax, 0x4720_4720
mov ebx, 0x000b_8000
mov ecx, 0x000b_8fa0
clear_screen_loop:
@ -49,11 +50,12 @@ clear_screen_loop:
test ebx, ecx
jne clear_screen_loop
mov dword [0x000b_8000], 0xf072_f045
mov dword [0x000b_8004], 0xf06f_f072
mov dword [0x000b_8008], 0xf020_f072
mov dword [0x000b_8000], 0x4772_4745
mov dword [0x000b_8004], 0x476f_4772
mov dword [0x000b_8008], 0x4720_4772
mov ebx, 0x000b_8022
mov ebx, 0x000b_8020
mov ecx, 0x000b_800a
error_number_loop:
mov al, dl
and al, 0x07
@ -61,7 +63,7 @@ error_number_loop:
mov byte [ebx], al
sub ebx, 2
shr edx, 3
test ebx, 0x000b_800a
test ebx, ecx
jne error_number_loop
cli

View file

@ -21,7 +21,7 @@ OF THIS SOFTWARE.
#include <stdbool.h>
uint16_t cursor_pos = 0;
uint8_t color = 0xf0;
uint8_t color = 0x70;
#define cols 80
#define rows 25