SHOW:
|
|
- or go back to the newest paste.
1 | %define com1 0x3f8 | |
2 | ||
3 | bootentry: cli | |
4 | mov ax,0x07c0 | |
5 | mov ds,ax | |
6 | mov ss,ax | |
7 | mov es,ax | |
8 | mov sp,0x0800 | |
9 | sti | |
10 | call setup_uart | |
11 | cld | |
12 | mov ax,0xb800 | |
13 | mov es,ax | |
14 | xor di,di | |
15 | mov si,fo | |
16 | mov ax,10 | |
17 | push ax | |
18 | pop cx | |
19 | rep movsw | |
20 | hang: mov dx,com1+3 | |
21 | in al,dx | |
22 | push ax | |
23 | and al,127 | |
24 | out dx,al ; disable DLAB | |
25 | mov dx,com1 | |
26 | mov al,'K' | |
27 | out dx,al | |
28 | pop ax | |
29 | add dx,3 | |
30 | out dx,al ; set LCR back | |
31 | jmp hang | |
32 | ||
33 | ||
34 | setup_uart: mov dx,com1+1 | |
35 | mov al,0 | |
36 | out dx,al | |
37 | ||
38 | mov dx,com1+3 | |
39 | mov al,0x80 | |
40 | out dx,al | |
41 | ||
42 | mov dx,com1 | |
43 | mov al,0x01 | |
44 | out dx,al | |
45 | ||
46 | mov dx,com1+1 | |
47 | mov al,0x00 | |
48 | out dx,al | |
49 | ||
50 | mov dx,com1+3 | |
51 | mov al,0x03 | |
52 | out dx,al | |
53 | ||
54 | mov dx,com1+2 | |
55 | mov al,0xC7 | |
56 | out dx,al | |
57 | ||
58 | mov dx,com1+4 | |
59 | mov al,0x0B | |
60 | out dx,al | |
61 | xor ax,ax | |
62 | xor dx,dx | |
63 | ret | |
64 | fo: db "H",0x0f,"e",0x0f,"y",0x0f," ",0x0f,"W",0x0f,"o",0x0f,"r",0x0f,"l",0x0f,"d",0x0f,"!",0x0f | |
65 | buffer: times 510-($-$$) db 0 | |
66 | signature: dd 0xAA55 |