madler@Hamlet.Caltech.Edu (Mark Adler) (03/04/89)
Posting-number: Volume 01, Issue 181 Originally-from: madler@Hamlet.Caltech.Edu (Mark Adler) Submitted-by: madler@Hamlet.Caltech.Edu (Mark Adler) Archive-name: kbuf_ma/kbuf_ma.uue [ This program expands your microcomputer's keyboard buffer to nearly 150 bytes. An interesting feature is that loading this program multiple times will expand the buffer more and more. This is because rather than accessing the BIOS keyboard buffer directly it invokes the BIOS keyboard software interrupt to get characters and put them into its own buffer. Source in assembly language is included. To distinguish this program from others that sound like "keybuf" and "kbuf", I appended the author's initials to the archive name. checksum size (bytes) file (between BEGIN--cut and END--cut lines) 4918 9056 this uuencoded posting checksum size (bytes) file 10617 6551 kbuf_ma.arc -- R.D. ] BEGIN--cut here--cut here begin 644 kbuf_ma.arc M&@A+0E5&+D%330!>7EY>LQ(``',1]V:=5^`J```,(.BDH<.F#(@E0JH8`=&B M!8@R>.B4<4,&Q)HR><2\"2.GHI@Z9LR4D=-`0<DQ;]JTF4@'Q(B2)1$J!&%G MY)PT;]R`B.$B!@@00][`R2,GS1DT+5$,2;$S!PX</YMP7`,B")F")!4$8<,& M1-&C=.9X+3-G9$TR+F`JL&(3ITXT:>;0>2,G#T.U/&'\W"O#!@BI=F,XA;H7 MA)$T<N2"@%-'#)LT8VBVS5F2I\_",:`Z>6.GZ=/"5<F0*5,Q3ITRIT'(!6D& MQ)@P7$&@"(*D!PPC1M"D4+OFHQD7*-O<-:G`HF\0;<*D<4-'N1NQ87;*N/&0 M>5W9=N:XV%FC.IVZ3.GD@5,F#)KR'EF/W%Z5S9PW`<^7!$'7Z'+8W%VCX1AF MC$0Y(/@F$H!QC=7<<J2I!E]TR>&11AMU"/=&:S'0((-^_/EGTWP<&23@2*2E M11P(5)P'@AEO</7&'<N=`4(8<\P1(1P"Y02='`8E-]J+&M71$ATFBE'&?G;@ M!."$\1ET448;=33?'*_I%`9%JM4!!QQTM;3<?W)8&98.:NVT78D&S0&7&2W) M%08==8A58'1BY"&1:G/A6-&:(+#QQFLUZ@2##C3$<`,:(LXGPY@FRGAEEEZ] MX2."(!3HQALMX=@"2W),24>AQ?4&THON+2@:=""X4<8=)];AAG]N!03?EB-U M2>-.-J#14`MIM$9;I&+=EAL+2;HQ'Y!E1NG:&SLN!P(16/"ZF(^1,@<?L2"8 MAEH9P`H)%Y5W[*<E=&S@&`89>0Q['HZRI>%"&2X`"V.DK0T$PAT@@J!&FS^. M1UH*[)588(%DY#H@2R?*D=*3S8VQ1HO`=@L9&L^&E:1%&,EE\$4O_FBB&08S M1U]KU%I[&GM/"%L<CFS*X0:P03!A6[0!\TE6E6.,0=8<++OLTW(QKSFS&<JQ M40>Z*$S::$K1SB=R&?RJ]1)Q:NU0T@X@),%<K%Y*YA]=JI5QQDH>CV;&<@.Y MI=W4:FTI5EE?$XPG#//1Y2(-*N``,20/[$#%@R-%RZ67(FX)%1MA"-G5'721 M$;<<<ZN0P]UY3V$LK'+(NFE)6^:09^%E')[XXHW'4"L(D#BPPQ(8:<1114(D M\<04?F--8^#,B;ZYX?-^7IS<(`0Z:$Q"?&$$$T$<`0(98H#P`^D,G)YZDQ69 MF6N:S;%YM@)J5T?&'&I%/34(4!A\1J;"L0WVY0I(39RGK9G/$H<Q1FC0$%/H MP#X+1-1_?Q'Z^\;"%/T#2?>(HSZJ00%:9%A3=-ZE)U2]BPBOFU<:8@.;!HJ( M/HP#00V&@`:UI(@,=.@,X7!'!L0Y20$?;$D)E<>"Y4&B`3MX`ALJ(I"5`,A@ MCS+5BT2#HQB)Z(-S$"'GNE)"W0'Q>*CZ00M)!T,95F1)JNN(:HR%0X'H<%QD MZ.'U/K@&(9+0A(I#X0RILD(ENK"),Z08DU;7-3D4R6:-RJ%!L*A%3BV'C,DS M(^E,9S6+H&0H#2%#3D[0DM?$1EYA.(-S.+6&.(BEC*2#P`ZB<)K4W$0/!E%6 MG"1RO4:V!I*0D"0EKU6PG*"OD0`"I2@K:1!QR4%$C;Q=YW(G14@L8)*LA*4C M]?`0TT@'*I!HWB@MF09,1LL[19D9'(0FEIRP:X!H2Q\(IM`<.;0$22X8PA.: M<*P=.>1>;8"#JZ*E)JZLR2T7Y%T,8`"##BI`3=8$4W'L%4YR-H<K83I>\F(P M`Q:<0"8+J4EB6F69GP1E*%]!BFR6XAG"2$4.5+$*5D[``GY6%&[S1!X(3K"5 MKB148CTT2X@H:M%U^E,+)VB!#6B03]XU<@6-G(,>5'`A2"1@!]3D2$OP-)&* M(&EIG/*>-*F0*3A`ATK$0DR5Q%!%!(FE!6&"D8Q6`I0`FN%_]9L4D%I$.@/L MP`A<JV!`BGK4Z#6FJ::ZW@!KV#<X&"PRIN)(/J4JOV5EE5+;.@,+^*<#K>8U M3)!``-7F$(::C.4,<?G/]7["&#-5!0OS>99CA0#9>3868D1(0F0O:]?-M@EB M_`.L8*NS-#5&L2();,X%72/6-?RQ7/.D*U7S9S__\95]HJ5:#^O42J\EUB8O MHE(6A3).4T4$!&>H@UV4-8;]+&>U6!)G:"U+W/Q%5K8&H:U?&<;7[;KA#)NM MKF:I*T[*AE><0:CL3]10SQ3:02UL!5!/X0!-!:P!2E-:S%M+59ZL7#=^L[WK M5K^[5P'_=42!'6QA>XM8N=@$NI]]K&<GJU[)8G:\C(VP=2T;X>G.)\&LC<VD MY)"<KI3%C9!II:.L^$P.FZDUD(C`#E!P$P@1;DZ4L]QNYFG(K@"Q,\'<P1#$ M6A_$N@$_)WZCBN7(*=*-=B*EA2+TCJ?`U?;8CT*![4^P:]?:@J3`7C9#;L<B M%[HP^+>)"6Y%4#8TG7`,:3D&W'E!,%W&5G<*_YUJ=@W,73Y_=\Z9G;-YR2OA M>2*F#'3@#7YU,M_ZWM=*XG3KGO@KUQ&]",![[BM>^ZSI`8,7P:,EK&%QU&#% M`JLL*E1@U]K&G-7*)0VDF\`..KJBV%7.2XNU,`@&G6''3@'#NM[P3]K`F5UC M@07T8R).$4WEYJSZ?*LE=F?RQP)>7UK/7<8MJ*DFR%2MJD_'I(V5ZTD;%OCJ M;K><0ADRV9HET8DUJU6#DE83$F4GH7UO.#6;ZNW,U7*R)>7>59#5S>ZQC"O> MO%R#N"I2NAW<6T$-4TY+4`0@=Z<V#*L=360$+DF"PXM.:VH3PBVBII8T_.'O M`=89F%URD4=6XU5!0B2777#IH0GDUHNW&Q(N2!V^T.&MT2JP[J48-JNLR2!> M>9K.1+V0B^7-$OK*?3RZ8@2YNC'&KG:S?GX$EC,=YVT*-Q.B76QJ6YO+M%5; M9*5=%2:P`"'"(]X1(LM><9J)46OHN4$@<8`=2`'1;7[L:M%NU3&3IPQ4P5-I M*0[VQ=ZW>O(<=K$IRX()F0'5%HE#5W<`A3=L:9Q`C>P8'A/KK^*H#,8,/8_% M"H=8-KSK+<'4<ELSI3R<FME:<+5`2J]N+5WMUC02BQCZLP:DC];H*R,S;P^+ M9K%`Q&:S2B^PC`#=.^>YKMK=])\)_6M!5QAEK:FI)(D0E]=(T0R$.T,S=:(F MA0T>T]GVS9CIW1J'?,<N<WEWO:FUZ&YF4B?,<D&/QQJ1IVMU%FS`QG;\HW7* MUGF?QS_C='$O(BZ@\A[OAVVW)7_SQ':49WF8YWI>Y8`>DW^J)WF=(7W,HFRP MYW_C1']61GJ0(&M&<'JIETNB)U90MD<[4`1N4%HH,1JZ!VLQN`-5X`8<LVZ8 M1'8G>&R^PDYW<U-_5V;H4FX@@$D&TW8,X0/T47QTMW,D]P9K$%G1LG%;ES<M M`P(]L!-9>")!,S0&433P83!(DW_TUS2=\AYK4(#1M2S`MH<'R&7=I7V?ME[U M='?69!%Z-V8+QQ!CA7_P,1JEI2H"86)U4#,W8P9UP`8"N'`%R(''YH',!H*< MYWDC"!\EZ!HP*(,T:!"G>&60J(-$Y8C(Q6RR%X2E1VNHTG]Q-CMTEW"+V'!7 M('$@((D3I"`KX6E)@B/&IUN`IS+`LEMFQGP.EF;/5P;1AP4"J'=Z:'VQ!7_9 MYVESUGV$9FV'EFCKHRCBU&A0LSZOI5^3%E?^51R$UVEY!6;>]6GS036NE66, MV(X2"'7TD4:EE7^F@BHE2#5(,!!B06UT-@7`DEG`0GF/Y2Y40GWSQVQ6\FPL MD6ML)WWTLW9EYY#I!9*=L8`CV8W81EO[4WC;EB=[0A4K-HQE\3'Q42!HU6(F MV'85!8O7D7]ZHC#T`2U;)18WN5IXT%PNTC(L<$>D<TLH8#4!4R0WX1@&(10C M<4XYX0([]A/_II-G.'#K]G&PL7!V\9,7X5,^HG.\-"EG`!\GAV_`TFWWN(SZ M409`R7@2J"P?5"TVV"EZ(A0%B!S%5FX^\7,>ERO!91<22"S**(:7!6.2A`)3 M\""9Z#.V9CE:*897QD5`=DM#%AM%-G55LBB'6)1BJ`8)-S8Z\99\24H%4@;A M)![`0BPZH7>K)9B=T8$A\8&:5QBC^'GY)V5L=(H!018`=VSIU90T]W%#\!U= M(03BPH7S9"]>N`9NP%14$60/)W3(!1]9.6:P22-V45HY$2#1*1M"0G$&`66L MQ%4P8(>%T9''%E.\9%.X1$J7A)-[<65M0`>:%V1%$)OCV9>%(2/)(WW):4M^ M9YS1F%ZK99W8*4\?-EKW-T[L24H7=YNC)X028'I(R(H$^A-7EH,_QX,^B"SZ M22<<2H1&N(JWB9H6H9HZ^'!`,T%N""P%L6`3\X/_-S%[29P=B03FIFQ$T#F( M9A#4PJ.E)!S4\J,A:F&0.6.3:6.6N8N;LI4B2F1CU)E"1F12=V242)J54G6F M\J*%B`9X]Y?B!`E>=9@@<RZ9)!;$UI@MJ9IQ<1YD<"NJ8I8U291DVF)KH)J1 MQW9W9&Z*V(QN(")L^0:1AS*\T8[J.$#]J7F2!E?]%57>:%5@IFWY6#5N4#:P M44QS1"7A*1ZM.3*=RE>4M1BD*#$DR$HLTRPVR57Y>4Q@M%A48P2Q^I!)``)P M@3XB.D.1E:-\R`);0%DJU06D<U,B^".FR$JJ(:JNA@9=(7V%:3I!X08"E2:B M.DZ;1!:Z]P9S@"HQMFS<FH0D.9&K:IC,AB64XWRF`1OA.JZD(V.]5TJM%EEE M1J_E>J^NM%J.2AR3JCWTM8XED8.52FGQ>&W8IZD9*$`C8D#0(GO'5%J(B24Q MD@94>4%4DS\OH*K-XJ[,(1:O>BVQZBQV`!NID7\7BJK%034E8R"!IP5DQFP\ M`QD^LS:5:#,Q`BPTBWDU*C1T"@*YRJN^.A"ZQW"RYJ]E(%`S&3`XPBK?N8%E MEP3&BJPRH*SVN8*NQ*J4,V[B!)'K"D-NZK6_)T&QH2JC(0?HMR+S2J[VNGQ@ M5+$AJ@;1`66%F3</)[+_42J4,HP4,1)M2R\5T9;TD:ABB$7%>JQ8D*Q.MH/N M@2T[%#W=^E/0JDER`J[S@;<%.`;U!)&,VP(TH+4W5;:+EXF:2'?KV8,UI;=P M*;,J4X4C`1^H=IML%[I9BS^]FF!%$+G`8B6IU5L<8;;_<4%0)@,Z0#H=J@6S M6[.^US.<1#,\FVL!>[`]2+#U]8H)"X^8FI(.ZV?X^+(@\'?2MKH5"I`6VQH8 M.Y4%P;%=MJI\2[+/>BWN&[/(!P(T&U+/B[/1*R.6&"-J]EC'PAS.P3WB&S+0 M*GO`TCDS2;,%@GE34A')62"JTEQ3LG)HT:FZ.DV]^JM)RWO,AB-.:Q!0:Y=] MHH0<?+6-.[K+N@,K^&8>P[?K(7KU]&LJW`)9V\*FF\`"&F\D7`9QT+I`!W&P MJQ-62+N(IJ$U;+7KVCQE*\,`PB)I&[AL:T%BJ"?;0ZZ2M()SB[Y/:K?'`\37 M.L10[+<MH;:"VT"DH7+>B;C3.;DI'+HVH+5]U[MEX2ZB$:W&9+GT^W)B')BW MBZRC^S^[*UA5``?!BZ\M`<47!(G(J[P[P+Q7J+\PP[\SX[_3"["(IA:O&*GK MV'J4NE_<.R+SN)+TV")A8D#KEGBQ9QW+I1-+`RR(67ON2UOPVZKR>ZHX";,Z M<;\_:[.M45JEF@?L8<>2FYPH0<#+(1;&U<KWUZGY)R1AO#1H\1,V;!A'"ZRX M&<>"3+HNS&PPO,BM.L,\ML0WG,/VN<.D-,RKA<7\*F,K2+$H,,MND`?P:2!J M`<K8:[#I\SU64TXWUBI*ZA!BY3X>0VK-US7H@SG/<4]L(*'R"'_T$V;X\[T4 M#4!A-F9D(Q"A:DP%:5I3!J23]XF[&8J]N1>_68JZ;+N#.9^[1#KI,TQE(JV: M*58#6Z("NM(:_:D<_1C&A'Z)Q-*=4:AZ$62;44A#@R/,P0:O/)I84II_2I?+ M/!(_4E3'%%^7F34UL36O)(8&.I$GN1<**));USS-.DY6.H'E<9N`6#]J-YT; M"LGD1UA4F=7!=SQ#PU46_%TI*I]+R1S`E#Y3H*-[R<ABR'8IQ`)AG9/2)S@K M(`.'76PI]-B*76';+#B55](_PC<`DF#W^M%6*M1^@P.4_9$M.=6'^!UA($[* MHHN_9SE:4R>BW=C,H3F0(-B$G4:&/9V(/4,XL]C;3-MTD`./'=F=`424#=R$ M6MN9?7FAV'^>S6R@_=IRQMO%ECFEC6>G_1Q4/5:K?4S"*46M$T%IO=6R;=P3 MN26VD\ZY71&[+=:2/4:5C=["+3K%;=W'/4;);=G+30>BT]P?B(ZDTW>??2IV MK<V773LVD-U>O7N0T*%6\S=W_01+X+=W0)?^J&H`Z:2D1)`&3IQ7MH]#D;B9 M2M$/*V8M*1&Q`4&P$YSK)D[4HMI&=4PK,:=V$<$/X2`(SG;,`N`VV]!BE6!! M0&R2.$X788VW^7G3<3>F4P0Z'L`XDAS*TD-I,!KYRL_LHST&K!8]!7+6I!8: M`!H(2T)51BY#3TT`7EY>7IX!``!S$?AF!2'2`0``#.G*!&BP1$@5(R#LE)$S M)\T;-R!BN(@!`L20-W#RR$ES!@T=$"B&I(B8`P>.BDW"R%D#(@@9-@L;*`C" MA@V(C1WIS+E99LY"A61<R-0``-((*%.N>#"`C@Z``Q^^;,'BXI\++@"0*C7` MJ:H',`#0884J%<NS?5.L>&"TS-$V0/S^T1E!B!R=&_Z8T6F0MTZ.%=O<@KI` M8!V,77``Z$,7"L"^#UZV*!,`P,`51\,0`U@D;/$8Q[@`_*L3`,B7`^L4:%YL MQC$=>Y"W/&.$S!$V1\!@!3!D``T`0L#JM*`5@-,_#V0`T/F@N5!P!+@`A<4` M8`6PQ1Y<)Z`%P#AR`.NP&>L-`,`P?HW^Z(L&;M6B8:M6#>NWZ(^_'?M6W1DP M0/V./_S0,4`B]LVWR!W\['"'/W0LL,,\K>PWP!WZ)(+@,`<FN&`KF24675BY M_#.>;]4!@YL^)H0"`@"C8)6B""QZ`8`)QQBP(AP!F,"(`S"F2`*+8*5H`HMB MS%CCCX+DN..0*6+!8G(I:L%B:S0:X*0E2CH@Y3[H?/"/+F@(T,P)&@A+0E5& M+D1/0P!>7EY>[00``',1%&?EPMD'```,#10L$5+%"`@Q>4`T"2-G#8@@9-B4 MD0,"!)0P<\*0*>,F#`L00X)4C)$#!PX7`0,.+`BB#!XZ',G,`4$'31D0<]+H MN?G&#$V;(-:4R2/F#4,R(.+4*;,4A!DY;]J`B%&#YINI-&0$'3J'#E2A<U`J M2$('1)J98Z+""4,GC1B)(.ZDJ;F5J%$Y2+N&&;,FC9LS(.!`/2,G3)N9*.;4 M&8,&!$804Z@$&;*D2)84CMV0"=CF39TY-\?4D3/G#<7.=LJTX5@V9YLZ;-B: M1JR8L>.94(9`SM-5]<PF3ZI,*3(ERY048E42-'C'])J9",VZ@2EG3!DX;?_^ ME%/FIE_J<NI@GZ.C8LV;0NT>Q3DFC!L0:3<&_#XQ/'80*'*D^'B^;M'UH,EA M1QK620>>>&6A$(,-:.R7&5+]M;4:16WQ-=]T]2&('P[(5?3$>V'X=U=>$PU8 M('URV$?'1RL9=$89=,R47E=?E3%'0$]%95:,(+QQQWM*,57&1W[UIE&//N4H M57]")/'$%"?,%.12+G@((DUI3(BEA0J@J")_0#7Y9%)+-746?#;Q50929IB6 M64*,,;07=3-]YA=@YP5D6AIG^!4&&SB52.!-4-61W4WN(96&3^XEQ-!-;=:A M&9A#.<8="*BM:14(+489T)1#FN73>9>>"55458+PH6,B`MC>>_%YAV&*"%*J MIQQ\^@GH'*_"]\9&(!1ZJ%EH_2D1A%<)]H9U<\S47ZP/_L21M`&%451JCHW1 MUAOOM4DA4!).9&"&]YT)QT3>KD9&<@I0`92RA!EVFV*KS92:'`FQ,1<=<%GK M65G]H=@1&S/U)"T(8DX1J("#!B2L7S:FFL1[:\E1(6P,$5D6&6_8"((;;Y3E M1G?(!@7R'7'9=&E_>_8Y\*=E>C?'1VZ6D=I[:/@(`AO<`C87L1)W.Z?&Q`;V M1K-NP47'53QKQ!EL;<$!5UIPI.&QP2UN^F)9L<GQ(D6@XJ23QRC4Y-D9C9$J MLV,!B0$C=7&%D4<+=(-VD]L\WX%<2NT"E=-.2!Z<WG]XD2DD?.X=).L8W&&D MJ=O!EH$1:&V\=2>GR[D0Q!1-!"0772&.C+(=?S;E;5!QS*&'Q*.JO#:*-J[( MJAF&CG;3O3EQBZ1R++7!)QH`AR$4JVFUT4:B.T,<F)RKP;UTH!)IRVK8?Y?! M;M9_EN88&3*Q*KI3DFJ;AN[/>ZGA@FC0W<*B#R%1-`Q&&($&I>_EJ0"OB4/K M%PA$8%$T'(8RT%7Z`ZJ/N`T-?D'*'=#`EJ+]J7%D2(C:`H*"-+C`>A]Y#/M^ M=H>)W$0-GP%8'LY%A@Z!P%UG.A,9%F4&#T['*5"1BE[X<B<6>`Z!M@$@C_HS M(Z^\87@-[$^.7F@P`L8L5:OB#AU&XX:/!($)/8#!A5;8'IC,I#;,FME#H!@# MZ5"1+1XS0QC2P`;;X0=DP7J#CO8'JKTI("!6F$CN<':6I>$+!"W@6PQ<`(.* M^%$&-E"(W*92$ASXL2)&2`-IR@)`RXT!!+@;GQL"LL<N'C(&AG3"&^Q`2),< M\B'<TQ3UEF@&G[2'#8!"01"0$,7X-8AO1N@.H)[2G4V!1C-O"@Q4WN*;N,RE M,6XJWFJF4[#W9&UI.N`;"""!@(4T!)02D4-`EHD`*+C@"542PAOP``(;P"`' :)9DF,R^2D8UTY",AJ4@.8A`#&-B`;QH`&@!` ` end END--cut here--cut here