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.