75 lines
1.0 KiB
NASM
75 lines
1.0 KiB
NASM
; /*
|
|
; * AsterOS Kernel
|
|
; * Autor: Pavel Kalaš
|
|
; * Rok: 2026
|
|
; *
|
|
; */
|
|
|
|
[org 0x7C00]
|
|
[bits 16]
|
|
|
|
STAGE2_SECTORS equ 16
|
|
STAGE2_LBA equ 1
|
|
|
|
start:
|
|
cli
|
|
xor ax, ax
|
|
mov ds, ax
|
|
mov es, ax
|
|
mov ss, ax
|
|
mov sp, 0x7C00
|
|
sti
|
|
|
|
mov [boot_drive], dl
|
|
|
|
mov si, boot_msg
|
|
call print_string
|
|
|
|
mov word [dap + 2], STAGE2_SECTORS
|
|
mov word [dap + 4], 0x8000
|
|
mov word [dap + 6], 0x0000
|
|
mov dword [dap + 8], STAGE2_LBA
|
|
mov dword [dap + 12], 0
|
|
|
|
mov si, dap
|
|
mov ah, 0x42
|
|
mov dl, [boot_drive]
|
|
int 0x13
|
|
jc disk_error
|
|
|
|
jmp 0x0000:0x8000
|
|
|
|
disk_error:
|
|
mov si, disk_msg
|
|
call print_string
|
|
jmp $
|
|
|
|
print_string:
|
|
lodsb
|
|
test al, al
|
|
jz .done
|
|
mov ah, 0x0E
|
|
mov bh, 0x00
|
|
mov bl, 0x0F
|
|
int 0x10
|
|
jmp print_string
|
|
.done:
|
|
ret
|
|
|
|
boot_drive: db 0
|
|
boot_msg: db "Aster Bootloader stage1", 13, 10, 0
|
|
disk_msg: db "Disk read error", 13, 10, 0
|
|
|
|
align 8
|
|
dap:
|
|
db 0x10
|
|
db 0
|
|
dw 0
|
|
dw 0
|
|
dw 0
|
|
dd 0
|
|
dd 0
|
|
|
|
times 510 - ($ - $$) db 0
|
|
dw 0xAA55
|