Contents of /tags/mkinitrd-6_2_0/isolinux/rawcon.inc
Parent Directory | Revision Log
Revision 996 -
(show annotations)
(download)
Sun May 30 11:54:28 2010 UTC (14 years, 4 months ago) by niro
File size: 1331 byte(s)
Sun May 30 11:54:28 2010 UTC (14 years, 4 months ago) by niro
File size: 1331 byte(s)
tagged 'mkinitrd-6_2_0'
1 | ; |
2 | ; writechr: Write a single character in AL to the console without |
3 | ; mangling any registers. This does raw console writes, |
4 | ; since some PXE BIOSes seem to interfere regular console I/O. |
5 | ; |
6 | %if IS_ISOLINUX |
7 | writechr_full: |
8 | %else |
9 | writechr: |
10 | %endif |
11 | push ds |
12 | push cs |
13 | pop ds |
14 | call write_serial ; write to serial port if needed |
15 | pushfd |
16 | test byte [DisplayCon],01h ; Write to screen? |
17 | jz .nothing |
18 | |
19 | pushad |
20 | mov bh,[BIOS_page] |
21 | push ax |
22 | mov ah,03h ; Read cursor position |
23 | int 10h |
24 | pop ax |
25 | cmp al,8 |
26 | je .bs |
27 | cmp al,13 |
28 | je .cr |
29 | cmp al,10 |
30 | je .lf |
31 | push dx |
32 | mov bh,[BIOS_page] |
33 | mov bl,07h ; White on black |
34 | mov cx,1 ; One only |
35 | mov ah,09h ; Write char and attribute |
36 | int 10h |
37 | pop dx |
38 | inc dl |
39 | cmp dl,[VidCols] |
40 | jna .curxyok |
41 | xor dl,dl |
42 | .lf: inc dh |
43 | cmp dh,[VidRows] |
44 | ja .scroll |
45 | .curxyok: mov bh,[BIOS_page] |
46 | mov ah,02h ; Set cursor position |
47 | int 10h |
48 | .ret: popad |
49 | .nothing: |
50 | popfd |
51 | pop ds |
52 | ret |
53 | .scroll: dec dh |
54 | mov bh,[BIOS_page] |
55 | mov ah,02h |
56 | int 10h |
57 | mov ax,0601h ; Scroll up one line |
58 | mov bh,[ScrollAttribute] |
59 | xor cx,cx |
60 | mov dx,[ScreenSize] ; The whole screen |
61 | int 10h |
62 | jmp short .ret |
63 | .cr: xor dl,dl |
64 | jmp short .curxyok |
65 | .bs: sub dl,1 |
66 | jnc .curxyok |
67 | mov dl,[VidCols] |
68 | sub dh,1 |
69 | jnc .curxyok |
70 | xor dh,dh |
71 | jmp short .curxyok |
72 |