[Back to DOS SWAG index] [Back to Main SWAG index] [Original]
PROGRAM FlushDem;
FUNCTION DosFlush(VAR F) : BOOLEAN; Assembler;
ASM
MOV AX, 3000h {get DOS version}
INT 21h
CMP AL, 3 {DOS < 3? old!}
JL @old
CMP AH, 1Eh {DOS < 3.3? old!}
LES DI, F
MOV BX, ES:[DI] {file handle is first word}
MOV AH, 68h {commit file function}
INT 21h
JC @BadEnd
JMP @GoodEnd
@old:
LES DI, F
MOV BX, ES:[DI] {file handle is first word}
MOV AH, 45h {duplicate handle function}
INT 21h
JC @BadEnd
@ok:
MOV BX, AX {put duped handle in BX...}
MOV AH, 3Eh {... and close it}
INT 21h
JC @BadEnd
@GoodEnd:
MOV AX, 0
@BadEnd:
END;
VAR
T1, T2 : Text;
S : String;
W : Word;
BEGIN
Assign(T1, 'DEMO1.$$$');
Rewrite(T1);
Assign(T2, 'DEMO2.$$$');
Rewrite(T2);
S := 'This is just a sample line of text.';
FOR W := 1 to 100 DO
BEGIN
WriteLn(T1, W:4, ' ', S);
WriteLn(T2, W:4, ' ', S);
END;
IF DosFlush(T2) THEN
BEGIN
WriteLn('Successfully flushed the second demo ',
'file. Please reboot your computer.');
ReadLn;
WriteLn('Hey, I said PLEASE reboot. Oh well... ',
' I will erase the temporary files.');
Close(T1); Erase(T1);
Close(T2); Erase(T2);
END
ELSE WriteLn('DosFlush routine failed.');
END.
[Back to DOS SWAG index] [Back to Main SWAG index] [Original]