(2006-08-06) rescue-bootcd
This commit is contained in:
72
extra/syslinux-3.09/rawcon.inc
Normal file
72
extra/syslinux-3.09/rawcon.inc
Normal file
@@ -0,0 +1,72 @@
|
||||
;
|
||||
; writechr: Write a single character in AL to the console without
|
||||
; mangling any registers. This does raw console writes,
|
||||
; since some PXE BIOSes seem to interfere regular console I/O.
|
||||
;
|
||||
%if IS_ISOLINUX
|
||||
writechr_full:
|
||||
%else
|
||||
writechr:
|
||||
%endif
|
||||
push ds
|
||||
push cs
|
||||
pop ds
|
||||
call write_serial ; write to serial port if needed
|
||||
pushfd
|
||||
test byte [DisplayCon],01h ; Write to screen?
|
||||
jz .nothing
|
||||
|
||||
pushad
|
||||
mov bh,[BIOS_page]
|
||||
push ax
|
||||
mov ah,03h ; Read cursor position
|
||||
int 10h
|
||||
pop ax
|
||||
cmp al,8
|
||||
je .bs
|
||||
cmp al,13
|
||||
je .cr
|
||||
cmp al,10
|
||||
je .lf
|
||||
push dx
|
||||
mov bh,[BIOS_page]
|
||||
mov bl,07h ; White on black
|
||||
mov cx,1 ; One only
|
||||
mov ah,09h ; Write char and attribute
|
||||
int 10h
|
||||
pop dx
|
||||
inc dl
|
||||
cmp dl,[VidCols]
|
||||
jna .curxyok
|
||||
xor dl,dl
|
||||
.lf: inc dh
|
||||
cmp dh,[VidRows]
|
||||
ja .scroll
|
||||
.curxyok: mov bh,[BIOS_page]
|
||||
mov ah,02h ; Set cursor position
|
||||
int 10h
|
||||
.ret: popad
|
||||
.nothing:
|
||||
popfd
|
||||
pop ds
|
||||
ret
|
||||
.scroll: dec dh
|
||||
mov bh,[BIOS_page]
|
||||
mov ah,02h
|
||||
int 10h
|
||||
mov ax,0601h ; Scroll up one line
|
||||
mov bh,[ScrollAttribute]
|
||||
xor cx,cx
|
||||
mov dx,[ScreenSize] ; The whole screen
|
||||
int 10h
|
||||
jmp short .ret
|
||||
.cr: xor dl,dl
|
||||
jmp short .curxyok
|
||||
.bs: sub dl,1
|
||||
jnc .curxyok
|
||||
mov dl,[VidCols]
|
||||
sub dh,1
|
||||
jnc .curxyok
|
||||
xor dh,dh
|
||||
jmp short .curxyok
|
||||
|
||||
Reference in New Issue
Block a user