home *** CD-ROM | disk | FTP | other *** search
- {
- 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.
-