summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhpa <hpa>2004-07-26 23:52:33 +0000
committerhpa <hpa>2004-07-26 23:52:33 +0000
commit21a0ded2844b4b2a48ac9eda8be86e6287da59d7 (patch)
tree06c71f76b7fa27553bf78a84d6494eab21e5387c
parent9d4d7707c11162a2f827bf72efed2c8824b8317b (diff)
downloadsyslinux-21a0ded2844b4b2a48ac9eda8be86e6287da59d7.tar.gz
Move raw console access and strcpy() into their own include files
-rw-r--r--isolinux.asm77
-rw-r--r--pxelinux.asm77
-rw-r--r--rawcon.inc68
-rw-r--r--strcpy.inc12
4 files changed, 84 insertions, 150 deletions
diff --git a/isolinux.asm b/isolinux.asm
index d1d250b2..0e7d75f3 100644
--- a/isolinux.asm
+++ b/isolinux.asm
@@ -1433,81 +1433,6 @@ iso_compare_names:
.success: ret
;
-; strcpy: Copy DS:SI -> ES:DI up to and including a null byte
-;
-strcpy: push ax
-.loop: lodsb
- stosb
- and al,al
- jnz .loop
- pop ax
- ret
-
-;
-; 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.
-;
-writechr_full:
- push ds
- push cs
- pop ds
- call write_serial ; write to serial port if needed
- pushfd
- 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
- 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
-
-;
; mangle_name: Mangle a filename pointed to by DS:SI into a buffer pointed
; to by ES:DI; ends on encountering any whitespace.
;
@@ -1630,6 +1555,8 @@ getfssec:
%include "font.inc" ; VGA font stuff
%include "graphics.inc" ; VGA graphics
%include "highmem.inc" ; High memory sizing
+%include "strcpy.inc" ; strcpy()
+%include "rawcon.inc" ; Console I/O w/o using the console functions
; -----------------------------------------------------------------------------
; Begin data section
diff --git a/pxelinux.asm b/pxelinux.asm
index 58ae7e34..2140d5b5 100644
--- a/pxelinux.asm
+++ b/pxelinux.asm
@@ -1487,81 +1487,6 @@ free_socket:
ret
;
-; strcpy: Copy DS:SI -> ES:DI up to and including a null byte
-;
-strcpy: push ax
-.loop: lodsb
- stosb
- and al,al
- jnz .loop
- pop ax
- ret
-
-;
-; 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.
-;
-writechr:
- push ds
- push cs
- pop ds
- call write_serial ; write to serial port if needed
- pushfd
- 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
- 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
-
-;
; mangle_name: Mangle a filename pointed to by DS:SI into a buffer pointed
; to by ES:DI; ends on encountering any whitespace.
;
@@ -2366,6 +2291,8 @@ writestr equ cwritestr
%include "font.inc" ; VGA font stuff
%include "graphics.inc" ; VGA graphics
%include "highmem.inc" ; High memory sizing
+%include "strcpy.inc" ; strcpy()
+%include "rawcon.inc" ; Console I/O w/o using the console functions
; -----------------------------------------------------------------------------
; Begin data section
diff --git a/rawcon.inc b/rawcon.inc
new file mode 100644
index 00000000..87e69fa8
--- /dev/null
+++ b/rawcon.inc
@@ -0,0 +1,68 @@
+;
+; 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
+ 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
+ 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
+
diff --git a/strcpy.inc b/strcpy.inc
new file mode 100644
index 00000000..beb59542
--- /dev/null
+++ b/strcpy.inc
@@ -0,0 +1,12 @@
+;
+; strcpy: Copy DS:SI -> ES:DI up to and including a null byte;
+; on exit SI and DI point to the byte *after* the null byte
+;
+strcpy: push ax
+.loop: lodsb
+ stosb
+ and al,al
+ jnz .loop
+ pop ax
+ ret
+