[Back to DOS SWAG index] [Back to Main SWAG index] [Original]
{
MH> Could anyone know how to redirect a standard output (CRT) to a file using
MH> standard Write/WriteLn(Output,...) Pascal procedures ?
I was playing around with this about two hours and i still didn't figure out
how to construct my program so Crt standard write and writeln procedures would
write depending on which device you specified in the command line.
So i left idea to trouble myself more and wrote my own dependent write
procedures that will print only string-typed variables, but at least can be
redirected to any other device than CONsole device. :)
Now my code goes:
{---cut here---}
Program SupportingRedirectionWithCrt;
{ Public Domain, by Andrew Eigus }
uses Crt;
Procedure DevWrite(Str : string); assembler;
{ Device-dependent write procedure }
Asm
push ds
lds si,Str
cld
xor ax,ax
lodsb
mov cx,ax
mov dx,si
mov bx,1 { standard output device }
mov ah,40h
int 21h
pop ds
End; { DevWrite }
Procedure DevWriteLn(Str : string); assembler;
{ Device-dependent writeln procedure }
Asm
les si,Str
push es
push si
call DevWrite
mov ah,02h
mov dl,0Dh
int 21h
mov dl,0Ah
int 21h
End; { DevWriteLn }
Begin
DevWriteLn('Hello, world!'#13#10);
DevWriteLn('This text might be freely redirected to any device from the');
DevWriteLn('command line.');
WriteLn(#13#10'And this text may appear on screen only.')
End.
[Back to DOS SWAG index] [Back to Main SWAG index] [Original]