home *** CD-ROM | disk | FTP | other *** search
- /* This is file WRITE.S */
- /*
- ** Copyright (C) 1993 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
- **
- ** This file is distributed under the terms listed in the document
- ** "copying.dj", available from DJ Delorie at the address above.
- ** A copy of "copying.dj" should accompany this file; if not, a copy
- ** should be available from where this file was obtained. This file
- ** may not be distributed without a verbatim copy of "copying.dj".
- **
- ** This file is distributed WITHOUT ANY WARRANTY; without even the implied
- ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- */
-
- .text
- .globl _write
- _write:
- pushl %ebx
- pushl %esi
- pushl %edi
- movl 16(%esp),%ebx
- movl 20(%esp),%edx
- movl 24(%esp),%ecx
- cmpl $4096,%ecx
- jae old_way
-
- movl __go32_info_block+12,%edi
- cmpl $0,%edi
- je old_way
-
- pushw %es
- movl %edi,%eax
- call dosmemsetup
- movl %eax,%edi
- movw %gs,%ax
- movw %ax,%es
-
- movl %edx,%esi
- pushl %ecx
- shrl $2,%ecx
- rep
- movsl
- popl %ecx
- andl $3,%ecx
- rep
- movsb
- popw %es
-
- movl __go32_info_block+12,%edx
- movl 24(%esp),%ecx
- old_way:
- movb $0x40,%ah
- int $0x21
- popl %edi
- popl %esi
- popl %ebx
- jb syscall_error
- ret
-