35 lines
841 B
NASM
35 lines
841 B
NASM
global start
|
|
extern kmain
|
|
|
|
section .text
|
|
bits 32
|
|
start:
|
|
; print `OK` to screen
|
|
; mov dword [0xb8000], 0x2f4b2f4f
|
|
; mov word [0xb8000], 0x0248 ; H
|
|
; mov word [0xb8002], 0x0265 ; e
|
|
; mov word [0xb8004], 0x026c ; l
|
|
; mov word [0xb8006], 0x026c ; l
|
|
; mov word [0xb8008], 0x026f ; o
|
|
; mov word [0xb800a], 0x022c ; ,
|
|
; mov word [0xb800c], 0x0220 ;
|
|
; mov word [0xb800e], 0x0277 ; w
|
|
; mov word [0xb8010], 0x026f ; o
|
|
; mov word [0xb8012], 0x0272 ; r
|
|
; mov word [0xb8014], 0x026c ; l
|
|
; mov word [0xb8016], 0x0264 ; d
|
|
; mov word [0xb8018], 0x0221 ; !
|
|
lgdt [gdt_info]
|
|
call kmain
|
|
hlt
|
|
|
|
; WARNING: Do not insert random label/lines between gdt_xxx label
|
|
gdt_start:
|
|
;TODO GDT entries, like null, kernel code, kernel data, user code, user data, TSS...
|
|
gdt_info:
|
|
dw gdt_info - gdt_start - 1
|
|
dq gdt_start
|
|
|
|
section .bss
|
|
resb 64
|
|
head_stack:
|