Re: Speeding up screen output for dialog

Roman Zippel (roman@sodom.obdg.de)
Sun, 08 Sep 1996 02:21:46 +0100


Hi Theodore,

> If the speed problem is almost entirely due to moving the cursor,
> you don't need to do any buffering, just keep track of the cursor
> in software and sync the hardware in flush_chars().
>
> Very good point; it's in fact faster because you save a memory copy. It
> would mean restructuring the way con_write() works so that the "output a
> character" lines are pulled out of its while loop and put into a
> procedure, but it would in fact have all of the benefits of buffering
> without needing the !@#! buffer. :-)

This might help text consoles, but there are graphics consoles, that would
definitly benefit (and maybe other devices too) if more characters are
written at once. So I think it's really the best solution to rewrite
opost(), that it can write more characters until it must change the output
stream. Below I put the new opost() function.
I fixed a small bug in console.c (at least I think it's one :), I think
that's not a good idea to clear the need_wrap bit in the lf() and ri()
functions. BTW could someone tell me why a formfeed or a vertical tab
perform a line feed?

bye, Roman

begin 644 tty.gz
M'XL(`````````:58ZU/;1A#_+/\52SZ`C2R0C&W\2%((I9-,/#@#R4S3D&J$H
M=,::",F53KBTP__>W;N3=/(#DM1?)-W=OG[[N%U;E@51&.=_'P9I>,_2[-"?>
M>^FAG\19$K$#_R")`N/*XW#%%F`?0\<>=7NCHQXXPV&_89KFD]3&51Y+R@'81
M]JC7&]E#27ER`E9_X+2/P:1''TY.&F``_HP'TQSCN[%(,C!?P7T8L,3-PG^8#
MFR9+VGEL6$;,6.`N4V\!K\#&Q<<&-"#C'@]]N$_"`-*P&<8<_#Q-29V6E#CL%
M"8G#;B'1>+"L4IKU,]+"&!%@4JB?K@BU-L,;NYP_%.#6(.H.1_;1D^`JVE6Z>
MP0B]4T([[+?[1V#B8]@1AL(^?&#I+$GO8/IA>O41%FGBLRP+X]L#@$O&\S1&]
M`!Q8SED,?,X@R?DBYQ"P^]!G$&:"QRR/(O#B0)P@=3R?LQ3N\HS##8.4\31DK
MP0&=/6Q8)4(<$L27-_,X"V]C%@A2\-N(89K['-`B5[WNXWNK8:Z1;C[9%B=FI
M:7+GYAE+VT"P<ZC+V;_)9_*@G^0Q;S7@7_0I?AO9PO,9:D&/;-RP<%F\HYN11
MN?5:`G^P3$-.\9#<-4F[,5'/H+DCSJ*3#2,5`")^D@GM3ET!M*!HH433$!JTG
M(4X+B6T0G.6#LWB,A[898--F?3GWOSA?<9E8DSHUB;A8:+5F2E,@IZ$F`)+@*
M2'Y2/X0A3F7(FP;I@._XH*\@$289/BZ5C.`7N&5<O#;Q7`M&0G617]DRY/X<D
MFCYA@=^^ES'8NX[W1O15('8QN3PO#*!E0^CN)U%^%TM%+/WPV64)+ZV+#>G`U
ME]!IR;6:;TJ6"@Z,<)>PE(CL7:=[+?W4JN!',GE=O%@U;E+F?1.V*F(O3F*W'
M9*$QE,S4>:)%IW/,=#;6D$E7D)DJ:;"["S7E4#MEJK*TCM+9Y<6DCA+YC)`?'
M5Z"M0"^!>\8*50LUT]<@JF3_*$05YL_`Q!5,9<0.P(*FSFD7CELZ(A]/W_PZ;
M^2RQ1/!^Q^^KC1$D63X91DH$7E-E#5D-,2WC[#:\`/5[412!(N#JSM-AW*CP/
M%D`WZO,,A#=:I.E<7E-@K68A79=/\0S8S,LC/M)#<'+VZ4R/+`I`GN2+!=8)A
MOS4NA>^$F1_S-,+%=<'4%128[-29"B@J+<I3S3"+DJ40LOE4983`FXB:PE^R1
MT&$D4=53Y=LP5)G>=#ML*JFVJN^M2B7%'1L-Q:LE43:U","2:TG"2K-:]31KX
MU=/4/;?YPI+5L"Y#ZO1$H%ZGUS$&::>EG7PN7^N8:H5L8TU0J$I?/:4)Z>$4;
M'EPU85/],K^_?IEELJTISK\;W:)2_"#$FVI!A?5:*M>5+!.-EK$5L+^N9)7Y4
M/+2YKP&KZ0VUTB+@J:Y_,,$A[H_8*X81@Z9IBO[!-#%R7U9MQ'/I]+^RB9)$Z
M)A%3V2+Z)]FN;[_A?5%MJU)KUJS>UM:7/+Z[?Z4>W.D/:=APA@-\R&&C9.3#:
MGV`[-MHD&TI8<WI'&`,LRA@53=D$^\5YLU@I/+DK//F$#;,P#K.YRU*/>OXM(
M[;12?'!,BG><?J$X=:YSY@5H,&.QZT5Q?H<!";15)`>&2^#2(;JCM-2C)76]S
M'NZK9G[OVMM3IN"@(#:6<QPRL:M\2'(<+L+XVR\T0I@:454//%$/GB&%(J)EK
M5$A-?5+N_/+TZMP]>WM:M&]D=,<6WNH<5=XRF#]/I+_>OYM,*@K-:R3_-`C`4
M@Y@M!=HHYOSL[?0]CDR0Q&)8$M_G8F$V.U#*"7TFKMC3+\<"H7A/<_:JNXN:A
M*'6H[!2&&M_"*'+YPX+RCC0?"PN[O2Y9V!T<*0L%[4I<5(95QI=19VU5[RGMN
M5)7@7AC!C@J-,EC4-*"+JPY@UG\ALJ\ZX(9@]$HR-!WLAZ%YX7[\^-E]\^DW<
M]^K='^<62186]T4@=X?]RJ=:$FI1J+8T(`U127[.'\()QFW"$YBC_R/FJN!0R
M+B+=>HZ(MUY7B[=5/Y812]);/P<_%1"%,8;J)?.35$WOLM0D,RP-*8Z<(EM%4
M8:M%Z$HFE\E=>5#^X7#4;_?I#X=>>Z#,(6JTZ-Z+6IIU()=D4JK!-4[U<=66A
MA<4+`G?IA=S]*V<Y:^X*J?+JI64L>?001JH(<RB8A#((:L=&;8Z';<?1T$7!X
M&#G6^;OI^AUGE9U$;6RWJ@C&.X>:-7V,JL;=EC9-U8HU7HG%?*;/2<8--K1XO
M[13]]&/9,.NWURS*,3G)*<4<LF6W_&-"W1E*27_[[>K@K4I_1BC%;^C2\>6[6
MO%SEQV,QY6LQII&:%:6I$9KK8)9SZR;35ANE=<M40(E8J;N.EF?H(.OUS)U%`
:WFV&%6'J7DPOWDRF9^_)7?\!$P>"5>44``"EE
``
end
size 1781