;Copyright 2019 Benji Dial ;Permission to use, copy, modify, and/or distribute this ;software for any purpose with or without fee is hereby ;granted, provided that the above copyright notice and this ;permission notice appear in all copies. ;THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ;ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL ;IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO ;EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, ;INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ;RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ;ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ;ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE ;OF THIS SOFTWARE. extern main section .mb_header dd 0xe852_50d6;magic dd 0x0000_0000;architecture - i386 dd mb_end - $$;length dd 0x17adaf2a - mb_end + $$;check ;tags dw 0x0001;info request dw 0x0000;flags dd mb_end - $$ - 16 dd 5;boot device dd 6;memory map mb_end: section .text bits 32 global _start _start: mov dword [info_pointer], ebx mov esp, stack call main mov edx, eax mov eax, 0x4720_4720 mov ebx, 0x000b_8000 mov ecx, 0x000b_8fa0 clear_screen_loop: mov dword [ebx], eax add ebx, 4 test ebx, ecx jne clear_screen_loop mov dword [0x000b_8000], 0x4772_4745 mov dword [0x000b_8004], 0x476f_4772 mov dword [0x000b_8008], 0x4720_4772 mov ebx, 0x000b_8020 mov ecx, 0x000b_800a error_number_loop: mov al, dl and al, 0x07 or al, 0x30 mov byte [ebx], al sub ebx, 2 shr edx, 3 test ebx, ecx jne error_number_loop cli halt: hlt jmp halt section .bss global info_pointer info_pointer resd 1 resb 0x1000 - $ + $$ stack: