W8SDZ@SIMTEL20.ARMY.MIL (Keith Petersen) (10/24/88)
Copy to a file all standard output to screen. Snarfed from local BBS. David Kirschbaum Toad Hall kirsch@braggvax.ARPA [ This program is by Chris Dunford, a well-known author of free software, who also wrote the highly-rated CED utility. Invoke the program, which gives you a new COMMAND.COM. Run any programs you wish. When done, type EXIT to exit this copy of COMMAND.COM. Everything sent to standard output while this COMMAND.COM was active has now been duplicated to a file. This is version 1.0. Concopy duplicates only what a program writes to its standard output via standard MS-DOS system calls, so it does not save anything written directly via the ROM-BIOS routines. It should successfully save output from programs that require the use of ANSI.SYS. (To save output from programs that write via the ROM-BIOS, try the once-shareware FANSI- CONSOLE device driver, which can save output in memory and later transfer it to disk.) (Aside: I don't know the internal workings of Concopy, but let's speculate. Perhaps it opens the log file for write, invokes COMMAND.COM, and when COMMAND.COM exits, it closes the log file and exits itself. The only slightly tricky thing it needs to do is to trap all calls to MS-DOS function 0x40 (write to file or device), and if the handle specified in register bx is 1, change "current PSP" back to its own PSP using well-documented-but-not-by-Microsoft system calls, duplicate that write request to its own already-open handle for the log file, and restore the "current PSP". Programmers looking for an exercise, try the above and see if it works. If it does, please send source for posting here, since Concopy does not seem to come with any.) Uudecode this article manually or feed to the "combine" script. checksum size (bytes) file 1331 6526 this uuencoded posting 61779 4714 concopy.arc -- R.D. ] BEGIN--cut here--cut here begin 644 concopy.arc M&@A#3TY#3U!9+D1/0P!>;`X``/00?;^/T#P9```,#10D&)@`Q)`G3@Y"R0(B MA@L8,`(2+-@"$H.`$@\F?+(01)HY(,*`F).F#1PV94#`D?/FC)PP;4#001.& M#H@Q;^"D*0.2SIN0(,A\7`/"3!J4(=WD"5HSC,29-3V"G%/&C4V?((@\F7(" MI,8Y;Y"2*6,GS9@R+$#<06,6C500;M[(:1.	NE,\M(G#-&3IFJ+D"`2&+S MX\B21\/(\>CFYALW9^%<_>E7J-\Q=-*X.:.2I4N8(-[4H0-G]-.?(H7.(6H4 M9=HR>")?I6D318P4'FWBM*JY#D^9/^_()5J'-QL0>41+K$HF=]HP;IJCD($[ M>9V;T$=FMCORKTPT*<DT!2&FC&;.5*T"_ZY7(%^_@`5305-G3EKKV!L+ET-4 M,YTR+V&6AAUEW*466TAII!!#'TD4AH`$WE>&37-L=QQ=_H6A&5"J$7697,V] M8<9(??W5V(.9E45''BY@I(!$4A3GQGD&(;2@1!4]X&("5/Q4H6*ZY90'C;N! MA91HI(VVGDBMH06"&O5=E0<<[4F4@((<,;0%&3ITL04<-:'119-;N``;'5WL M:(1<(,`&TTE.YN58&W1%M^.5-F9)(GQNN"`>'3L*5P<;S95WQH8XP3'D9GN: M&-IHI4W&X5!%'972&'6A1(9$4PPA11%%..$"$4%0$1@(5X#76!J%@21'<6EA MV5%.5?4$7E"4-IG4I@+!5L88H_TF$E6[B2?'4HDN)2)RHBV&$YW0-;?2&V?- M`=9B*,0U5Z9Y9/1$$TT$X001+AS41`H[,%O'"=Q1E9*<YH8[;KG?@L!&2ZA% M!Y164W3VADETM"A0%J+EQUYCO@+[7T@@U;D4O_Y^U@9(T<Y9)QD4@V2=1'=\ MA$9:KS8F1DUCN-6D?2#4E]*/T2G67&5I7);98Z_1,88+Z4*7QTSG[565I'(6 M&59**'0\D[V(T9%Q4#SUE49YA1;XQAVX=<Q=>1(ENE-S6,G98:4H"2Q1$B/* M.0>58Z1A5!G-?:UK77Z%0<92L'VD=%IRNE'&'4S1(9+5QV$M4!AP4!D=V^NQ M*K9`/<H$8!N:U922K%G@/65*16"1!!4AS982Q-,"O+A$J49UQH0@:8TX5AWB M"`D&.U*NUE''82I9'7XEM=2?P_Z\7M"/&1D>66:E5%_/[OG=LAS-04R5'&55 M>RH3::SQ^59=/9JD33#+G`;-?3LET!URL/I?8Y;]2H>!7=_ZGJ-B+'4\HT(D ML55WT!</$IOQ.SA&M21AU/NJ`H(VE*$-<ED*X.#R!IN4QS$Z6=U/Y-2D4\VG M/0DXG=Y><IQ7(>4C:5&;]B(%@NZI[WOZ><P);+*?->!-537:R$(XID*;F"<O M<EA<`IS0P'?1)H8+FIU=TH*&J9$%0&FQ'1UP%Y[Q0,4F-`%)>:HB$1-B!G%A MN$,8EF(&EL3$;"6*#PC6M!@WF<0U'AD1?D(6DJS]ZV(CJ4/)&+8CP0C&,B#P M`:YR2`<\`.I%`L&/<-RPPNZD9%AA1-]'3K+%T)3M5NG#3`)!@`)692\]DWD* M)'-EJ:PD00HNH`(6J)""M(A!2;);H!*9F!O=:9%%L<M31^BRE+CHAG!+S!WO MNJ.>]ETJ>$-+(WL<5#@VF*4F*&P3'DYB%E89B%9NH!C8+I4IQ&F$DB_!X7>@ M(Y'YH4=YQFJ.KF@2':3<YE1D5.:;T"C"-19G)/_"(('D0)+@.9(](&B"65@" M%C/8I`D/8@D(@F"M`XH!)=@*UQ3.-;NCY<6-T-*7,?6F@SK:D2YSB(D9WO`& M%K!@-SO8D4*;(,3CP(:9:5N?L@R'SVN.)7HIV>ABK+,88U9HFA*I)!VR9\N1 MT$4.-HQ+'<[@%JP8Y0RL1-(V"V,3N)5!;DN)8E)"8SB)O+1X<(&)-1&2@E.E MDG8,O.7M<L>S.>B0;+J[)TTC]I*)I8PJ`W7"%)+0)KX0;F5EB(-O(/,;K.R& M#BPYSD/=D\@7\N275@EL=_1:E6J5%();8XPOIWDJLDD$/VR0W&*HD`4H%`&? M33+L8O?JV`4^T"\M\`^`5C(AQ/5/(.*:JPNFD(4II(4,=4`I,ADE)[FDX5!N MJ$N;S&`&]8$$!0-LS!A0HICSL,"-]W(6.4^',F#1DTT())`!K5*SFW55,$@P MXCQ#J,:"J:R-`HF+&UH06[K^IV0S8NQZ[O4&HD2%@IU$P7_\V":A^(2>:6%" M$J9`A>?VRF8N**6ZV'4<=X6&#,TIF6)0!*#1-O8WD,,#XC9DM**"YREGFE[U M]O81)ZW$/S3"+U)HV9G#JF=:!ST@RLJ#*95=MEF=4>UB6`Q8O/Q$QZSU7%SG M:F&^+HU5^[N#&]R8V+`X9BQF=9%$+CA")37)=3H")(]NI2NLK*4M^$QN^-Y2 M'B+E)+(-$LA?>R.:.3R3I5].D"P9Y"H9T4B_;*&8'=Z0!HP-4R!OF"=XY';/ M-;NA#FU^,P$KMMPW!)`S*B[#=[/R!!`XX0F<HX(4LC#E2LLK"5"H`A-*]=DG M2`$$F0M"$Y+@A,]2`0F?-4(2F/#9*R!AUI^5W8`'.@0J),$*10B!8'AH59B$ MX72/?2`9'O.NGZQU#GFHT`%-J20Y^64.@U*:P027`#&D00^*\0LZV61&.%54 MRW9T#&2$U"C`_$DBZ;8,O.U8LC5@;`WS%LR*J-3N/KU;R_,QC&%$(H(*O60S M*:$O'$2P5+6(AE`%#(/ULB*:,V06).$UPX_(\!\Y2&1:=2"#!6^%)!)V\5^> M/'7%AH"$)1!A"DMXRRHK`QQ.>0I4HB*5J033J4^%:E2E>DM>&L-9SY+A.?KJ M+:2L[,6E3KFSGWT6'`VCNN;XYR<]QSG0=SX8A!%7?6G)^L]UOA<MVF5J($%R M@<R`].:(/>=!ES#"T]X8DN@A)7%.":ND(I$R,ZKH11"Y8`C:REQ&4WMI@1@Y MR8`26QF&)$M$YF,:BH8J'E`Q:PA#C$-RDG^)@=HVH:N@"$7((!7')I,O:TC8 M\$HIFF<S3WE5&71(A`)-*,6WDIVN\@Y$/0T<0GJ7YLBL/I8PC$X@33A@`E\P MSF@UWG43(!V")C?GMZ!H0$[:NV&\"11OVZ3QMLJ.#&(N(HD8$(''*@J;U,X& M,WCU6_(BE[D>>][LR,V_*!3N#$*S&!HL(:0",1/U<1\X1CBZ-3.'MT`T02`A M(09*=0,Q!WX%I'SIYV7#P3&L@@8Z)#L#QP9@\58TPFSW)"=A8`<:DEF;UWSE MQ!/'EP!28'MA`%=Y]E_=(A`YLB-6`"#UU!@.`1$@T`(@<`,O(`,P\`(X@`/Y M-D8Q<U.E<5!F44(P2!52)A!#("3E0U1T\`+4<Q;15`8O<`7A!ATKXCH:L",! M!Q++!BS;U51)=RO3(C'3U'L+X0*9\UDH(`)F(R)TH$5^(0(IX""YDRQ7B`;_ M42AX<2MA,!I%E$/R<2N"^%N$&!I*5F'@X1>OE0#&Q(54H3$%XQ,Z(!CGE8?^ MQ(=ED"YT,7$Q&'%*`5F_L2R#E0!OV%:[$A344@=K*'DGPHG7T3%S@`;I<B@, MB&USI#H]\08.HA3,EC/ZHAJ`]33!$F9Z2(JSF(:V^#.X"`)E(3X)8'N8P1(S M,@83"!UFU8@`$GP,=!,T(0?()E-IY8J(Z(`$HD/A=0=')`<$>!V*L3)HHS;' M9!=+,2ULX7V(<W(Q(6'JZ%S\9WF,52$TLFS!A8`HPXXZ$T?#>&8\043B56%T M,1;*R"L)0)"X8G#.F!F\Y3[1F(^[\@)L0HVWB("4!U$&)`=I(US3@EN8`1(= MIE0GQB94,A<?L8.G$@0($QME(!G)E&89='"%N!ZVU`(RU0+38A0VH3)RD#TN M(1IP@#)?-D<HF8@SX5MWQS7&J&;IB&S#0A?<45Q$TU-8`1MG@3@D<`.XP8YT MT7%I4!<HLW@3=08&!HN.YC>GTW8@H$$`(ER!!B"#)GB65FE&8&HM``52\`2R MQCFF=@3BD@1:4"KVXP2#,042$015\&JFAIE%0`0@0`65QG)!(`5'\%GBPA"J M]@15X`2<TYBG1@0#IFE)(`2AN9D@()DU`@5)4`3](IE3!FL@,`622057L)JE M=IM/,`15T`2A0@6:B1!I86JG66FL-@1,4`5$D&L<,9S%:02G"6N<LIS-^2F_ M"9W229VT>9V<>06;@P3)&02T5I[G602?])M7P)F0^01$4`6]-@4Z]&J[UIW? M&9[]$@3)Z5E#D`2R-@0@$*"W5C^^AA`#99FL1F!CY)@!.ID249F7F9D9*E>> M1&!2L)N]Z01'L)_)J9[.F1;\^6I%<&KXB1#/B2KU.:(V>FK*:03,.:-Q99JJ MR9JL]J(.*@)(("Y$(&`NRG#:*0+A0@4WF@3X.04,9P2@TIZ?Z00,@6FP!J0$ M:I]<&FO:::,IJIN\>:*G<FD?*@6/&9DB*A`DZ@28*9^=.5"AB02CJ06EN9V# MD1`+ZFK(&:1#RIX:^IKY5)I8*A&VB2JWQG+YI*,,L6M'VIKD8H:5:(YQ`84B M*2"3EWJW<E[N^'@GF3N:`9,`,I/'L7[1E!E+A(#"515EX8UK&&5:QD,0I"R/ MM#*IFA(LIFQV4SZGM)1L`HR+]DJ4AR2:9!@L^3,=^1V&84M8U091$E;DD1)^ MD5UL<Z"=^A:?RH=*Z:MIM0::<72S"#R*,HBH-XF+4:T-)!'&I'E(P8[B01?4 M=4\3B:[1<2I"(#^/1JT@T47>T4][F(]]B1_'!A^_DV?@"JRCV)7+6(LMF4SY M>&Y64A#I5H7M"HFU,02X$0,Y<(3D48,$D6X&@0;E4R$Y48D@H`2!003%(5,> M.1#I1F55R(!3$*P@<`0LD5L;6Q!0X`)/$!A"\`9XT!`P<`,RL+$=&Q:VZ&UA MD!8`=2R9I2\R$`,P0`,T<"<XBP(S``.W`0(YD`,RT`(Y,`,W$`-06X4F40=3 M`"`,>`,V<`,P,`,L0(0P(`,@L`6[V02M1@5IH@`:`!H(0T].0T]062Y%6$4` M7L(#``#T$&D3NXGZ!@``#$VTZ`-````#`"``*/SW3R&``&20*6P!P(/#```X M`(``0,3&AP`H(@H)`!;)7B2_D<Q'4D$`BAA>`G`ELYM,2`UQ`H"T:\B3)DV" M."'BPF<3`$:G0"DRI(>!CPI9?(2DH,&8-VZNPLD#(H8+&#`:*!CR9JN<-&?0 MT`&!8DB*KCEPX``AANL0-&?GT"F+IHP<$$I<@"!2QXV9-W+(O*#2%P19.V5` M3'ECALZ=,'(B'Y'SI@X<L73RP(E<!$L2*B#V@BCCA@R(JUG+<BWK-PR=-%C% M*B!19TZ8,V5TO,:JE>L6,CJZ;(%C&TT7,VG8L`[3ILP6%V7PT.FBFP3LXL(+ MAQ$C/?4;$+3=H/\[)K/MR-"E=_\N6[A?SG_QZ,>#9C6>,F/4<9L;9PS71AMA MM`8"')R-4<8<<R#6G0J./>&$3U!D`0(514C11!).!,$A$2"H,!]Q]:765V8@ M7#8'"&&`0$8:<ZRQFASX#;=5&@0.YT:$Y9%A6XRJS5@C"V)%"$(>G?T57V0( M<@4;'6'PB)X;;'`5(W-RW!8&&SK.9H:*D0E)97<[*8`+1XY@PX@!`P!@P`S_ MF."(`5*9H$@!"@!#APB^2`!`+@5=,<\I7]31P"#'()"(#QH`\*9&ZR0@`S"Y M,"2/*^M<<X`!'_@2"`"T-+"(-:SH0$P=!NB""@#IZ`(`#ZF]P\,+=*RSB#^9 M_@-+`YM>^@0B!>`20`_-A"#'`8M@@XXQ`*P#P0S)T,)#LG.T.@VL(S5[*;%K M`M!F(AY@M`L8I"J1K"XND)I`L@;@$D(-R;I`[@@"N/!F"0(<@`M%;>JB1P#R MEI!LN(X`8T(Q%D2ZBT6X`+!$LIQ`X0+#^!:<+!:=S-'`+FQN@TX,`.C23[0> MN`"(#RD(```=!>BR1`#K1(`P-KK$$``M[X80,1,'LXD-SP<'`'0(((L[S"\, M!$`H`(MD,PTP4)#P``$P\)"#'0(0<(`J6"Q1ASO#0!&%%-3.(`TN`@B1[`+2 ML+H`,'4(L$X*BRBS"#2#J!/`(-D`<';$;H>0"T:Z%$#J#\EJD<7*BFM01[$` M%.XX%L-PLH\+]AC0\C]U@``(/PG04</H`M#!P>A`U''`(/L$0`</ZR@PN@&3 M`Z(/Z`9TXL(_+N"+3AH`W(R(!0K).BA&ZV2`3A45,:M/K["0P,^F]V0S2#IV M#X#.#Z2*D>P4""N\B`=QT@)%LB:<CQ$M0"0KAP$[!%-W[;3X4*\QG@L0P!;J B2]8!/O`%QUTG%">PFR-<,(H$8F$*9[N"!PP`A6'LY``:`+3X ` end END--cut here--cut here