'=========================================================================== ' Subject: PHONG SHADED BUMP MAPPER Date: 06-23-99 (15:22) ' Author: Daniel Davies Code: QB, QBasic, PDS ' Origin: ia53@rapid.co.uk Packet: GRAPHICS.ABC '=========================================================================== ' A Phong Shaded Bump Mapper DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2 SUB V1:OPEN "O",1,"BUMP.ZIP",4^6:Z&=11364:?STRING$(50,177); U"%up()%9%'%#-%qI'PK5]2s_O%.%%d%%%%/%%%%wj%firj.Sy'y+rEb/%'V5e0Zc U"_$:qxF)g6Z'BE'oEe1C/+hFAUrUou=ooi'T/nqi^PN+nYoGIAa?OA]W4)*V6]wA U"/\SHQ,D)80Nlh83t6Pz<8UT*=[OSD4$ZnaJfGJ2h):',%p>8.RdU1QNn4gEb*&K U"[-*=jvs??hnFE]N35[BN%%up()%9%'%R-%pEKNKXb.T:gG.%%sM%%%-%%%%gz%r U"uSwCf&bI_HCANYlgXh%XnE5gT'a._(*Tcjr6Fnk%V,N%&MYG2+&Pyp]1aP/U?Ypra/=< U"Ek+Z+.s^P%_&qc$n_'<[CG1IM3dW^5/'2bswaPZ1o=4j]+0Cfb+;tgHulT)q,CdZ%AhpLn+va:tW U">7eho>*K4(p?0AljVDh'YpN9?\+T'JvxlCE;6(5D8_P\O7p/;98[0cU\+HL:KwM U"4q#PV'TLP\7W6oER[OOF6Dygd3L808n.*f_nbY;D:KC.7Eva%]>D1sh7b)=[>C? U"ZMYcg+5u*G8VtI6cL/'DAehw6/p^k)JM5R%r%wN:/&hyWF0P6=[&hT;W%v)XFC9 U"WIA6mNmE:#X)&LLpfZDGrH2)KXwtcI)g8Yb9=rlvV,V'vHGAFxdn.Ca.St(>jsO U"F9CUZ0L,*rM*#l)(SdmKDsA:UTT(j+W2%(d9,V82E7*'J4(*#fa%[vOa4XRZb\e U">_FoMkZ'FBepN:dQpDml$EnE4kf2SX?)6[RKOOidtKIStQ(*6;IA?mQF_&dyQ7I U"n:g$DCVXt9Sq,^/,P4FFlE_'bu?m3Dg'Wd5[*-o.T<[3(3]/:g+aUn/ThM?J&.U U"Ju4gRNaXA43.Bs.M8mq+S;bkHBf^mCo&/a>4jheCC(.$m1;h5plllNhRQ2R5re% U"Ss;.c,4Vqh04Q/3[fpB#>\p2$?V,eU]1.QRg0q$jGIa6-9n2?npo22[Wav_U0H* U"G'Qhw>T5*F:s4LvCdoMsG1*q2eu(XBu?u;;TUq6)RN:+XXmI$ET2a:'*/' U"S:4Wjo(S&/#U1+V0LC-6UmB^=-]^ggKhW#';co\+FY14)?3Ktp U"Q&A?C(E8c&u9[DdgwwHNh*)g'&(kFbnDI\'Jm]70Hq%#J\O;piXufjUlUo[ii4I U"C+DF;KhBxWX%f?V*m);/5$RgO_RwV?X1h][1C1?:S%dzQ<[7&$'#zN99c6N8GLy U"5fe-pF\OE>K[j*F4$t,=+Wb90UXMY6;)0t1gAi(->'HQUZ;8nywE?=>(Lkhg\I6 U"NW7-gMn:cB*jOrP[>DBelb$y%+q'wPMtQOq;%:m;NQP+tu2)1I$%d/2dqKbF9^0 U">w02w:S%QTTZ%vV#:F'GM3Z*?[1NLtIr,-BLHg13yTOnTrc1pu9:QF U"eHbL,+.Rwb;Ey,:1\dUrE/*t9Qi/]NNgPoDcZ*'IqKjnL)_92M=#HH$X;NZ#HV. U">DCcL%I(my'hnl:O)YhiYI7.V(X+.3tu^^^r/9[3xTl,3FZee^8NaG4=37$6&1* U"I_2*s4I;^t5LZ3p%zx6^B+K+*DNqR;PLJL&t([E3?^NMCGC+,5),8STO%JbM3wA U";saiI.u-(%M(-ihn[_.;mfeb\P0'3<50*(-QL1->GqU&UF.qam#e]zg)i=[#&dg U"OCS\k\XY3/Ugh.)gGN,Elg%XYYOCuiv(-N$;vMqc0FLFIOd+m=_MWFAKZpt[ogu U"SN##q+x?[^wBWeOUb\Sj(ScX+n[+XIBqdjhZZBn^gQ2q05cNUI'6glN&4R%3./3 U"5n9*,sH\ro21;pCWUJbD4TLN9P%%STYCPhExo[4omF1i$:h(gP.Ag1]C%5;o32b U"Y4_,J1]0?hOl6dTr(&1[VfrLr%:t5sHqA%D>?>Af#B;GI+w>QGhlj)xd&JPlbos U"s7n_eTeq&c)P4pka,s+#:ZC-Y9LiJ\U#/S]G#e%U4sho?f-DD[1j U"7RPA&%zDoEobk5U1pQ+IF(5nV1'6/OhMYvDJ0>CW1ie4E7qdt#8KJ:Z9t&KgIeX U"i(Ii:NvTrs8?QLrD80L'HkHF38ju6LPV1x/CKbP+yIwe4cQ?qCN&#<*w?Q'o7E*4:KPmTKf7uyK0Z;aI(.b&xdojQjM#p'y]Ie\+A'Qeo?cmTpV_HI[f$PCpB45IK=H(1y.&t^D^k.eG/k.X&I..9(.IB U"L=._7t)=mr&_CKY6/Oe=wn$cuU5*ojoCOT,K*g(-NV7YKagaDp?4U:ZVV4VCi)# U"o^e6=ZioFDn2BsI'JM01lQ*J$00Y.Xo%tu5?&loKxDgRYWpYG::\)Z/\uK^&.l^ U"epp:c>0\J-r/)6UW80\lKwB%ka;^DFo#WMG'1?1W$_xmTC_hcbfB[BD2IWdHB3L U"oICYI#bAZ*H%Fy(+LA'AptL$Whkbse<:RHrs7?q(=\SdtmsB2S>90(BLGdU7kx* U"?h*<^A)5g29K53#ShKV$FENnBdSLdiYI-FKvVF8jGubT.,Dz>9es7G]L:1t[PmIG-hSoLFI)TWX-=EV6hW\XL.M;<_+MMBgY&)fuOr<#4ceo=qcXpZuN&O?KjlfeNp%b=MR7w6 U"q&&X)%uh*x8bu?s'6)o',wCk$&;;efhi2FX.Elkc?lR.0j\wKu0:N7[p0z&OShG U"6Cq8:vBMA98D'\t#2AZM'_P*MR4zYhVJ+] U"2W>pngz1Bm'>hjDHk9](FH]aaaC:Btr82kW;L#=\+_w&F9Lp:?fO2NcH:P&9dtN U"0U,%PNu/7ovqZjx$?lOrK/xtnaf8TKiqAJlVpl5d2hOH11;6&p%#I97Y$>1Sg+H U".)*N&Q0(??$+h3_Qg9jp]9&unW,8qjNks$n>t^B+.e89(YR,B''o2uk7..V6&Pm U"W4?v&s\/O_h7qCsS3g0GttV3mG7&=Fb9#F:%esOqA]eIh.kB$W(5E\(J[#^U_hO U",=(A=YgJ&\jurG-rZWj\xMYxE+pu>lfo3rLxlWO*P]oO/p&T&c4Iun^nlWH,QG- U"6_3ctC^kZYJXSO6.U.oF,&O-,.Pbb+h\/Hs-RG$[(.79%7.E?p5qI%s>8Pf8E^f U"9n(b0jWj5tN#b#'j%W,Mb59r_Xsh<#L5kX;CcnTciCt1*a)xq_TL68znM3k.u.nbC70cF9Go%Dl^*cdxu U"%+-/N/F5tZ.jcrQ$7'l[0iD1I'=nNtC^=0Aynu&IOV>3%5Z4J5uPR*$;C_6o:m2 U"RgqMA+IuMqv7a*6:VS4I,YKn,\^0Na*3kfBZ\,*u'qNJr2=4/'bLAk*,h*g*RN3 U"Ao#2E:D[;gG]ObO%bx3=p97*q%bFr]#?13Ayhq1kl)Fh&wOk//N7>hbWflEYQK0 U"^bTI\lkUJbN[qRkO_pfnR*O$*ofdvmVNkW;JlPi9^P:pL?8xmqRc0&HL[cMCu6V U"wq-rrwK(?orOUVnDP+K''Oe#^x$:a U"HTQh-uniGux_&o?xvLlYjfOxr1q1+f/dDar.n#+q6=w'F;FB(>>0'cSa3t,j9'h U"YJ^2^[j.]IC3DQJ*&V+w#Xu;b10&vnO2sr[DqX)iFLE*kcpNNcLqflscNC.-5Bv U"ld;2FmjdT0.+6S&4=bhdk6rQ[^V2Zjc8KZM7nEoL2u&jzDoT.33]-GoeHh$[3K[ U"B*?Y9CZupQUqj'&,AjE=Lu?'9pB=.T<:Y$t_>,]sN,d^MIxGlZ1L=De&M#D#IrB U"NL[VB4IZepxCc/BIhLbMzLBvvlqq?B\kUPX:l,J[TdP%Eu'qfBg U"PK8MVap4+USA)NOGFEt]KK:]67D//i1&?LOm^hRWoOED^4Fve08TYC.gW,v(66p U"9gul'J8*0ipvsnlarC\c&H6QJCP6NWG/2udVj U"_C;\g.]*^5EL^O8b0,Np%Dt^>[b=Id/?RfkLmFm.vYGw#+E?pmo4/B*oj%iOWy; U"g,ga.X^UK_?rCUV;6moG&Di+ZY)WPRsjbCY)&G/.YEx/7b#Fn#1/6^RLw[][eYC U"o9L;6+%)Kf71]'8FDF3-9/$09lS]6:Kol[A7,)Clf6b\=S8;HF0DZ,tLK1&)INn&VT=g4BIwv-A^O25uN9VLqraXc#2A7)'u[uZwem< U">_^R'C0iCC(/7$1)slyG.xMdoLyy_G%k8-Hka-)&1I0P7)U;)%=0^5rU7M0ll9. U"oNBI)huEKhmjJ\YytCg$9c\-EzTJF#3>a^_KmqgP)b$MA.5#R5o_')XG>C+.tOP U"e)R;K-HLS&U07^D5#VX/;Fn&/FthfjXBpG%lv.?&;cMfAnzLf7OfpLJv;>RCQ%x U"Mb'+?s.%w^aBM:iI450c2/MVKdeO]+g.3.'r:ep\'bxG;CWO5$uZDAP1)9dwKa; U"k^14YXmg3At^xY^_#Ret&/jpWfy U"$2+&A>RKQk)t_%zEg^gp]r6o>fXMShYTP\IHO%h(q-:QtL+MZh_9H%0X6hpa?\h U"7CuLLfbV,NY[:ltXcUeFyKhO:T3lXUB_29%SC3g.)f#xec6S0T>-+JpGHs(Gvl? U"4Qi>f6:GMUeK3';I;E8hyL%y&zQ012tS(yG/#*2OtbbbA U";p[d;,b&Bh*N*\nqjQ.UuL=kGW9+_JhuIG2.[3PN,4+)R=YW59.k5 U"V'9V)CycuHvpXvYM=9e2j,;WC:TEgd.$GFnK&1?Y8,t1N>hTH6iISG1wkhhb-N; U"tr^6&.fBbu0Z0S&d/aiwW<25W)?JIW_/NU(_?iiZlLDLGNtPnJg(qxaZIXdb->) U"VS_,d?Qc+$^.W6JcCZ9$+(>]FTQH^bf>x*&$&Fab;BOkC: U"HcAZV]V(DZ1dk$o?\O0k)i;u(c>[zuGWO>n>B4Ib9&Z%sxh7.Wete\L:oOu=$sY U"#oP[0/,=w[h63\4MDl5SOmp'r?WuK,k]i9tWZ5jbXEs^d8-.0sKN]/*1i(=;wX< U"IPdr#572kMdrDODU9,sb])Mn%['&P,T;,QxBJjf&0Zwur.HWjbYrctzfoSVkN_\ U">\O&#Q$(m7cIWm'^_,T?%bK^B3B&uoZR),GYAf4zaLoDxi]R\O3Rq-RfPROs-w> U"2eqHK_BnzDwYr:2PTX#(^wYhNn>WfLc)YJ\q^2=;,dJi$?p?.jg&eN(pe.rcHB6 U"mXF4jcrKV7D-#X_(sFE>gBFKjwBwXn-arWEvNa#ErK(TrL(PaM($$uPOo>L3Ru'bHogd'O$,DQ3M9><5Jh71g(k(pFAdV,R U"roX(D0h1ecJ9r#]k]L1&w?PJoAI>GYKn*h/2\=a U"?t=j2G'DIBZ]S.6,]50du8s=rY%dk$[lTheR[eNQ)g-goQlMiq.>vaW?VXnTDWr.uXua2Tc&-esHp6,tHdSsm+I;6Z U"'BX>QU3Mx6wx3I4:pm,S:toHawm*0ncWGbc]A2p'pLL_rK U"YQ+_MJ;5.by>:dctssX3whlthkN\&)j>&wlL;o$'CPM)rTk*&jxO6?Y6Y>d[jZ8 U"FH-=esrU/)pJ89-$e=pg(xjbXd\'(DN].dJ6\wIJgC,I$t%t?Jrt0X'6wT4MuYO2RtL)Q4w3meD=45abv(<)+NE5li383u23/5uiG?sN*2_mfHCGcQE$nN>?j[2,soSBA+ U"+^M\HnP[8^2o^4s-)BXd0<)f$n2dud=umA U"&TbIKmC&>K(<\kHcYoAFu.lpNr7Lk=sx#'X=_lM(pTMUskNrj6*o&xrkWh=/*>6d.\G=.dI-w4uYNP]3rd U"&,i&ZneShNBsb$SO0OAuwwkKNJrV.?uq\k;1>$4%-otb.k=UrBx_eT\5qdT#t0)NhVsTrP=/GFyRL>K-c.HTft)>bV,v?(h U"8jHo6$0$ol^aLU3*v^B(T96bepdois./.Wx1c-+pHNu0rL8xNRX U"QI4:vH_>t*S6L^g:X%%\m3h%HpFcpuWPZ5b#0m#cxq<\*Y[_/^M U"6&+-oLkbFC]>7e*IBb)Nc7PTEKr0_rFgG'Cz7f<'I9m=Q;>5z]lmIU>NmbHWtYN9oGZ/\o'$g5Elz$3,5C U"Q7hopYDpDzHFU9R*3'=FACW^ZF0/Ur3#p4L\j/R,]a8+p+CAjn0II6Lg74YeVsO U"E]]#0qGxqOO[#GC7lRgGxW;>jp.+=ppy24Z0Xrdr(K^D;F;dCEYWKsG/]1sf<29 U"Cgj//:Fk2g?,/wmOG&%Y5l$$6d9>I\IA_i%lW[4;_C.I>>Z)((Nh?7w8YJ#/lov U"'E?9wh0tXt?vctUX0vh:FKnt]4gb3$Wd?h?,oEGPi($+]dWN()kVU,b1H=gr5AY U"2W5iX*.1WmBULG%Pl''mVTV$7Ef#BFW[bEWs^WNIO+B7.>Fpg&?'Ea-B)&/E6)0N U"mgoUA>k;Ay]13\]pI&JWCMq^XQ$Yx9L(Fv.xJ:..10K:YjI'[lGM3oN?#qE;]kC U"XD$uPgg[6bvbpB0v;y&hsh?]WXYC>f\YpMB#feuTLVL[LWX2DA]FsN/.Qb3m$2Kj8#Yu3L)7l/V/&pWqkYx/bUPaGS&8 U"qUa=QM2W-,xUyW^CQ6I,fX]OUQ;S[m^Z5-wW6>WB5l#W0]8JZTP4UE>)00Ry.#U028I_YcC$a(Fv*xB9CMlh U"P?cnHRF+rkToV\5#?8wLn4)Y-rx3Fhn[UIL.)OXaIlx,nl8'%14fAl\T=BBH^\C U"rnGtP'DM]q>u*a^\<\O\=J,rw[*BlNcCriA]d%x\#2LX8:u[1?.cr:kIlgI U"C'>eI*f\qO61[oz-X?)do&cAcK4Ak_?KZ5_6BpEt]5rj8KSlr#QjCS]_.q19u?a U"A.yPiE6b7v[al2vKX105(m>NP0Ib;dEQ$%L(87nx'u5Y-(L8GDiTR^vtwd#-<8\ U"oqn^ao'$xr>]f4^eA8C08?]E+TU[;;(K848jr$OhK+>Ce.;,x%dtYmC0_0TQR5_ U"55mFMS^/qNZ6KVbOO5rBPknzlWW81fPTFUKif/TLbNDFF^cCF3(HHdfU: U"uvJ=U-/0KDt)Nq7ZU:Ep81J)d3EYaCtB./V-ca/'VB['iP:_h(;XJW.J?pu#[#j U"XK2H21IbB[C=uwbpk.7:P,WEm^574RK4errp+Vwi.+Q^qJO8jJ+2=^n.al\nAm* U"-LE71-[)GhNUy9LBbZl2)Dy-$8u.45a'%BBeX.r U"u#%F_N'XdhlH]VSfxKGBLKO2^#bp?MhVtFUjnOCAKlLf^j?%qVF7LP[]GB&XEy* U"?,;Hj_mT[tTQ=,?^bR*jy0(OUriFcX(&>QJUxlBFT2+P'q>+yht7/#0/SW)'f)O U"#6R6BLCG+^iFZcUtJ+GewXQWTKB/y/('.O2]'mmG6X0,Z3\pV4eW)'HUpA56:V1 U"B281P]eGoY0IY[,rKQRU_;$p3FfU[bOXS2olyi/2hRhP2\1hCgpwxK]/cbd?Ogh U"Lq%i8Df-Oa)1s\')YS2WE*+2lAU&/21\1)H_8V9L)rw-)eq.4$'+1i5pn&a9\RH U"g.;TEKuSe8iQ/'O&M1:Ah9(_RyOiP)R2U+Kk;gc/akO]\ArdX9V.CU;a&tlT05_ U">=O>MdU'.?/;a2X-SB#iG[HD%7[Be>BfI%lT1AXiWd U"7PrN#3nx1;_M$2h/CeX=?NBfnsCbm,*i-Y%&IN5-bqtUjq'Sj4CBc*\-YI&Mf30 U"uNeDof)Uw%;wPmYrzd''xC&/4i7$b;Cs_+tyA;s/t_XxiG0dLD\l3IfiNhfn\?P U"ra-[U_eBf6C^1c%84H=Jwxjl)u<9n,Q.jh7dYMi>B6JbWvLvJ.]gxwUlIj.U^S$^EJgQ*lh,'S3%k\p5d&]kI&PbC\:_ U"l*w7%mZ?gNNs8>:$oBi4IV1('XAXMF5Zt*B1[CKk^l=+URC#o';X7o?JP[DlpL\ U"7WQO6$'1Y=q'-cIb=$EV-\n,=hUPn6q=vD\lnI_YXH40LinzFWQ.6JWCLiu7(q] U"eYYdF^=EH$qS-F^fl#.w&fB<:qw[2;Pq;0j<#&YF6s0\o0l72TGfn^/s6)-'*UI U"T#Ue>Z_E5r,OD%I62FLlfD.2u\G43MUG1h1w:u$V#\,o'b2=+3VYq_Ch(.33))6 U"gquj+4F'Jq0%W#j<;ou_][m7w5]=NMFf+ee#]+KhQBe U"3DCI#-i]52U05ht?wn2?i>G>+rW?pPXx-V/V^na>b%XM14ztm'0'VyE\K3^TCP? U";Ij'>kIg;65qW(V%tlS]]gPKA8]j#)E8$9fWidFg*5M8;)JgT<1$c%+P')I. U"dt/XsBKXKB35a:AnPGF/OcTOv)WSL<2(1B]o&]bTlQBDb3lA'_Ie0,Kkw/)tn]P U"M^Hw:Ai?V)KrVXSXcGRinEO*(_;h:]dQ]S.m3RR>b+2OSKb U"&?VG&PF2h+JKFsj9k^.%.f;3JUE#YnbqJG6l8h+O)Dm:xjZe6HhRpCp*5ob^Tkio-dOX U"V(^=8)vGYJpx2uh6B'[&w+a/7%br2+oeLqxWh#Kv[G)R+sZ(%FDB7;kJ1>uxG\? U"i&Ga((GDLy/if8pUB=]5TsgWa>72;?W(;]\Z>/\2e;lPd_=+oAIRA6p9lGV2+q0 U")x%med\pPEY][=nVDmW:G;%pgAp(Y^'T1t-h[umgLYfBF\8D\iq?PoAM U"&FuC*\=0ZSPR\)LU]z<4SD%khE#V>d$ U"qg[:j4V8P08[-989VBr&.>Zc)ng-+ U"=QHJ8Ph+9]aK)>;p3HjVi^R?R'y:6;8YNJI[wj#[\J^ROk;XD.Bu1,M:gx2=?]a U";&6REC:;&w19fw;7:O6GBLJUo3[*D$;NNd+h4^Wpbom;w;AdO+\r\^_#iLb-p$1 U"mr#c($61#-TzFo8tamf]xjE'Pny6dEGhpr[MUMs#-aX(uOR U"'eE$?qZ[e]5L+8k6obLWo=Zov;b^6/\;Ji*'-MTRi/eu^qt87=GZS'v2P,LLY\fb\z.0oOY]:_22uS8nE5O6P;SH U"<,XbUf%5z8d]Z2OL<*=TMShz5dr>=B\DOZ)A?K4dL#rw[)eOC%1pAz[6,U U"^LtiEXW>p487'6VQ]I<3h4csG+Tuw=InV3;DrzHJT5(U\2df5+EX4R'^ca+W<*e0$$l[eF.6 U"7nV;\gAVo;O^\)Hx59=xP0eLr5C2U?-*b$3K*w^8zr'^9Z(P4;d&(efMcNH9fpw U"#iDs]V'rpSSg-R:kW.jPM#OhD>dB?82\CWWL.M'ezP\cpp4muPni?IGZ.z(VXQL U"X.7/>fn?&1%Kp?.l'>(F7jMxZi5k+LpL+K3Fmn47]aLy44?n>R+?nL;ZNwA6?8\ U"E4qw%(Pq\I6o.,LnHk9kmaLubIzsE=>f)0+Pktj0k0tUFed7t34]bNf(=OSGnNt U"]QI7'pzg>uq[?c=PLw<%up()%9%'%#-%qI'PK5]2s_O%.%%d%%%%0%%%%kn.qj. U"n%iSin8)rEb%/'V5FeZc_d$qxFI)6Z'6B'oEJeC/+7hAUrbUu=oQo'T/ini^P9N U"nYo#GAa?)O]W45)V6](w/\SYH,D)G8NlhO8t6Pjz8UTm*[OSRD$ZnCafGJM2):' U"',p>8[.dU1PQn4g;E*&K?[*=jmv??h9nE]NV3[BN%%up&%'9%9%%'%-d%qIP#K5 U"]s)_O%%(%d%%%%/%%%%%%%%%&%E%%%%%%%%%w%jfir#jSy'%yup&%'9%9%%'%-j U"%pEN1KXbT(:gG%(%sM%%%-%%%%%%%%%&%E#%%%w%%%%g%zruS.wf&u%p&'9%%9% U"'#%-%w,HPKa3%?ea%,%%\%6%%-%%%%%%%%%&%%E%%(%5H%%%gzr%uSgf%xup&%' U"9%9%%'%-d%qIP#K5]s)_O%%(%d%%%%0%%%%%%%%%&%E[%%%A%O%%k#nqj.%niSi U"(n)up%*+%%%%%)%7)%V%.%%#P%%%%% END SUB V2 CLOSE:IF S=164AND 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