diff options
| author | czjstmax <jstmaxlol@disroot.org> | 2026-02-23 23:18:48 +0100 |
|---|---|---|
| committer | czjstmax <jstmaxlol@disroot.org> | 2026-02-23 23:18:48 +0100 |
| commit | 2420e3f52b62580af9cdd661fb441733e437daf9 (patch) | |
| tree | a2854d70e7297e9bff879c5dc358dfb95d263fab /src/boot.asm | |
| parent | 6fc0fd2fd64388e32c4ec1cefa2ad8e1e43fdb5a (diff) | |
lots of changes. restructured repository. switched to limine.
Signed-off-by: czjstmax <jstmaxlol@disroot.org>
Diffstat (limited to 'src/boot.asm')
| -rw-r--r-- | src/boot.asm | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/src/boot.asm b/src/boot.asm deleted file mode 100644 index 011c00f..0000000 --- a/src/boot.asm +++ /dev/null @@ -1,134 +0,0 @@ -; boot.asm - stage 1 - -[bits 16] -[org 0x7C00] - -start: - xor ax, ax - mov ds, ax - mov es, ax - mov ss, ax - - ; clear screen by big scrollup - mov ah, 0x06 ; scrollup function - mov al, 0 ; al contains the n of lines to scroll (0 is clearall) - mov bh, 0x07 ; 'attribute byte' 0x07 is white on black - mov cx, 0x0000 ; upper-left corner - mov dx, 0x184F ; bottom-right corner - - int 0x10 ; call - ; set cursor position back to default - mov ah, 0x02 ; set cur pos function - ; position parameters: - mov bh, 0x00 ; page number (0) - mov dh, 0x00 ; row - mov dl, 0x00 ; col - - int 0x10 ; call - - mov si, msg1 ; print msg1 - call print_string - - mov ah, 0x02 ; set cur pos function - ; position parameters: - mov bh, 0x00 ; page number (0) - mov dh, 0x01 ; row - mov dl, 0x00 ; col - - int 0x10 ; call - - mov si, msg2 ; print msg2 - call print_string - - mov ah, 0x02 ; set cur pos function - ; position parameters: - mov bh, 0x00 ; page number (0) - mov dh, 0x02 ; row - mov dl, 0x00 ; col - - int 0x10 ; call - - mov si, msg3 - call print_string - - mov ah, 0x02 ; set cur pos function - ; position parameters: - mov bh, 0x00 ; page number (0) - mov dh, 0x03 ; row - mov dl, 0x00 ; col - - int 0x10 ; call - -load_stage2: - mov ax, 0x0000 - mov es, ax - mov bx, 0x1000 - ; load stage2 from disk - first sector at 0x1000 - mov bx, 0x1000 ; load address - mov dh, 0 - mov ch, 0 - mov cl, 2 ; sector 2 - mov al, 20 ; sectors to read - mov ah, 0x02 - - int 0x13 - jc halt - - ; GDT for protected mode -gdt_start: - dq 0 - dq 0x00CF9A000000FFFF ; code - dq 0x00CF92000000FFFF ; data - gdt_end: - -gdt_descriptor: - dw gdt_end - gdt_start -1 - dd gdt_start - - ; enable protected mode cleanly and transfer to 32-bit stub - cli - lgdt [gdt_descriptor] - - mov eax, cr0 - or eax, 1 - mov cr0, eax - - ; far jump reloads CS with selector 0x08 and enters protected mode - jmp 0x08:pm_entry - - ; 32-bit entry point - [bits 32] -pm_entry: - ; reload data segment registers with data selector (0x10) - mov ax, 0x10 - mov ds, ax - mov es, ax - mov fs, ax - mov gs, ax - mov ss, ax - - mov esp, 0x90000 ; setup stack - - mov eax, 0x1000 ; jump to linear address 0x1000 (which wloud be where s2.bin was loaded) - jmp eax - -halt: - hlt - jmp halt - -print_string: - lodsb - cmp al, 0 - je .done - mov ah, 0x0E - int 0x10 - jmp print_string -.done: - ret - -msg1 db `mull_bootloader hath bespoken unto thee:\n`, 0 -msg2 db `\"behold, \'O user! mull_kernel doth now commence its solemn journey!\"\n`, 0 -msg3 db `trying to kernel kernel :3`, 0 - -times 510-($-$$) db 0 -dw 0xAA55 |