Date: Thu, 29 Feb 1996 22:33:48 +0000 (GMT) From: alberto DOT vignani AT torino DOT alpcom DOT it (Alberto Vignani) Subject: Serial code for v2.0 (real-world app) Apparently-to: djgpp AT delorie DOT com To: djgpp AT delorie DOT com Reply-to: a DOT vignani AT crf DOT it Message-id: <199602292233.WAA09413@monviso.alpcom.it> Content-transfer-encoding: 7BIT Hello. To all the people looking for hardware interrupt management under v2.0: Here is the code I actually used in a commercial application I wrote. It is a reworking of materials taken from various freeware sources, so I have no problems publishing here at least the most relevant parts. While this code has never crashed, there are nevertheless some points I would like to clarify (see remarks in the code). Since I have cut a lot of things, don't expect to use this code without some reworking ... and please don't complain about undefined stuff, just cut/add it and retry :-) -------------------------------------------------------------------- begin 644 serial.c.gz M'XL("/\G-C$``W-EPDDJ/8HJXXUC AT IQ[%G M5>LCSU8JJ'+>TD^]M?=P,D`9*RG7WV;CU]T`&@&XU&7^@& MM;O-MA_EQ;9WZ_7=;?8E"JVOC/']W9F7[,[\;F?7B78C'KKF8L>JX:B?7<]: M)#9GOT:Q[?H[\S=JTSK:C=Q!YVY#U; MDK[YEM(6^&&,U&W58%GQW(V8Y2]YQ)S07[)3UTM6[)J''E_0TG]./)L[C'V\ M.CXZ'=5_AA^NQ]G9X>&X9M1S5.;J`Y#$>LCG.MMFXSF/.#-##M1Q%B4!4LQM)A;#!!?K M*OH/%Y?CRUGMYZ-+J\ M_'A%*^\7QP\`R4!O!&9!4SV*S=BUF.O%[*,9QN_,B'^1B__*#MA?[57W9*_% MVJN.^.@>BU_'>]^'*O#(B\^39:3"(G#["$>WW]&[_%X`!%Z\/N4W?*$!_]5K ML6Z+X;L^_LA?CCSXO5@`]P]8N]AY%?M!D':E?8D7N3,/6JVY&;*+A3WB80L_ MSZQP6!J$F'`,4G9F1M>$)TRLN`YKJB.#M:'(M_=F;`Y!W/"3A7SF1C$/01 AT J M!\/D.!98QL,P"6+&/7.ZX/?#N04XU^9>[#JN!?3[WKWPIQ;!GZ(,6+X7A_[B M7I AT S`7/FVWSY8*#3*)\(F9M$]\\3*?,\$.8J()@K*S1C:\X"T\Y`6!7,Y6KD MM>#](HE;;$P_QOA#,-7F*^8[S..KF,3$M/*I;_P%L!BVJ(#O",9%B(6^(!Y0 M AT BE,#X AT 01P3CV)\)3S@@`F-T>G59KTW=F!D AT GQ?'-=C'+\97T=2!I@^BJ2.; MNM!T(IIZLJD'3>]&U+3WM2[)DZ(_7@?'8>@#RL'7H=I!K1$V?:]_/LK58H*& M?(*V>Q(!XSS'9\%RXB_LB1O^.;Q[5.0J>$3O#0\CD,-)R&,VN<&/"@W,=/Z= M&U>KGC`E`*IK[>7J?Y"17^3GE?M/#JO4QXSEF+$VIHY83US'OP"=(;N`#6!L M+E?O$D>T$#@:G[%G+CER$-JW/IZ_/S[9&FIFTDK"<(+67S;` M=,"C?W+-/D4!Y_;27`'HZT$;H4$H7C[*BPD)NSP^,^JU3^3TR(\&/DX,7\#] M,=BA-;,6'-8:^VS)=]@(B.)\&<%@,P8WR3TV8DG$ZS5KX>Y&L0L_%SZX/ALM MVZT;SYE_@^;'8UQ(E8!T00U,!S4/_:/1B^<@K^N8HP)@R\GHY`)017,_6=AL M!A)B>L AT 28#R8Q?=?CP/.9"P],'?"CTRP]"]X6S*'5_Z8#"O?".VT'+BUP$1B2,.PXL AT LQ:Q!?P%39EL2:>NMX,Z>)%-KYE MR`#7NT9J=^I"3!]+XG]V'8P$"X'@!'XP9D;+QA9(\5:S_C-$%[S0[2?QE#5< M;SH)&A#0&$WV+3-,%.(838P?C0/;C<@]XW35KJ5J9E M83Y#_QKX3U=AS6`T+@IS3LH+3J`)<0<$X2;F+:- M`L\:D^5Z8L-GL\6>84^3O0';V"07)`(FEOH(()@\"'P.90]\W9F#\,-2R:+F MK6 AT _H8VH5]O3B0]80UM.$P AT F0[[=9,`%]H+6UTQ!BPLB#BY@:\QP AT H$#"&WC M&>"7Y(,BQDGH(4DUW,CT=T?@^P[OLL48UK\_FBFG$P[M9+"D8%?:B?=H`$-@ M=NZ DOT TV AT G@@-*",O,1.UD='H*9XZ"=[P%Z;&NO_3:KS$^*':&:-_"+^#W2$Y0 M`MM`"PBDP5LUE$A\!4DT9[#7VJM&\H(0AH!H#PH0/*K5\E$=.28@!SC159EKZ-\Q,_& MDMC[23 AT 1IM(/1_QV`;^-OG152==[`><0!]K]'`Y/TBI1)P6B-`)W MM^F0/+'@%#6QP$7&.:31E:1UZ;AGYU-8RT"=PNC?/47.`M>;H">=""7/N6"\ MEOO9UGGVM[8ZS:$8]$I9[!\>5T=(9G9.=#33=6!&D3+N2(RS!D7F`=.G*L+C M?W-E^49U4A$W"DLSE'DZ754*K+8N!7RC%'3Z*APOP#F;X5YI<`6IFVV&D_LT MG18HG&J*T#E\*-O`\)J+"5DC!?Q8RK:EB!S$BJ57#G$BU_.:UF,4J+-6+6!B M4(;K2BNU9Y'V=0K:!V!15#5?5]LON\#W:"/_NGV53MLJ[G/00E96P,G]ZG>* MUM16YU$A]B2$482P-D'(O56E`V/UJO:F0&\&VGN@/>D-_J^6LG?X`$O9 MDW9P(#=?V+]]XI^I#)-F\+6"R_,#%=%[S<^^UG>BZ&9UGIQHH(8.6O3L&F AT _ MC1U>%7;^3B"Y?8:C`Q4C%!U(ZK&E`+F8M*AZ`=!W");2T*J&FS89G8\GGRX/ M/WPXOFPT:_3Z'7!O-^!\&\80?C9D./4"UO.Z"8$JA)Q_S((`PN2)N7#-:)C# M4"!>@#E!F(:(:,T:^`Z=T#<_SC,)W#"ACZG"RX-XOGPSN`NP2, M)X"7;S#5Y#@1\/TEQ.6$3PX$A)AI;@XW(^H-JBA_U"!<9%,Z%.PKARVP\A&> M]1<<3T+<;F&Z)&+B#-1HXJD;TQMT$L9CN3RL[!">,24&_/`Z8HXOT@;IFM/C M/R5:W)@O,Q#*R2`%:3(E,N%D?FNNZ8<\`@(1-J@\-1TI20TG\2S,#A.N1FSB M.1W.^[,$#U!`#*8X\)S5'*;)F1&S?1G M^1R8G!A@(0-P84 AT M3N3&;^'$C\,?]7BDI-3JH$\83\1\@CH\2=G9J$A;;I/D M%<[!XL`H1.A`GI&&I8.R*N`P#,]0.`@IP`,TDQ*,)T\:VOS2Q AT RB,:SJ,KZF M)]U25T=V05_1TL#YFMKY AT 7;TEPMNT2[Z3M;0A!W%$R_/#K)\6(:F:5O:\AX$ M)[.P+::D8Q\$.$X!QS\(^.SS4;[&ST5X4`I.$C+PV`A0S^)79&RM41] M$NQQ&$%4Y\;",>`WP(UI+1.+`186[V0-&=%@`6&'85+>YB"J2\`6L5OT&5A5 MP*K2Q\/+,9 AT L-Q!&69:?J1SA1H AT BB<#N[F/FM=UB5%/&CW[V<;A#+@4]&`"9 MP/L_P150_5`@N)USS/^B?1?I99B&9H5/4^*0G:B/GL7%F%MW06O(*"]BNL4\ MM4>^PHTC41%PN`D[#HL48T0%74ERFDGL6[[GN#-5L'3;+:J%1DM^Z<`741', MOG1(I;/J#!;:E.(\JFI6KDD-FBWE?Q\0\,\E/Y&)*/F)V0OG_T=4AFR80;"Q\,Y8[ M#X>"9!G('2='KTY+T[V4:Q,EK2'LI&O-4V<_Q0#$X6+OZ^14Z1;'KADM=_$2 M!P-R?+8TK[D,'?(9Q0:S=&,H%J1,.*B\+(V3Z<0L.27(6TSKP6@]RYWOM<%X MJ^@Z]^++)*.(E0SJAZ.(S M9&6TOV78WKSI-=-4M!3/HSF'*`;HBCC'F)(H6E2(.O*%P)#;6C>KEVZS"').+HX8P86 M!_UD-J?U0D./9#0BX0:0;2&EVZF8IC8*=&_JFZ&-8$O32QS30LL30C2>"G6< M!!`L<`^Q(Q.Q\C7#XE@&2'4]M$<+%ZM AT 5.$CHE[VT#>AYL_]@/]TCY2?604I MAWUEWUA1.--A&Z7[+*K$`^?'PS(2824K<8!7'B\2Y3[FYCRN/3X>7YZ/PW2N?(V.Y1YT`+#,OV`(:XT'J).JQ^+\*6IR6\@4`AH6^;ZQUXR8CE M?.<=S/'[FPF%H9W-2B`0S8\M_&"Q!0XLNPV.*;$Q233`54K"`U[1EA)>.>"\Y^5>-AN770SQR"P-J%YAJO.VTZ((B@ M2N"G^V51Y,KK,0^@"P]30!9AJR++YHZ9+.**-8IC6*6*/$6B120*TI1*>O^3 M[B>Z^9UAK>.ZW*R?5*WY\"DN_'7KM;$TNA&$M&!"Z28=G2/`_#KNBHFP?^0Q M",N!P&2!9A=U@"[QU6L0$9LS\B%T0XONG]1_\/X)'O644(V\KX452HV7@^4 AT E/[T MZPNQ$(E&7"E71Q-U+U[(QN_X(26\)H,Y6O6XN&IA(/-T'/M51$ZI?=67AV== MO&O6*9Q^:\*OI=>C"OR`70"3^POK%)DB)ACGK*&[U%\SY"6N4+]DB_ AT N^3*N MYHM&T5,31%3C4N^H-4HKF)CRG*1Z1IA27J^7N M-0JI2Y$TQEMIF3@;_>;7IAR.+(F:_0U/6*U?X$1/K]^]WR4.W#G&H*-%0XK=6\W'-Z-J2@\"T(DKGN"8A$N\ M:2Y2P#?LM0RP4]@TG,;#28.B0DY\(MOI.4_Q8M@(R^HR'0 AT BD)I<"PJ M#(HMQMN9V1WC">93)IE&3&Y$?:*1XFVQ9_E%?\)$-_IWRO6.*A^@C5>+'T1- M7@&AC5(OUI:'!W3)Q%$LTGH5:/HT(;J1>6Z!LNU3J8"V$1 M'%*9^^*%",9*U;>T)J+ZN[1-%V(EULIA9#24_Q1A`/T^3Y;O\';WY:K8,E9; M_OX)I#_#J3^Y\[0"7V!HK#&TM/AQ:?%C??%C=?%/K:@H>Q8^.(/VME26U1ZD MQ%`8I!M/JK=Z:AC"EEUZ[1WF2D,(OM AT RB6(LQ-GOIYFW_=QW0@]=/1<9<6``N5&,//#IFUD&_PL MK4_WHZGQ1#*H#$]1F]<2*;C`#-UXW1*"$/M!F3Y*@WC@:V2FV0-9W&L*0RJ!3TQ4RGE^_SB>9K<1`S?D!5[F_*SSX_+@XW-HZ_* MHSN%T2)L!H_Q]NW;-&6;5AF0'PRS%'4%1>\)=NDIC_=H]DX^GIZ*K'7([<3B M4:&@1181JUESNE]#[HWRVO$:4Z'AS/5VV$?@Z-\/3T\$(N#/VD_`YCD DOT WF AT 2 MCT!GUVS>7US1_9!ZK<%W9CMX,59(`?3-S84C<-#3U;<@%3(Q:S+'7?`6^P-M MLX-I6$$#V4]-G;"@M/D"U%3F!DXO?ON--;9H+JH^_6+_[FTISZ)G!?J?RC9. M[$AYLW%X7L_*I",UB85NL(R])A#4D(_;OT7I-O;;*\O(3%&>;=0`]XIP/83; M4^`V`)8F;"-@SRB8RVFI;H.2+Y_D%7\=D\DV/HT%8MQHB/\BH"0T:+G1I.=S MT=/(!W*+QD?;-=SY_]];5]J"!VY=<0<>OG7M?83^KVX=[%"%ROT@[R4Q!<(W MDOSJ/NJ>Z(0ALR["1^+?7YQK2<-?L;HA06-N_K,!\VXNAW59 AT 7PB'GG"[U=Y1^X;?U_J[2?U;1 MWU/AHW)_7X6OZ!\H_5=!N?\5]DN!/#]*V"0LB32VVN;NBC87WK((;AU:P%I)`_ZW2 M8EO8O_4#1>DJ'#3 AT 7B3]^Y#T'X;D\%XLA_>@$7_/=1<:,>)>:@;W+6FP84D8 MYHF_OOKA:[>55[6PG/A35L)-145/T"1N,FF53Q.)IZ'[9GQT4,@$TP*;>>GFG^Q8./4IW5$CUW[ MPG AT C5%$NO6X+O0(E(Y.4)\!(G#G."&HPKTKW>W4ZC(4S%=[?^KLLT MJ)`'\ZD;:$]^55;J11.N?F7U`D"CV2&V'.E/KPG95HJAM:!ZG')]K8_S+NUC+/`W3BE4C AT 1[X*7K;@9T6$`8^1U.PK MCM$Q=RVBB+^REW,WGXF2HR^P=Q/8^_]Q6(8M0XX#XO+P@@)PRM&)PVFLGCF^ MT`/?L,K;9_7/N((P$V\*_$E,>8*9\MYHL/3W/A'* M)"HM:OFA21IY7LIE'\=^IPXD,5]6[C=Y2$#:Z AT JO7NGWXI+6;=7P/R0Y4_[?H2?>\("))C^ M]6;5`JH/8<_1M,-QWS-.H0^)KKQJY//Q#Y6$GU5:2`C;=-8$IYP6OQ:,9YSN M]"TB?#V]O^N"495PO=\F&6#EUZ)*1'9'J+?56?BU^ULJ/*PL,Z"IZ_!"KLPA M/3K3I0E0,GL#G**+[9AQ5IK&+JA';`ZS1]=IJ-MH<7T6/7`!M_ AT -F3QG(*Q< "```` ` end -------------------------------------------------------------------- -------------------------------------------------------------------- begin 644 serial.h.gz M'XL("+HH-C$``W-E*G=[>%RE]/]K;[?OMFYG7J;9>X__(1MUVO,Z[(3*24 M<:F")"&.O1@+5".=-N]V9*9*+3,:Y3IM$7N2&4!HN*5 AT 80&&@@-Q[-'<:B[9 MG$-8H+-X00N<.'OW1Q82U)_ AT MB?+39F295^\92H$2+(`F5IONE,B.W2.6"2J M!O>4.$BB,[+IX^33$);G%'5"X:5V7$BE&;5=GU,"5)54:F.-<^B+ M].6WC!W=5D$(PDTX-AJY2\F<-&E[9M]D-K]?SKINUMMOU M;CN&VD+^(>19J'-UT]V!-D[#0"Z(LV-[Z34/C4K&WV