home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
pascal
/
turbo55
/
tdinstal
/
taexmpl2.arc
/
OFLFLUSH.ASM
< prev
next >
Wrap
Assembly Source File
|
1989-05-02
|
2KB
|
80 lines
; FILENAME: OFLFLUSH.ASM
; Copyright (c) 1988, 1989 by Borland International, Inc.
;
; Description: This module implements the routine FileFlush. FileFlush
; flushes the write buffer.
;
; ASSEMBLY INSTRUCTIONS: To assemble this module use the following
; TASM command line.
;
; TASM oflflush
include globals.inc
_TEXT segment
FileFlush proc
; Input
; bx - file record offset
; cx - number of bytes to write
; Output (of INT 21h, Function 40h)
; cf - set if error occurred
; ax - error code
; 0 - if disk full
; 5 - if access denied
; 6 - if handle invalid or not open
; Registers modified
; ax
push cx
push dx
push ds
;--- check if buffer needs flushing
mov ax, [bx+8] ;handle
lds cx, [bx+4] ;data pointer
or cx, cx ;check if any data
jz filflu3
;--- write buffer
mov WORD PTR es:[bx+4], 0 ;clear data pointer
push bx
mov bx, ax
sub dx, dx ;start of segment
mov ah, 40h ;function
int 21h ;execute
pop bx
jc filflu2 ;jump if error
cmp ax, cx ;check if all bytes written
je filflu3
;--- finished, error writing buffer
filflu1:
sub ax, ax ;code 0 if bytes not all written
filflu2:
stc
pop ds
pop dx
pop cx
ret
;--- finished, no error
filflu3:
clc
pop ds
pop dx
pop cx
ret
ret
FileFlush endp
_TEXT ends
end