BourakOS: My remarkable OS written in ASM ages ago!

I think it’s time to give the source code of my remarkable OS called BourakOS to the community. I developed it while I was a student in UK just for fun, ages ago. Enjoy it! :) You’ll notice that is the most stable and secure O/S in the world!!!

[BITS 16] ; Tells the compiler to make this into 16bit code generation.

[ORG 0x7C00] ; Tells the compiler where the code is going to be in memory
; after it has been loaded.

jmp start

;::::
;: Data used in the boot-loading process
;::::::::::::::::::::::::::::::::::::::::

welcomeMsg db 'BourakOS - Ver 0.0.1',13,13,10,0
pressKey db 'Press any key to Reboot... ',13,10,0

;::::
;: Macros and functions we are going to use
;::::::::::::::::::::::::::::::::::::::::

%macro print 1
mov si, %1 ; get the 1st parameter of print which is the
; address of the printing message
call printAgain
%endmacro
printAgain:
lodsb ; load byte at ds:si into al
or al,al ; test if character is 0 (which means END).
jz done ; jump if zero to 'done' address.
mov ah, 0Eh ; put character.
mov bx, 0007h ; attribute
int 10h ; Call BIOS.
jmp printAgain
done:
ret

; **********************************************************************

getKey:
mov ah, 0 ; wait for a key
int 016h
ret

; **********************************************************************

reboot:
db 0EAh ; Machine language to jump to FFFF:0000 (reboot);
dw 0000h
dw 0FFFFh
; No ret required because we are rebooting now!!!
;::::
;: Main part
;::::::::::::::::::::::::::::::::::::::::

start:
mov ax, 0x0000 ; setup the data segment register.
mov ds, ax ; This can not be loaded directly it has to be in two steps.
; mov ds, 0x0000 will not work due to limitations of CPU.

print welcomeMsg ; Call the print macro.
print pressKey
call getKey
call reboot

times 510-($-$$) db 0 ; Fill the rest of the sector with zero's
dw 55AAh ; Add the boot loader signature.