ClassicOS/src/boot/boot.asm

62 lines
1.1 KiB
NASM
Raw Normal View History

2023-07-10 03:05:34 -07:00
; Set up the segment registers
xor ax, ax
mov ds, ax
mov es, ax
; Set up stack and jump to main
mov ss, ax
mov sp, 0x7c00
jmp main
; Print 'Booting ClassicOS!' to the screen
print:
mov si, message
mov ah, 0x0e
.loop:
lodsb
test al, al
jz .done
int 0x10
jmp .loop
.done:
ret
; Set the video mode to a 40 column text mode
set_video_mode:
mov ax, 0x0003 ; Set up a 80x25 text mode
int 0x10
; Set the number of columns to 40
mov ax, 0x1112
mov bx, 0x0007
int 0x10
ret
; Bootloader entry point
main:
; Call the set_video_mode function
call set_video_mode
; Clear the screen
mov ah, 0x06
mov al, 0
xor bx, bx
xor cx, cx
mov dh, 24
mov dl, 39
int 0x10
; Call the print function
call print
; Infinite loop
.loop:
jmp .loop
; Message to print
message db 'Booting ClassicOS!', 0
times 510-($-$$) db 0
dw 0xaa55