Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!uwm.edu!uakari.primate.wisc.edu!ginosko!cg-atla!fredex From: fredex@cg-atla.UUCP (Fred Smith) Newsgroups: comp.binaries.ibm.pc.d Subject: Console I/O package for PC-class machines Message-ID: <7781@cg-atla.UUCP> Date: 17 Oct 89 17:14:48 GMT Reply-To: fredex@cg-atla.UUCP (Fred Smith) Organization: Agfa Compugraphic Division Lines: 295 Below is a zooed and uuencoded file which contains public domain console I/O routines written (in assembler) for Microsoft C. These routines have the same names as, and are intended as replacements for, certain routines in the Microsoft libraries which purport to provide "direct console i/o", where in reality they provide i/o to/from stdin/stdout. These routines are often useful in programs which need to interact with the operator regardless of the state of redirection of stdin/stdout. They have been released to the public domain by the author. Please note that I am not the author, so please don't bury me under complaints/enhancements/fixes, etc. I am just posting these as a public service (ahem!). This is an excerpt from the C User's Group Volume #259, which also contains a useful public domain windowing package for C/MSDOS and a good C language profiler also for MSDOS, all public domain. Fred ------------------- cut here ----------------------- begin 777 conio.zoo M6D]/(#(N,# @07)C:&EV92X: # 1@ @18 $ !C;VYI;RYA$G#=UZ% M M@]3,&SD@X(0=@P9%"A8@SI2AP]8M7+ETT92QNW%HSSIN\-9]"R*,&S(@UH@Q M2L>MBXM!V-!! _8,&A"3R3;]&G8LTJU-J8YA4X=,&<14,>O5Z)-F=LHI*0 ,01W&SA+R\B!F[DKZ(ZMO9Y. M(Z?,&*EBF,*]8Y2M]L/2D69N Z+.G#),Y\QY# *%8L9N01P%X>;-[>YD<.<= M>.(11%)/8H0%PAUA?$:&:8C1\89^;@Q71H--F0'8=VE %<95=.2Q PASP.%= M&DJ-\2$;>5 W(54!JDC';FC8=E%V:Y31%8-(P=&=?*>-9Q13)(K%!AOZ/<>4 M;E%1=09S=,C!1@O-&8;8$%%..853>HVQAI/TW7A@4&26&5)V4XC65&;O)96& M'9N!)98;M%WGWFD@B-'5&&K1,0=?8^#U)V%\RD$5'6;P9:5.8SHUAXIN)$H8 MFTT999ET+3 %)Y(:5B@65)]U5Q@;Q;7W7GQSP 48JA]E]Y0'58%@7%IKM4688,+>-1=;>Q$&&+%\"=7HHO?UEM]U5,TAU9%XII89 MV"A582+SR!V81B;+9= MK 26 9>[=3AEF*E-]%7FX4!F0;X3FI:IO;MD"&%$X4$804OL+Q: MS5?=:A9:<[2QHJ]H]=7H4\^%\1T(;;QA&JDA'_8;"#I+8<3/00^M'[L-'EVS MTF=AO5T=;<#%QE9RP45N26VC48=<6&L-WWP7K5MOP=?U=YM[3F+=('NY@D"# M"S! _9IMT@W\+F]'IEQ2C7#N"X)I2M$)0AF]Z856&"#P[#/0;8M-]MS](FGC MMA+"X2N[D^WGXQMG:-4&?0^S+#Q.V5$Q8=IE("TPPH4YY[375^6HVE$K#<]: MH]9GWRKV%SG=--AMX 'VSF,#_90;'8ZH_4W!K^_^W3T93Z&U3U/JE9R>42CA MU[!]VR+SJ*/:\Q 3O34990[58Y3*WL? ]L'F-; 9 ]@4=ID6$ MLQ&I*"RJ6 M%[!%ZS8K.%_ZB,<]!JZO?2;,7G:D@#\Z(>4.AJ+#C&*F)Q HH0QF8!<1'@.% M-,#!5I^Y313J\*'>="4XPYG0%/)@K>2E"@1)J!#*X'>1HNQ'*43:C^G*4$/3 MC 8T$>)7PNI0,PF2(3=3<0-]TE2AT-Q&=V2\B@056)(S.HTJ<(E"$[:4G.7L MQW#="D-X,M0V>67AY0XK39F2H#]'G M"88Z U4^I!VF8&@E,)C!"V @@Q?$( EZ"]3(_I IAS4HTS?^,1VWK!D=7?DJ9H;I M2A*$4),^@@ *U'J*:9+2-@X.YIZ701U4 MRM""A6GE.]+)4QUR*)V';B^B4RA#4WPJK,)XC5G+X6E,9TK3]C5!:RB:#6*PZKDH&68.WVP*&W W MH>'4IS>CZDX8R- 5OU8EL(C!3@D-N[_!+J=4D[$1Z@+T*$.U891S>I)6QU). MS, '2=L*$%.[TT;-]00C1:/3&,@RAZWD0:QE=:U&;@JAQ"Q&6GZ,V8_@ *HU M'0\$<:@#66Y3PUYRJPKOD<,)D'($SMBNJPXK(>KH=YBM(&:T=,*M1-O'6SQE M351G' /I=(W?B3 M/!/B7%/Z8[3DA2GD])HWO,%6 M3YK=:I"'M#WY3;QGFF9NQT71C6KTQC;.<40H0I$D&"$&%(&B$9Q A"(8(74] M^UF0A4QD(Z>N?$L&00F>4 5ZC8T*06 ""(H@!2D\00HKR<*[FE"%*= +Q&- M45=(EQFTA"W)K',S^W'(4J\%(*52C"DHM 9!\'F=1$,+4" MA%SD(ZM.R:MFM9-=A^E82YG*5@X"EK6L:3"#0,P%&X*\<'EF$Z79#%T10S[' M]VJ@+2ILY?OGU^X,O;'LV=9]II=- "UH0B?/P8B>D*)7TP)&.UJMD+[#:2== MZ4MGNLN;+D*G/QWJ49?:"*>^=Y!]W.0C]WK)/FXUDE?'9UR#X CLE0Y#;_4& M,:AA0&XB4EWO36EXUSI6\A'3O)8HUK56]:W HZ.;P50 MY NZQ(*V-Q+5,S#IOQD10AYF=- X"@<$)VA)D4\0Y8\$03[KY<@0IJ #J!=! MZCQ6 !2VPIZ.%"&Y']F"$*#0!8HLRS]?,"I&B' %D$2N(R.:@H2TPK>N#C4Q M.K+65Z3W*S:8> UAT,MB*5*$)QS9(WQZC,JXQF7*3MV M>$,:$$-!%(QA.:Z/<40/Y13UY9Y]K?_]3[)#A*/ 86Y,G+;$-I[4A0(),75> M36>EZ@:X=.<,WF75KP D( Y!!7B-(O8N@^"&KN0Y*5(E U(X>_PPY %/*#@! M%]QP@N5@#DGJ])%WTH^G&@8PF_(G72=34\)G)C66>@BX>@I8$'%G$U#@=7.D M$5] 03UF! )':T]'01P!!5\1@1MA!%O!>2:'%)8>!\QA(C' M',N'5&BQ/WTB;78&*F_ %!21@QM1!(8A"02!DRH6#,' E!H:Q]AB!ZAAAQ1A(&QB%RH'73PA6%(!F-8AA(#A&AX MB58X!&W(29X3A]'7%.=3'':(@X"8AWO8@JG6=(WR!&$1AT;%?&]86'1()(AS M*R-E&A,B!##!AZ;G@.YQ&1TQB39Q5W;P$7L'%U, !82X$=3X$4. !=B8!!F1 M>+G1%,KX!%LR&D.U?LOU%5TQ!>)H E>8!-NH$=T(A. XC^.($:6RA :4/&ZB M*W10=-/X!M7H$4& !' ! T6 !!@Q(E1 !8:Y$9@9=R780;9( M!NHY)@E8GPNX>L%7@&-5$KR'5;ZGGY3440 *%-F!<+>!.JJ9F-)C!E_!'MNB MFJPI!UV(?1*J?>S"?0##*_0A.-NB6Y#7%37R&3$S$T.0!.)H!Q^B7'"!6/O1 M'9\(AG@":0=S*&4@%W*PH;BS&JKY.6] &S4%2 IF52! HB:**RG:%"C HI^1 M%!MB-JH9,K"BFQ\*%\?B I,",QZZ+2A*&O[RHG2"&"'*/U*J)URG!])Q/%ZS M+99R&62Z&TN!))3!!I%%1SWQ81JF4X3TACJJ(VDQAJ7IUXU(QQR*VB6!J24H'2E/;0TJ#:1'46# DG: UBU'#S0 R @ S50 \NQ M![G7/FCV!3L*JF,S@O_Y>^W3!GD@>*":!J\ZH-G1!W]3!J9JJ4\EH"1B;*K* MIZ!*!:!6!+=ZJB4T,FX0>'X# J"* H"Q*V?PI7X$ C[@ R" \E*J8W2![ZZ MGZ\5KL"G,N*W$D.P%9W$-RX*BJ&R)E )6)031MTB.D%Y&D^T*",U6[B2'F& M,I5J14BQ'VQ=+KK]JGRQ[GZS7C"'Q@&7$$5] +!5X@3=8LQ%S M@I+I$2#(@DLW@D]W01O!@3W;$2H8@DNG=,-I=OFX=CJP!7]'!X$G,5U0FE"D M'EO4/(*7&@FR6D.YGAH!2B 1!/EHMENI!'H $L2BJF* &"-BH$G1H!\:H:C! M+E\;E&B1/$*3!^'9$5 KM8$!>#,)%U?0B2Z)%H"&'?P @S2&W#!8-Y!&5M)MCD)%UFVCU-@;)"*)#N* M @Q&I.*(I\L1MC:AMFP;,5_ 7G +1>SBE)X(BDR:.6A+NAB!!6V#D HYI+[=#(G?J-W$'D?$:6$X1C*\1OA.260?J' LE*A5W&?)'?\J4 M.>JTI;-7=/S[5_X[6)YC6 =;P)PU'&GP6?7E\$51(Q4J,Q4W\Q%4,QE\L MQ5:, F<\QF(\I%8<.51LQ* :! T8$C, MM7"Y>+MK67!BF MT+!:0N"ZT!Z*$9OK!DFZT2J;JR#=82F;TE3TSBX-SSOQEQ!(LQETLS8(:^B, M+$6+@AWQLWU(@AFTTT?+$4D+M$RGR$_3$3D-C<\LM[_HAG/;NL/L7;MFMKR/;<2#((M#:1KIFCU'B(M8B-)+6W'/M3O"]B MU\E\4.C)S6N(F>3[U*R8&N>;06HMNI$[%T-KS_$YGZ<'TZK]T@H-TIC:E51E M>Q)3R@#:/KQG5!Q=@-EAJD0' A^]T*T-W"_XC+3!L9<+U;*]%AV6"(%-9- MVY@:OCTX6_*A(6P %YUW9"A >G[$+M+Q%3=:2\'MSP>XV@3.LG4,$C(K1S1+ M53;M:CE+51IAM!ZH$3X=M'ZH %\ X1DAX2FX@KB(=#'[C(.IGKTLY=MXJ.=F1BNX1BQSJAM$:Q=X"XKSP+>*+SW06Z1 MV\(7X/I.%U$>H2,^?C5]:R,3]U M?PLR%;?150BJ(]Z>KU[#[_M\$732."-M4E9Z$5!@2FWR'DW!5^FU7NUE-EUU M7J$1*6_@5,*.S_2)Z[>.>E?N$0G^=1OAMHS1X$^&TQ_$LQ.>$15>!$*+X2\O MU#&/$47]X4VGXGK]M&H^N%0[DUB;!%H[3%Q;BEX[Y=(QR""!O-S\YF8-$A_D MMM\KMZS+'E,MH=>.YZ/S'#U>V9#.'$'_XD-OM8:+N"^YN$YA2FB!YZ\NZ)7+ MV3JNN82>+9Y+$54?NJ7N$6,?FB 0 V'.2Z>EN^C('_YQ3/XN;72?YR AF[/K MS%A[NZM)S%QOF!M&!L,[(>^^^:/#%F^0Y!]1]8R!M5A(?[?QXM?.8-T^AHCN MB& E2+.XR>L+FD#>D^H-4":5MGO>Y[-9]=[+V%UB3UV5%1=B3R+%7JO/[0(_ MB@I ^KW1]QT!]5>]O%KMO%W=%=([(=2+&Z91UI6MO:/_6U0;_&PMP+SKI56N MZ)7-R6;7OCS9D_'['AM3O] 7OOEK&OO+2_TKE90U(18L@W$MA7(=H-T".P$- M#/\T!0A&!F(8%>A_7,>"[0\,9N<0U@;S+* E<82PTD+"4(M>.&&J186UEMBR M?^0###MA,VS0? U&A09PV*%S)'F"A^TF'P;$O$,8N!-$+"6UL3!&Q9Q8&HMB M:"$(3+$L]L;:F!:[0EU,(ZRQ^@ $KQ 96X)JK(T)P32V!'U@'"N"5W".E3S MA9,0DAY+3CTI7<&*/]:E0)'3^PB%S"-4/41F&Q19%[QJH:PG_21[%SR",TL$T$SRR/-LH1O MLF:N,)L].DKX\U;2-QL1X4PN:<++1-K.VO1P >+($RH%H021TJ2(%"D*&8(H M@B7)%"H.8W#YP22)D"$N6@JI>+'@$)E#%(+8*9 @B"%!G)Q :22)$R(_0,;#%C0+2 4X?.ZSY3Q M#;R%<.)E=-=Q<_RW[C5BT*2AHWO%F#=NTKQQX::,G!T@?(!P4H6)0AU\UX9T M"Y>D2927T]^5J;=@D[X*=O[U*9@*8<.(#:$88R X!IED4QEEF4KRP2039X ] M!1H(4S3Q'PBGI8;A$ZRY!EM^.]U&UQRWY;9;;\X9-UR*S:&17 O+M?A<=--5 M=UUVVW7W77CCE7?>?>JU-5Y[C39Z%U=%4536!8!&I<;=CA:R[$-AM=;92H&V_$!;=B<2V^ M&..>,TI'70O68:>="V:$L:-XY)F'5I,OK3 MF*>*Q_:I''. M@"=H#8:NEVBB_;HZ*9%=(H661U]I!"4(&3Q1AT@M%'''-3- M 4<98Z1A1AX@T.$B"&2D(0>[=+PA![QWN'@O"'F,*T=2M\FA:!IES &"HF7$ MJ0"X1> 11AMPL%&&#CL):.5/.G#1Q!1#L\LHLM^SRRRD' M!-RGQ/T" 40L ?&@ 21-%3MDN@"@ "42 ! 8V]N:6\N M9&]C H "@H ?_Q; $ I(R@ !LH$ BBH,&#"!,6'/+$29(G M(%JT #'DC9LY;]B4 9'D!40I;^K02>.FS!P09M[(H2BPI0*%1)),&<(D2)(F M1:3H<*F0"IHT)\VDT0@BC!LR1=FP ?'&# @Z:#8*U7B2#% Z>4B-(HTS%D0 M4<^^!7%68Y@Y;4G280QU(YPZ8@R/ 4'F39LP))E^#B,2CEVO,9L71! V4$.>02-X,P@44CJ+*6.XC!V33Z/B1DGZY&X0<,RFE-.FZ$G5 M!Y%A4EI:Y?99;T6-,89Q1U)T1=AT"!T"(=3 67QAEK&8@C7'>$ ==] M46*(W&3D00PY](0+ M04S11$%3A"3'&&B](2!*<_Y&QQAHH) "96>4\6FHHX)0ZJEEB$I9'6ZL"JJK M32IDJT&L@;"&&#_1(2IU"C7ZD M.Y%30$T+0-0:8"VYZXQS'*84C4@NVT>"R M(%C8ADIP;2L@&W/\*>RC1@0AQ;')EH%MLU+-::%5%5+&AFNE4I8K&G64FFT9 MV\K1K:;LS>&"N($^*D005!0DQ%J@TD?4C7]EJ!2$@#KJV7UY6 K:3" 8)H8< MKJ7!)\&.ND#$$T,4!$56&,;7Y9Y%@1F##"", 4<:YQ7!1!)4%)$"R<,B<9 3 M3R2&R1T9T3;["E==5@_AGX@F[^I5R**,&Z[(:?"4BX:QK*V*>B M"DU!!<)%X.1$PD\8H5<54D#QQ!1%)/JG3QNA+1))\"4W+J22%O6:A4:!>1MM M9< Q+Z868AC4G C^N: <+\9X%,7&CU32]K BE1R"B2WF-ICH=9:RQR!GQ6=! MQ ..4$E)EH_\2=\["[;@@+;@\ LP1XF.&2A,V$@0QC@4+FG,.9/=U#) M&L@"%O)D+C84J1F#2",'^SP03'* E7(X(H1)Q4\O*:M6@T9B0 H.+RITRL\8 MTB"4Q=GM(IQ:26_F4\(1O:8I"SP+4NZ3OY15 3=R.('8%'($X\'!/T4ABPXI M!AG6N 8I-SH.J)#7 I((*#]'D: 0+Y*1C73D44WB24(8T@2<2&$(23B-\,86 MN$[>RD/G28_G/)F0*R".(\A M+SIL(SFL QN0PH8WO&&'TSN#,5MC1-^$H50>/! 6_]2^MC4%?ND)(OU< Y>S MI/%"&>0B"+B&'Y;5L#?]P8Y%-K*C/WGH!""8 0Q@0)R;G:'AL[, M"X[EU(U9YA""@J @"R$1HC"1XIX+!;1E?\*.&'Y(IS0(Z"0[0E"#\B.'$'1F M2QU4VW&VLY*,8G$),OG0$__T3P824*!RH R"A%)$,+5T)2_%D$NS@BFDI(^! M))#!/&'0'81V;7%PXF3?I 7*P*! J#7HC UF,(,6T$">]+P/2>)0AS2\AD0A M 9/&S"#,I8 L5NQTRI]RRI8B,F4E8!7)F;Q4AB2Q=: 70QL9ZM#3B@HI;&K[ M4VU8.!^3OHPTU&& GY3J*5 M-J*4JM!Q_"5)A(S@@W78% ] MR$7H,$'"7F! M"@I")H&TH% !2^H[$'L\ :+*NE4*!A#"G8PRHO5; =D$^U" M'@BR93'P/NNADR+O SH3;>2UL5449$% A %EA8:HDZU!\M=8\I#5M*@C2U;8 MTLR:$3<,QEU);CMC%0'2@73WZ9Y2F]O(URE$"EWQJKI\N2/(%$>N#SP)T4!0 M!",8H0A#2!AVH/(RTWVQ.W]Z@D@\%=+37"$(6?@0;EH&(W5Q43&%@2]OL$A? MH@C(#HHI@WUOB<7NE@Z\V/F*M)BSF^.,9'%*@0L!U56&MCBH8\C3H$$6V)63 M?"4L8>@;^-+PS.*9JDIN -*( ]-=%)R "VXX06<"'%BE7E2_#+7+?E>,D""\ MC8%RLYZ:*(8@4+$NO91Q,:C4M8;R;BA]524 MV56O*&,S7]8R( 3!9BW2V<_RFK:VS;2U?%5+A>RAMU6^^TDZW'HCN> M&S+8*X%7VHB1O,28.T>SRPJ!U<^W(N9?_US&2TG36/JLJS*LB3')77O;]YS" M_3C9U6Z 4-@-@M_V[C>\_:6#53[#Y0$7^, )7B*#@Y)RBW0G"6Z@\)^Z9&$, M?VCH6?1P%T,,EZOW)^N,) H*NOZ&/W;F3R=.\>13C9:HMY5Z,0PIT1*6]#>T M);XDUKKN==YC-Z1@8+9$R!!@Q+.DU9 M>HS/]!E UA^DFI?.851;$6YG+!3,20I%0 6\XP2=87:SX3T,$C*QHC:^AE[' M=Q\"=P+V!-@30IG$K M\8F!-@7=\1T8X8F+I@7*5S1/<5;E5R9KQ!A%D#OGT0(Q<'U!J!!)T$2AU!E0 M$$4)2$5$P7M_=!(/!#8882&QMT6%47B/,4)_LHQ'PAB1@DE\TX!2QRX4E#\I MH11O\!4+*&U1X8Q=\B?\8CUOD Q5H>4X3@GT8@EP4PX""2XAB"_."E4D'21AV.,AU_?]%AQ138'\5<5$B0!ESLDY;^2=08"H,A#E68A%RY!;&5&>BAT5C"45D"(>W MMA&JN&MW:! 7YQK$-@9Q9G"=&17&=G')QBM@P6QL16W1-FVH*1+7-@;9%H33 ME6[K9CUV^"?O1CB9M1'S%GDC9V^961"^9EZNP2X+)S@MDP9 HD5?<&2N^QD']F08!BA!]$#!E<)]D MHY]FUY]4( 554 0'JA #"C @T)\H "LS<@8)V1DXXP.@A0,5:A 25X85%YPS MQRH91YD&X%D7,$@ET6T7-89*1 YTOK88W3J6Y5!Q>&L1UJ\W-_4I*H4W0]I#;4B2E. M*DV!T69%>(G)9WN,YY1XUGM?%U+-]XX(0GT7,GP@L'S!4T$M9G!3^H44N'CW MT7R 6%QM=7IJA9\'H::!R$"P=XC2HY'_N(UK>AYIX ) F&2]91#AR63C^91& M1W?^J(U")""ITAN?P6K<>'SIR*@&4:>6(YL:%X>8^!ET:&J\1IM9FI3K)G?E M]7-@:GKFAA ;AVN7R6N;Z7?"]IG(MJ+#!@)Z1W.EN6S5YFRC:*%*Z0;49C.N MR6RQN5C;IA#*2G,JM(8D,6YN>',%09O6.:.Z&7+T]IL^P&LG!XEY9(FU9S]' M03IE!%QJ\&A@ C%*(;"JA3K=,:2KUS*WL099X 2B\B<,>BLR=Q;6DP?/23;% M 0(3^SFIB0(B@&4'E0+P,2@<_H7LO M"Q57J?H;B/)A^.ZZB(RD#KY1;HM4.Z@8@* :=Y*64C-+J ET)J M4Q)XP"R7"GM_,AND":VB*87*!A9Z>KG'UC##FCK.)V"P* :E"R/HQ4Z6J#;_ MU#GS=;A'1!;3(ZLVE)1I47VLFUPD6!?"1!8OR7B/1C&86Q1GMA)2BKAT4B5# M,KU'IR38 M2;H4'#.,9QM:*9BM:A; U8P;D0;6R4M >D)%(HY)TB]:*@.*+JZ)19.89",%R(*$I5DQ0: N1*WJ#LH MH(L@FL7,XC>9@\+D,;K(N\+0MQ%_@HQ?=\3&2BG(JFN\AKF<*:W!ZZS1FKM& M6JVG>:VZH9KSM:W=:FW@:BIBXQ+CFA![_,1J&&[IVH9D>\<$5IVV":]K>Z/ M*9"UI3X>FB7-*09D\ 7*BRES$+%*U;'(R2P9>RL;NP=] +ZD<1X=M,JM,APQ M2W/N"0)(VEN8NUZ">W)/\ 10\"$2H1Q#8DPGE"/= 05R-19OO 8)&UT*<:)F M2*Y*U;MTD,D'L7%G*Z-I"W*\"G1;<'*R,N][@QUS+@/+/%.LY+ M.KEGVL2Z8IH#"\)5BI%7ZH"DLZ7MNQ'"JKG9FA"CBB!E6CV^)(EB 2:5R$"" MET^$9W;J2X-1V16*RB-?]1IE9WAWAR#ERW=I]'9(\2BXLR M3=NR#2NY_06\G1.N[&^]5&MNS_6BVW;*==*)DTP4#Y(JA0895%[!8Y6W2-EH-9!Q09,A%"X M=M/%,0,E 0QK9D$!508RR/%H0(>F@CH":!Q8A"WHT$7#AJ%3Z)5. 2AS 6 9 M=I(=5*G ZB18--/%*(7K!N#Z]V]1N9]_ 4RM>C4KT !G4K9?9HA"&\^[1UXA!DX;.((5HSD/_ M J=.=33" 5R#]* [@B]UN#'=?6@H-(HB^=&AP8(,-NC@@P\&!-RGQ/T" M # /R# end ----------------------this is really the end -------------------