Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site brl-tgr.ARPA Path: utzoo!watmath!clyde!burl!ulysses!mhuxr!ihnp4!houxm!whuxlm!harpo!decvax!genrad!panda!talcott!harvard!seismo!brl-tgr!tgr!SMERESKI.WBST@XEROX.ARPA From: SMERESKI.WBST@XEROX.ARPA Newsgroups: net.micro.cpm Subject: Re: Turbo Pascal output Message-ID: <7725@brl-tgr.ARPA> Date: Sat, 26-Jan-85 11:27:58 EST Article-I.D.: brl-tgr.7725 Posted: Sat Jan 26 11:27:58 1985 Date-Received: Wed, 30-Jan-85 06:30:12 EST Sender: news@brl-tgr.ARPA Organization: Ballistic Research Lab Lines: 80 Re: ---------------------------------------------------------- >> Subject: Turbo Pascal output >> >> Is there a method that enables program output to be sent >> to the screen and printer??? Cntrl-P works when running >> CPM, but from Turbo Pascal, it doesn't. (at least not on >> my machine.) Do I make the pr^ram a .COM file and use Cntrl-P?? >> Thanks in advance for any help Oiven. >> Mark Faleroni >> TRW >> Ogden,Ut. >> (mdf) >> > In order to print output to both the screen and the line >printer in Turbo Pascal under CP/M you must include a second >writeln statement which directs its output to the Lst device. >For example, to print the string 'Hello There!' on both the >screen and printer, you would include the following lines in >your program: > > writeln ('Hello There!'); { print on screen } > writeln (Lst,'Hello There!'); { print on printer } > > This is discussed beginning in section 14.5, Text Files, >of my Turbo manual. There is a program with examples in >section 14.5.1, and a description of the logical devices given >in section 14.5.2. > > Dave Beyerl > ihuxk!db21 > AT&T Bell Labs, Naperville, IL > ---------------------------------------------------------------- Because of the good documentation and careful construction of Turbo-Pascal it is possible to make it do almost anything you wish. For instance if you really want to echo all console output to the printer the following program will do it. The information needed to set it up can be found in the Turbo Pascal manual in section A.12 for CPM systems and B2.3 for 8086 based systems. Program ControlpTest; Var Ch : Char; SaveAddress : Integer; Procedure PWrite (Ch : Char); Var CB : Byte Absolute Ch; Begin {PWrite} Bios (4, CB); Bios (3, CB); End; {PWrite} Begin {ControlpTest} SaveAddress := ConOutPtr; {Save address of default routine} ConOutPtr := Addr (PWrite); {turn on printer echo} Read (Kbd, Ch); While Ch <> ^Z Do {test the echo until control-Z} Begin Write (Ch); Read (Kbd, Ch); End; ConOutPtr := SaveAddress; {turn off printer echo} End. If you really want to simulate control-P in all its glory then simply patch into the console input routine in a similar fashion (ConInPtr := address of your own Procedure). Your procedure can then scan all console input for a control-P and turn the echo on or off as shown above. I hope this technique is useful to some of you. /Dave