'===========================================================================
' Subject: OPTIMIZING GRAPHICS ALGORITHM      Date: 03-23-99 (21:16)       
'  Author: Nigel Traves                       Code: QB, QBasic, PDS        
'  Origin: tarot@ihalliwell.freeserve.co.u  Packet: FAQS.ABC
'===========================================================================
' Optimizing your graphics algorithms
DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2
SUB V1:OPEN "O",1,"OPTIMISE.ZIP",4^6:Z&=6342:?STRING$(50,177);
U"%up()%9%'%[-%f,/DK:J%yK#6%%%2X%%%1%%%%tu%ynrn%xjSk7fvF$;,BU[tah
U"%[aDQLe5RCaH1Neba?eN'xAaZsuTOLDeAA>c,80mE17[I95to?,8-ws(EpV./l9
U"*z$OA*9.Cs\s44?ZPO]QXnt&hd'C/[6w]NP8^S,hW)H(7_Luo\IV:&,D1q#qGp=
U"td#VHvK\$'fh6>u0HhgK^Q[P-JLJk<cTi?w$LpJh6VHEj6]ufePUm[cckw%A_/h
U",1zFH5:BdeK9dY$eK%.oQ9P'6[pF4$Tjo99.SsL^4KmjnqL&B=ocx+e+90].;k&
U"i$GC;[U*q/t.'i]Y:TPd2'9'TA\uD4cLOOHI%<A1RR\)U8ozcn-N/*S+^XT;V$&
U"&C0wwW$T4;KXF+qM)J4&U'9(QI(Ba%\mtrfe+Sbr<c%P%%7pu$hiqx,bKGt=bzj
U"ih_'Ia0SX*2Cvs'SF=.iA>O)Z.9XT2:3,lIyQ,,ZP6ll-mC&b5qKZ*0YZ-Y[/Uz
U"ANOyb:mGpMSUM0r7l'ec;XlB8*$qS5lR1uFJD,JaRO:h>O/Ul'EXpXD)3AI8$*f
U"&2w/.F,J#5*tWqKx6%'lQwv:OpE7V$a]%4?GwblgZb9FXc(ZGO-48>lDk<XLw7K
U"mjOqQ2<?lf#6%5vF%=g;J;4G\>?&n%#==&6TQEDONSn&?UU+:q;Tb^>1V:8vLyG
U")4nWZ=$#k^LfdoQ;#t)KOK4m(Pv*)30]GzY/7%fEHPuO/t>X62H-$6IJga6U:gQ
U"76l+EW+dW]2'[)hQ-Y#W[Mk.Ti[H=XL(X-MNgWV;n==RkBhEYNVS(F+_4_<j*ul
U"6qSnipBn>GIuvggZXv5b;7X8x5+TK<jus[J[rp>'ws[79h2&NR<+4(dqpKF[cej
U"aJlog(A4RwDjj_GKL7BDX&N9WshKW[cIkXXi,ZLxOH]t?GG>Lz'F[$sCLgrZ\)h
U";4mVr25^[9CmH$huU$R]]g;4p5jrPIKEC_EeMSa$KRYHnFaXG2S5T>Tbg>\A8h'
U"X9?ZFm2XSt4G.FCN)Is6YZE]*VMOPK>Fs-ts_6ZmE;bw4P[kj[;Qj4D-v%(dF)e
U"Mp:hY0fV;eKf3<l+(V0Gb04boV2>qbQG1I98CW'&6&HdYr)Xrhaoohigb<A8$Pj
U":XCm2gfWbm7_Vn%epP#rV\(g4ka.P:bi31>V?v<]6.)+A_%(^*kYoMXb8wvhd80
U"YCy<J3WoYC6)Qt[eV^RdT>Rm:0V:3d)HY&1h;pN_yl'))*.^6066H-hYn#Km3>7
U"2b.xa,z^+<Vo>&RGBh;yZm:Lc^;MQI0tw?W?7,n%)*.'U>2lE&n(P^6dKdx4GyW
U"1]M\x0^?P0&jG^bRK,R.edqMM_=h+%H?*-91\:dz3KX,LANVpRRWO5)m3Yv^5%-
U";AkvAO5o2S+Jh<T4al:m$ixS\iJ_VJA*OM,Pne-l#SdeFOQ)cBm+Ck6#l1I0AXr
U"o;CVV+Qa1=49$^4EFCkfmX$YAB]qa*/Q\,gzCw1MRuhi<^TR5<*hz\^5R,%?HXJ
U"Bl1MK+y]4]F?2mK&&PA\kS01EaD2V7M-:Wns3BXe,)?c[.GHpDf[g/g8;D=-V-+
U"4Uek^>W*?%X:fo1pIeP,dTlQ5E.q)udQ::D43p0d8UQY1ie<_+[kn(8=QssmsM1
U"3wRyUq<ssHO/lhGqlffyXcRdp5*MK&sm3Iclg[xnb[Qw4*\mqNN7&R1D3lsB0Lo
U"Y70aQ3Q.)LA')s8-y&xjwAJ?ZXHoe%9$pw(dj'gq^jgS6j6LXt&V4>:by'8;*:0
U"a>A;/R_?.DQ?*\&dVP1DV[DkVTpk#=8:8??YbGsR54,5MG=TocN,_$Nf-#[fGB?
U"h5Y8r5/H.*NF7#S7Mnm.A:=2]U],^pEsWDhk?i-tpVOi%d?C>>rSuRjzCzc'JKq
U"JQOmb-8[+ou'P3'<*u:aEO/KNLo#q>lBJT]6,L'%1M.-'+(YB_8>JD:E2MF:568
U"W/DP(dd,#:p&?32nPBs[HSAT=-D$$1#N6n;21RECYX0/e&fH2YQM$FD')*?2ae$
U"1gc06%6gZ)^'^f4sJq,8ftaHnf;\Hkb%JG'.xam+(7%i-Cra0rXl[n+3ae5dkRt
U"$>9';W=E_^919;V]JhXy%[t7p?%vu.PdRQ'ME5'$57$F#]UN+X#7N9\oYm.O80;
U"#w>R3bi8JOCSW2dp,(1C(<%k0C.M08kirE]ovkj:E(r=5/f$BKL+%S(;LK;b6AC
U"'])kD/tgG4]b&+xDLQMcVpMC=>x3DaMJVn2TAAAy\qO1356Q9&JGEc8Xy8o'K\*
U",55wEfi\N$znAt/O[L'.xI]aeiK#gz[_TYw&]Jp\9Y/ta65[LLu%7'M^(ccswEL
U"i8<&;8R^V'kFu#qY-96T.cHY0&2wyFhutL&&aemaO)*9AvA/73bk-?#:qC-+1B(
U"w2pk2?e;M\ZA4G-c2BtnYJ4J3Gn'RLb]\V\EDK:usPx?lZd*u.PGjlaZ9ClWMiN
U"xVfIG?,o-9eX;l/:H],(C2ig5/v=U+hG<1ZsxE0+0rcqIoH/>k)xxQ1aG$B&p#A
U"rl_>j=f.tcjI8ZaM\R<oV*$nUT,b9WT&1hP2jcFztynaJ<W)t0#Z_avW3BqfU;c
U".DSy+'92cG8N2H=*nS\7KRr$7FH:lu3uO(%;V:;fqNTc'auST4K?6/GeI,:_\Qd
U",f:0gGbY:%F%BIewB9xVe$b^qyE[ml[c;iacJZqf7h4RKn2^w*tJYkARDf2jtHt
U"i;3\7DLF$(t,Q?/.6)=e9b*QFsPr]6r4vK$1(Gq]='**Hg2CxPJ\8E6A95Q*/i:
U"9QE&5FpdOo4emfD;4A;eIkn.hJO-M1lV)j<SEq\iON%BZo*krMk60pOI6)=pmf^
U"1<-'1lSrb/96#;P7\8$y/5%sL3N$mvbL-xji9Y'YkS[7(sM+&cYwB=e'>z:?ME8
U"j%PES$^qJs3D7.JVKrHc:Wkpa\PgZh$kLVv/o5:cOSL_(]_B*r\e.vIqs&#d6#;
U"opF?='ZM-p#:<*H.AqiK+ytBeL8LpEJ+&2<Jmtr#Y.)c_g:G2P'X0CK\367DVeW
U"W=]B&NZ_4O1N/V9<Q=Ys6/3xlOpZi715q7o1]V%oxIm0_xb29ltdgS<)WlZmEr=
U"?=3Z^MGPtHanB55BeVb7g#=A%k<?jE)PC&Q*6JXk&bz:MF%LOh[vP;?yZJ/JYYC
U"S&q^xNs'yefIxzLN.?7(FX<g..iz;a>6#HYlOPR?+xQpRm[]qY2yqfg:RBQ&XVD
U"=UVl=sIUumrU-3V%e5]*_%$%;2KhbU*_D\yY=$[SGH&M3]O4#%eH*d_m'i9NzGu
U"g#R]OYC?uf4#hA2Pa.b:EBOz\/0C)5yQ*L(C:<D\U0[V__kPPoPe3o-=da#KM[E
U"w-#]-J*PFHQ4o*kE(\+OzL*%2y.d;Pm\&B4/IJJY+6vUrwpJ'/0YbTKmgA4a)eU
U"kg$BSN-b<7kc*24V%yHCbslI2s_]+l^tA.Zi*K:Ik3DEn_,LYbla9\7I5UR$\]R
U"_BwmYbx8<[8INR%Zle^p#Y=t'IO(+x,rm7,1#J'qd&*H;S]k]Q_.4Z=Icz[;j:s
U"kMA4$7Ghs2&VCcwk0%qc4/sl,/VA'tZWUq/_(l)*mkts/,Q>q<-=r/B1omb/7WM
U"SiXXPuooCO#:0R^wEqUUo^OWL&-jg;0U3KcQpFwKjU5;)ptsKGs(Y[2+r9Dqx\A
U"O3Ra'JEJClBKIh_/SwcnOJP,da%Z52a4f<a'A(w,^'=02#X1PI7=/?s]Ht[/UhZ
U"B6RBNnhm\X?51K5xc<P$cqU4buCXSkbmS3\p(R+w#U#;\gv?%^L%$qi-:J^,w_Y
U"B$8bo_s,/-CU,'v<dgOqUhS>--l9N%eb]vJ9(ku._TWcH+=xY2Z'tA&u/Lx/W?v
U"a(m,15SKN&5V7.Rbb]jL9^uR5p%4JQ&4JUPk;'MuokKDA;>Aj[Q$6]Kie^?56X\
U"MLO.fe9?p4y[+%[$d%3i*d1<=9gPC$.W(QKRJm5/*%c&NAAdSfpI0;>f*,WF_Ua
U":Gtg'B5w7bt2pgL>2;$T#&ihY]f^9BZ_d0(aLg68c%8s?_K>N>k$K]W_tXc'w1:
U"c[ArVU*$oS2>8sx&=u''7aLnXzo0&7;s2CNMA5qbRY-GHDPretwE[)c#O]%k_2n
U"/cpGOE8x:v&xMF1I$?T$;48YlYxVI+d0HIEqN1c'f*[812Ir(a#\8Mj#I^2t-H<
U"t\DRjDu[Eo_FO^'^djC_7$21i6PWTyl3'>]H%=UpQ%]4?K#aqm]-MGQdcK>R;,?
U"Tn9deY&#Ek[Q7)<ka\3%QaWSYGr>r22'ZH/Q8k65kY_%bniDghsmkf?%0x8?6Cb
U"QV=qn2Gb\8j8NA6'gH4KqoiJT8Hvg[)Hbe&*,Y1^cA;fmx-rXa8h>d(soNvI,:D
U"QWD8Q$eR)Uv)<jexq<+<x>9ix$#wim^[l(vrc$E4nCl3VNPg-K]FU,Y_qL^Y7_R
U"mBzZ#8VDgsH\S(*E\2_qL-?Y#A(f=YqWpQ<1u;2mE0]=Y8,1L\[NRT=lnV<3Zn>
U"GK%N1_'h:U0#]B]MSd+]OS1+bivl;$2O[XOLS$J6u7cQ<Z18Z6NvbF**.oq9M=e
U"^I=]*cWD^Oqfz2.1?kf*;lt#laO#A,)pUL+8(dB;KgXJcL&d[FS>&HFlDFj\0-f
U"L=nJK\mfpB&uhcaYJ*sqBa.17_^8Y854m+:SRHcu+=AsuN<]rX^j^9zXUAh[H5g
U"Yz8Ia2IqtV#Bv,0SdpHUe5098VWk*+gvqn%6Bs\LaPocBs(j>aMc8N=NX]*6uK8
U"W6NjJW-=o*'NSf]CaMZkD>+\LLXMNd2Sf<,Kl*YK=1b>&uSLrvdDVQ[ExRu6i8*
U"wtHKq1^p8S<\8&,q$(-Dkg^R]0n1X)C1cb>&S0x1pCJz0]-D#G8UkCZ=-WnpEiu
U"wpv4U4^PFn^ec\XuLGl<&JcBmb\o2gu,64lIFpKEGSP5JH;)<qNtBdCAjYlG)mZ
U"f.t:]5:yRd\e?KvcmjQ4OHKJJ+o%(l%K%J-8:HY'hL$m*Qg]];]YU_YAtR.U,Yj
U"W\LKn])*(v#l^2;8j+p5n$R,I..x(j95mk2\\1uhj_/JVL9[^nNS_'j_E;ZkU*s
U"G5A]$ht(51$v[Uw]s1sJ9nOg2S.TY:RE&(_Vg6Zm^>F>)gLg+RmxcUD9#k=lOQ:
U"xEK#C\;)*4AscR)m?J]H\<bl^0Eu*^*guq+t:CKz[pmvo$'Vt(oA=n.p+Q4^yhE
U"Pj]''>kS%kMosq(_UnS7Vx*B>6;60S&R*Rg8EC6m.2?ZFkX&hd6Ck8l;J3#dX;1
U"F,kg\3fx(OS4]crQabpR2?t<6A?0>bfKnSn$LQSs%+TW54=Oo(C)*aPQQ2\'Y64
U"18Tk/5fg0#xV2YG]Qh]:Fh2HKcn\\3NOxbv9yXG(,)Y;,^fT1d]G,o6=][H;%h\
U"I\]#GMR2zuFF&IK=\mX#G%+>x;q:xhXhsIY.ah2E,:6-\5.I+,#GYXGm==B+Ne8
U"cV#1C2PNtnCZ/bkHfo.O4?Z/M]X?s+<a]]%BM>>S?ek<6S:QTPUOb*4g#otZSq;
U"B;Bw3pF4ZV^gBda1x:Y%sTzRmC$c'h,W>7$?q\Hlwkfx%(up(%)9%'#%-%O&w4J
U"L%fs?6#'%%A%2%%.%%%%i%twtx%SgfxW6&H>\jU97aHj4mfmS7B#?peb1[bam2x
U"#do%-GqZ1]q[h;swVmYqfHn7D)AO[L+Y;U&PX^lhl6tEj?=D\f&(wBo1seWuuT;
U"0,p0%76rX4285[Ei'mQ]?#o1<j4m2p,#E1=Wci'#R?U_PS4(9fQv(2aktiBtXLV
U"fD\\w(_Y/bSZUDcZ1_/1ga>RnF)FC+Z'ku'XY\B'4/I^'J;DmRwre?Pa[BvCxJ%
U"Q/pTM,2mb,bc_Dj)Yg8*CWH6>]iLp\[TLCI]TNBamW4rgi#)Lr;QPd[01od<KB9
U"?/1ISP-_Ns:+G#..ks(/xh:DKq37ID>#GTO7&(af<^6.Ml'RPLC;rf=M*1Y)X+N
U"6pY$>RRp0E*Z17^4*k%'sofbSE;A]j/._#W?',)A%oT>FEp/hI(ffAGR\V,2+P=
U",nokcB<KvT_sDy%i[1FZ:7F[7bx1a-o$gs[XWg;tevZiUAY0vB>H5N?+6n?b<V9
U"h[oYW6N>h7%K5e*q=lBf:G.g=cqRkzo0Qn:8%U?,X.oPHE^=qwjEWC^#;LSdo#[
U"jzzL<oy0$_py/SSM,/zh%yyRfwYE9sD0>xcHstso?LPjXDtOnY+Pxxlhvv9knoL
U"wN]Y,zDE,O,BVp[8b(hT0N%ZHr_mdYgS(nLm0nx0c?lAxn/ywiplpo[xLJFFN%&
U"up(%)9%'[%-%]%n5J%a<IjN['%%%%5%%-%%%%k%nqqS[gfxfh%<:[7e5wSTq,s8
U"68A<]ATIzY[u0['%Y58nIwSMcXX6CHq68fJlwtjR0VIj\&.GAAsMQeGda$h$;hh
U".8J5^2nY$YjmuQ8P4WnA,MqZRVkBttg6VnKJph)fSTF<hn;$4SdRW(fV6pl:0Ms
U"=lp0\6gH9=QYTIu9o^%]lfA(YudFU1u+0E_K1U-t)TFo]v:[pcTPzuFO05q-V+a
U"\7-nad%WWGb[HVq#^sO;P+8G1_)*MiB*i+#hTkJ)KN?+1+FPW*Iq\0WT\=N##JE
U">pU$'F.uWJImi^TV_iOZs_4d/>oVUiWBf^\R7=4e4P5Vr^DMg^YXo)PO1USY'*;
U"EXA%3rWo#=TqAWVn[B?_0ims:(5$w3H:U.6&GkX6'qqbD?G([4%SE.b'Ai<S3us
U"$)7+WI%004/OC%fjpJ'N(3&=J#U)YY(RQe&S)\rCT84uVLJhUOsJ_Ap]:bw,4;%
U"NS_zCIG0f&(Y=Yk[FJ7#Sr&(TMhER+wm7NKkI7p2))XuZ<B#&Ore(eP>K?,*RI7
U"x5;a2Id8LH8^9B_wcq=HXgC;VjpPw]^CTOwmRwn^369;s0*-ku>UK'wXPHJrQM$
U"fHp[=JOdh5$M/'__s6nAL(HWiP2SgjE';]BaE[?U,VU+n+9Qc<^O4FLkVsG:b]m
U"j\HEw?s#lS-:nyA7\/bWk2;,$9Rz8R^<to95r>8QBING4K-ka%PLE)YeHv#'$f8
U"v.1vt9s-u-PZsL\pVT:wOn%TIE#^bN?+='Lfm6wKfxap$[[aURO$<NaK1*&ciH/
U"mt7r8pZ&GW2LFDOu-Y#FsrB7DPbn&ta86D],Dh:^y6:x9v^^$l)7$Kcj9$6rRlt
U"xiDNAh=ZK7U;SVh.^Sg=aZ;eC.Mz-0MgN,?f,CRf]3H1kPb6_WI;fP71Bmd?7oZ
U"vw>?83s0%up()%9%'%[-%f-JDKoo(XAV&7%%g&%%%/%%%%wj%firj.Sy'yS4u4=
U"]dU1V+2q,_2#;P0g<8vEEpueeL1<MOQ/agwdG_s]g[N.C)<O'<'IgBC,m#c&5U9
U"hJ7f;A8+f]i5#9d]l:et]_]$.X)#fV/DD$2QeL:BTwS<k5O_n_^lnh2d64d)V.%
U"<'sh4Q:H-)Rc^79A-[Y;Tb[a3j/<X&z8XT\3\rdQY>4ygOQ$l9#_WA&0/5il>OT
U"MC[kWl?u_9_H=x7Cj%x=TFbO9=X<v>bsM$bUL[P<_tTM*wrci,C1m5qdWEy1iJ(
U"uH\q'RMC.Q$U?3Su&WIo8mN0bCLhXw5'enIAWPa'P_8,:n$??UrawiwntO^Fp1-
U"AUN6>tx%[B94U)pdfJgr;bq:bnFSno<pD0$Z9_bp;:j/^GC#3mmD\TfN/]FF&.u
U"p&%'9%9%%'%-R%f,D(K:Jy%K#6%%%2X%%%1%%%%%%%%%&%E%%%%%%%%%t%uynr%
U"nxjS%kfvu%p&'9%%9%'#%-%O&w4JL%fs?6#'%%A%2%%.%%%%%%%%%&%%E%%%%j6
U"%%%itw%txSg%fxup%&'9%%9%'%7-%]n%5J%<9IjN'7%%%5%%%-%%%%%%%%%&%%E
U"%%%&L8%%%knqq%Sgfx%up&'%9%9%%'%-%4f-DKDooXA%V&%%'g&%%%/%%%%%%%%
U"%&%E%.%%G;%%%wj%firj.Sy'y%up*+%%%%%%)%)%'X%%%'J<%%%%%
END SUB
CLOSE:IF S=110AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!
SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32
IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1
S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUB
