Subversion Repositories SvarDOS

Compare Revisions

Ignore whitespace Rev 1578 → Rev 1579

/sved/trunk/sved.c
157,11 → 157,11
unsigned short dos_write(unsigned short handle, unsigned short count, unsigned short *bytes, const void far *buf);
/* NOTE: last parameter (far pointer buf) is passed on the stack */
#pragma aux dos_write = \
"push ds" \
"push ds" /* save DS into AX */ \
"pop ax" \
"pop dx" \
"pop ds" \
"push ax" \
"push ax" /* save DS into stack for later restoration */ \
"mov ah, 0x40" \
"int 0x21" \
"pop ds" \
195,12 → 195,18
}
 
 
/* TODO this function does not handle overlapping strings well! */
static void fmemmove(void far *dst, const void far *src, size_t len) {
short delta = 1;
/* detect possible overlap in the forward direction */
if (dst >= src) {
dst = (char far *)dst + len - 1;
src = (char far *)src + len - 1;
delta = -1;
}
while (len-- > 0) {
*(char far *)dst = *(char far *)src;
dst = (char far *)dst + 1;
src = (char far *)src + 1;
dst = (char far *)dst + delta;
src = (char far *)src + delta;
}
}