curses module

lance@fox.com
Tue, 30 Aug 94 15:23:32 PDT

Ok... Here is my version of the Curses module. There is no test program
YET. And most of the documentation is in the beginning of the C file.
There is still a lot of work tha I want to do on it, but it impliments
almost ALL of the curses functions that deal with Windows.
Next is adding support for Pads and then I will be putting together
a module to support menus and a seperate one for forms. I hope to have these
done by end of next week (if I get lots of free time this week!)..
I have gzip'd and uuencoded this file since it is over 33K.

Enjoy!!!!!!!!!!

begin 640 cursesmodule.c.gz
M'XL("$BM8RX" V-U<G-E<VUO9'5L92YC .P]:W/B2)*?S:^H]43T@D?MUTSL
M[0SKN<,@MXG&X /<O1-S&X2 G06DE82QDQ'__?-K(>>)2&ZC;O=,XY^6*K,
MK,RLK,RLAZI.CC[]I])TW(UGSA<!.?OIIQ_)>$,ZACVA1+<LTYXOG)5/M4K3
M"!9TZAD6:9K!1B--PS)GCF>;!NE3=S6VS(E&[FPSH%,R"(R ^L29D<:2>N;$
M.*Y42,Y/P[)('ROW@8Y/O0<ZK51NJ;<T?=]T;!(X!.LG$V!2(TMG:L[@?\.>
MDJGI!YXY7@64! O3)[XS"]:&1UFA"?0J4V>R6E(;N$%*P"T4;8B[\ES'YV!K
M,P#Y C*CE ")!?4HB#_W#!ODT$C%]9P'<PHB!0LC@'\ :^P\4,8-5YGM!";H
MRG!=:GC$M(D! D&Q"0K &A"Q,G:"!2>1160P4+<;R9RA6?%7KNMX 30'20BE
MA74PYFQC25'MF?:K $DRIJC**6-R^D"!G(\$02V\_:!=D8O ,&U\#YH/58Q<
M58 P5A+J62K/=^G$G&'[KSTS"*A-7,]$JJ%$T/Z=1K>I$[W3:7??7/?N!CII
MM0?-3J-],R"-3H>\;_3[C>ZPK0_(^_;PFO3U-XU^BPQ[E>%U>T &O:LA@.@:
M:7>;G;L64&%H[9O;3EMOQ=%[5^1&[S>OX;%QV>ZTA[^21K=5N6H/N_I@@ 1(
MMT?T=WIW2 ;72"3+VZ5..NW&94<G5[T^H/]*!K=ZL]WH@$VTNZUV7V\."90T
M>]V!_K]W0 K*2*MQTWB#'' 4^?C^NC$<]*#"/D@UN.L,D?G*5;]W0SJ] 6,8
MZM0 ?MA W-M^#Y@%3M]?Z\-KP *.&_"G.6SWN@@-M0[[\ C,=/4WG?8;'?D'
MS!X#'_;Z 'DW$!@::?3; ZRS=S=$]!ZC"$2Z.B=981H'7.2#<:#W0>X;IA9
M2+0 M.719_^<5"HGGT^E,L2. W\,,EEY/O0X<^E:9M@[CDF;+ SHKF#$V(<=
M[ *&#YT0P&A *_ [N +?'%L48)EYH_^ O[.5/4$2/MDX*V)3Z0*P#/N2:4^L
M%3@&K0*4#/ F0(] Y[NWG37VR1.P?Y]"WUQBAX%_P&_-?-#=,*SB!S(V?'-"
M@HT+G--'[.!0#?@?Y@_ U:TL^C,ZSK,:&4P\"AWK-9$B(Q,@M >R6AO6KQ'R
MO$;>F_84>(@@L<]&-1V'[^F_5^:#80$!U,SA>[#KWGMR='B,A'ZHD5MCB@XZ
M(N2;2],"AP30O!*-@&L@:\>[]YDS0!0?%3RE,]/F',5_P/'P=@(]W#A^0(1'
M\<"+ #PTC&%C$UF.<P^:6+D@%_-$ ",:> D0KC&G0.$:%<D:WS(C6I%.A,^D
MV ;@J*;<'QN!"!I^!=B)4Q;ZKO1IL/)L\LZP5I3S?07&<-( Q+@P+>I//--%
M(ZF\?K*?R@#8L^>]\?_32< K&HW 5Z,7'8VBVEF;>(Q3U(#/L."%ZT$0M3%0
MY$;<U$],:414Q'49VF"%MW:<)X@0 8A?K<4I<3N!$A-R@]\IMSR?&RX&7XQ#
M7<>FR?JADZQ-.TF)-"T'VP1JM>-4L &%T.7% UTPHP0Z&[)&HQE38 >D-EB
M+$LIE+DR]%;TY,JP?"IU8OH*,:ZATO#U&/G'&NGTORMM.XAK$WZFSLJ=0M:4
M('#'7OD*Z8F]6HZI5Y9U:,_Q!BG) U=F!-5M*U-U\BR;6&7U.R)8_G:F,Y-
M>[01_S_6%!4+M!*0RA^!7B/ %A/Z$]K:0"K@B5"B8X6I01NX*4,CY!)>QFW,
MG(4Q04%B9AG^(DWC"E^6I[&RYS28+*JF'42$;E>"!+P%=SVYA[ !XCP&A .7
M5N3:A 24*PZRX..R:%TGH#]#7)JSY)+Y51O2!,@Q,-(8!/*IOE(?P+=I)]5Z
MA2]9(@PE$"'&J]D,/(L"?3*&UKY/Z5.'Y-L31>B"5#JT'05JAV*P+T:DDX63
ML0%>(Q;EUZ= Y/45HEF9NF1MMI5?EP*-UY6/Y!GK;%6\)BC*KTJ!QZLJP (3
M]5C#QTUX D0.'F,/Y@>0<7>R@T,Z +<2,H:(M:I(8&+,^Q'0$TCI_@;V"$\
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
MX+'PNL]DXE.WR417QK'ED#UE%S=X$=Q7*#V[H&Z?@K^EFRY>/+<_V4M*&@[
MLQOAJWSYJ28OR4-R3*YM=S*0Q%AW2+WE9TQ@;)DB&=#@LRL0%R;@9&!'W,87
M72<MKD8FXL*]V!TX!3N_1LOTGB\Q@U5F35-.'8I-)&P"IM12JIC[$JO0O@HS
MIT(_CBFG,LI@RAD9L?+*QM_E> UG0<0V&QB"EERO9V-DCL4&>N66VOE0E*.)
M,5.IQA #/ED?'Y2448T<.8D]!2Q%+J<:GL?+Q6P59HY*G3@F)GQE-8HYJ:Q/
MA9=77PS/4NR2RL.S9%TJK+RZ)!;$X[(;LC !DE6IT/*J"M'"*+A]*T$4SL46
M20@A987#,!ANG$!?6\HR10P!Q)1#YCT1[[<I14?XZ' #R"B+J484OA<9X!XT
MW#O!MDG@:DMFEP2\:LL;Q]E]JJ&K91=\IEPLNW(%7:?-E\BJM<J'^,T^2XT<
M3>'O(U#&VIKL+NHX%79MZG3*;U$*G3JN!RW!-6-8!^HW#+9Z*&H!V=..O(85
MQ(Y2(1R93UH?Q(](X05BZOL@[["6@]PS6%",!C#L.TM*_,UR[%@09"; =6#8
M@2]O=XJ4=#!E57(9<)FU94Z"ZK(F5')CW'.%R+OBC0?#M-@UOXA\NT%P;,IV
M0&7DGVJ'L4OLV=SN@0B?V30A=?E335;,KKC%^Q^9)-/HUJW<.GMOXYJ7>E+#
M@K(.M93JP@O"!EP)_*17AH)Y'/F_7'("*#6GSQ,>HI!F[AGN IJ%MX]/-LZ*
M3 P;/[CC7U"&5RR'?!PVFH/17:?9ZW=U8+T:?\1J#CX/N),$[A13[B<I]PLI
M)X$[A<#]H:YSUU&5CSE4DX"=7,#+).!E+N P"3C,!;SNM+L<LAH^JB'?)2'?
MY4/>=NX&L<KQ40TX.).>M<H?<\!^2H+]I 9KM1LWO6X+8*NQ1S5L\^UEK]$/
M8<5C#EW]39]KLQH]YDE^T^XRX:NQQYRVA+"@#T.R_#''/AK]?N]]"-IGCSG,
M)D%;!:!W2="[ E"I+,EKOK(ZC>Y0[W>E!L1C#M5.K_DV1A4?<SQF=-EWZ%Y8
M('/XI>CX"]N*4>12R6%CU.WU;QH=;DXI!R<+:P6>%DD,AHUNJW?'6BY#0A9N
M(W+7;>E]T:$R1,+";53Z^CN]/^"=,D-%%&ZC<0D5O17]*T.#%6ZCT&K?A E2
MA@(4;N6@UVE) ED.H' ;@49GV+QN@*S#0RU#("H,3:OKK/$J6D(AJF\"&,+,
MR<IE&9>XHMXS,27@\?D#'C>,E@79:!U_YQ,!\#2RT\_G[ 42JL+S!5(#!U"'
MW\D_&.V;QC_K2.C[[W&9E:41#!'W?Z8F&.#_6IV#X*0&!.7)TJTR:.WPKONV
MVWO?19J'M8N+TUI%[-"%U @R3):'Q3#M&"JR<54]U/[&\"074@SW#!)(][PN
MWW*Q\&MX?K4?$+.HS6G5OC^KA8#N&0!%2F&OSN6KB-YZ84*N585Z6-5LKRH\
MX!V ?ZW^]3]34%-3@/$TU2$J%$#N 1H$%+<&<PN,M+5!K%H@+C $LR%FU\(8
M$ W@ -4T@$K70G;MHWL+V<4X4AA$+7K" D4/<OQ 352$&@F/D+2BU%2H)$1Y
M+5I!"$TD2CI0!D9)"4TW4 6.$2 %M= 6/NB^5W!Z2RTJRB^")%B0:R"'*_HG
M YOP1:DI&J SLSG!#?&2Q!Q7D%(-)6 1JEZBD GK?L ;T<65Q3GYZ4K@P2T
(S9QF$IF1 S

end

--
Lance Ellinghouse                lance@fox.com