diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-05-29 15:11:38 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2008-05-29 15:11:38 -0700 |
commit | b536209dfb7bd50c37061735fe10d2c19a97d26d (patch) | |
tree | 9d8ca6882fc5d9721fb0efea1abfd6dc09886814 /core/strecpy.inc | |
parent | 3ec40a0119587f63411475c76c69f9db24c7598e (diff) | |
download | syslinux-b536209dfb7bd50c37061735fe10d2c19a97d26d.tar.gz |
Move files out of root into core, dos, and utils
Move source files out of the root directory; the root is a mess and
has become virtually unmaintainable. The Syslinux core now lives in
core/; the Linux and generic utilities has moved into utils/, and
copybs.com has moved into dos/; it had to go somewhere, and it seemed
as good a place as any.
Diffstat (limited to 'core/strecpy.inc')
-rw-r--r-- | core/strecpy.inc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/core/strecpy.inc b/core/strecpy.inc new file mode 100644 index 00000000..1fc53e96 --- /dev/null +++ b/core/strecpy.inc @@ -0,0 +1,28 @@ +; +; strecpy: 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. +; BP holds a pointer to the first byte beyond the end of the +; target buffer; return with CF=1 if target buffer overflows; +; the output is still zero-terminated. +; + section .text + +strecpy: + push ax + push bp + dec bp + dec bp +.loop: lodsb + stosb + and al,al ; CF=0 + jz .done + cmp bp,di ; CF set if BP < DI + jnc .loop + + ; Zero-terminate overflow string + mov al,0 ; Avoid changing flags + stosb +.done: + pop bp + pop ax + ret |