[org 0x2000] start: mov [bootdev], dl mov al, 182 ; meaning that we're about to load out 43h, al ; prepare speaker for output mov ax, 2153 ; frequency countdown value is stored in ax. It is calculated by out 42h, al ; Output low byte. mov al, ah ; Output high byte. out 42h, al in al, 61h or al, 00000011b out 61h, al ; Send the new value mov al, 0 mov ah, 86h mov cx, 1 mov dx, 200 int 15h in al, 61h ; Turn off note (get value from ; port 61h). and al, 11111100b ; Reset bits 1 and 0. out 61h, al ; Send new value. mov ah, 06h ; Scroll up function xor al, al ; Clear entire screen xor cx, cx ; Upper left corner CH=row, CL=column mov dx, 184FH ; lower right corner DH=row, DL=column mov bh, 9Bh ; YellowOnBlue int 10H ; execute interrupt mov ah, 02h ;sets cursor to top to write mov bh, 0h mov dh, 2h mov dl, 2h int 10h mov si, description call print jmp waitforkey print: lodsb or al,al jz .exit mov ah,0x0e int 10h jmp print .exit: ret waitforkey: mov ah, 0x00 int 0x16 cmp ah, 01h je exit jmp waitforkey exit: in al, 61h ; Turn off note (get value from ; port 61h). and al, 11111100b ; Reset bits 1 and 0. out 61h, al ; Send new value. mov dl, [bootdev] jmp 0x0:0x1000 description db "Poetic Software is a project .... . . . .",0 bootdev db 0x80 ; Boot device number %assign usedMemory ($-$$) %assign usableMemory (512*16) %warning [usedMemory/usableMemory] Bytes used times (512*16)-($-$$) db 0 ;kernel must have size multiple of 512 so le$