IMD 1.18: 21/07/2019 13:58:55   'Ȏ3ҎҼ|`؎3ҋrir.>|t.d}.|Q *V33.6d}ƴr-^Y.)6|t.&e}űQ.;6||.6|`g}2.$t V^3r3Ȏؿ & &M G} u } uþ} Non-System disk or disk error Replace and strike any key when ready  Disk Boot failure Microsoft,Inc ibmbio com0ibmdos com0w/~u ~;uv/]O`  `! #@%`')+-/1 O5`79;?A C@E`GIKMOQ S@U`W[]_a c@e`gikmoqOu`wy{O`  `! #@%`')+-/1 O5`79;?A C@E`GIKMOQ S@U`W[]_a c@e`gikmoqOu`wy{CDTWO BAT nCDMINDSTBLD ABASRUN EXE `|CAD EXE 3'CPPLOT EXE ({=pSCALETWOBAT nYCPSCALE EXE 9fZ\TRANSTWOBAT +nrCPTRANS EXE es&CP DBU N}SETINT EXE |RESETINTEXE |  SETINT CAD RESETINTN MAIN GOTO 80,80,80,80,80,80,2730,2640,80,2900,80,80,80,80,80,80:GOTO 80 BUT=N0:GOSUB 300:IF K$="" AND (PDN=N0 OR TABLETSTOP=N1) THEN COORD=COORD+N1:IF COORD>CUPDATE THEN GOSUB 550:GOTO 80 ELSE 80 COORD=N0:IF K$="" AND PDN=N1 AND BUT=N0 AND INPUTDV>N2 AND TISM=N0 THEN BUTUP=N1:GOSUB 550 ELSE 96 IF TINMENU=N0 THEN GOSUB 2250:IF XD>SCRNDRWMAXXM2 THEN XD=SCRNDRWMAXXM2:GOTO 520 GOTO 520 96 IF K$="" AND PDN=N1 AND BUT=N0 THEN BUTUP=N1:GOTO 455 IF INMENU=N0 THEN CALL ABSOLUTE(OOXD,OOYD,H,H,C7 ) z@8A,u ?) ].6>89':E:fy+=;<]E=>7>&?``kv#/9R_o ";CNVi':LT`p$5CMWantz8HUk{%/CNll                  ALINDLIN RECTCIRCARCS    E  RASTEXT WIDE ORGNWININOUTSIZE      DISPLOCKSET123 4 5 6 7 8910 WINIDEN0 1 2 3 4 567   FITREDOALLACTV LAYWINIDENMAKESYM  WINIDEN  ADDVMOVVDELV BRK MOVL    WINIDEN DEGR       DIR LOAD LISTPLACSAVE  DIR LOAD  PACKSAVEBKUPZAPERASQUITPLTRPNTRSTRT UNDOWINIDEN0 1 2 3 4 567   DATA  DIST  DRAWZOOMPANGRIDCHGVIEWMOVECOPY EDIT ROT   SYMFILEPLOTDELFINDINFOUȎ؋v&v&v&v &v &v&v& >>+B+C3ʋ>ƃ Ku>u]6 6 6 6 ? H3يGGCCC3G HH r sr 3SX[ut    ,U[ G [ i w  : @ F ؎P3PPPPPPP'؎PPPP @`p0Pڸ  r  r& %&&0ӋߊÌȎ  aaU@ۻ?uˎۉ&F > ?> <uBKu> IuAB @ D @ > 3۴ D <t @ B@ >@ }33Ҋ?2821D B u> >> } \;aHk~&]Quuô)tY&F Y3Ҹ 3Ҹ 3Ҹ33Ҹ@ø3ҊLx@ 3k3ŊbUȎعX>u ~&%~&~ &~&]PSQRȎ3Ҵ+`u )`>ut%|ZY[X˃>u >u ڃ>u ʃ>u 뺢y릊Ĵ(3`Ȏ؎,`dRS3u.3`z3`ˠ$ .& &$ .& &0123456789UȎعX>u ~&*~&~ &~&]VWPSQRȎ؎3Ҵ+`uz)`$0#"< ua2"<3tP<4uJ<2t<1t<0t3ۊ&8u .ãC |Ftu3 x 3 y<-uF<+uF3۹3Ҁ80| 89CBPSQRȎغ+`u*)`>u @ttZY[X˃>u >u ؃>u ǘFȎ؎3,`.3`3`ˊ&>%Á3UȎ؋v &v &v&v&;~ ;};~ ;}>t4;~ ;};~ ;}>u`++++H裺++@@>u g V;u뾋;u  ;u뾋;u  ;u;u  ;u));u+ S[AK}+ S[BK}>u;u"뢵3ҡt@"3@t" C+r&0E&0G&0 &0E&0G&0;uC+   W&0'& ;&0'&0% >&&0% ];;| ;;}YUȎ؋v&v&v &v &v&v&v&v&]UȎ؃>uPu ~&5~&~ =d=|&~=d=|&`u2u-$<u$ < u3~ &~&Y>u3aރ<|<<|<~ &~&5Āu $ < u2<t <t~&]PSQRȎغ+`u")`>uu %ZY[X˃>u >u ؃>u ƘȎ؎,`.3`3`˸.3`3ێô3`Uˎ~&]0123456789UȎr&v & t&\&2rC>P]UȎsv &63 =},-=t08K6K7K2K3:= + 3ҹ 0  K}80u t C 2C>P]UȎsrv &63 3ҹ 0 K}80u tC@  @?uC t2C>P~]UȎs] Ȏ>0 >> _7!< tB<u;> u! O<+t <-t<0|<9È2G>P~ >P 6%r`Ȏ>L 3ۊ&8u . ã C |Ft v u 3 x&3 y&  e !UȎhs]v &|> _*!< t5<u;> u! OI&2GA>P~v & >P iUȎs]v &|_!< tO<u u! OI<+t<-t <.t<0|<9&2lGA>P~>P Nv & wUȎ؋v&v&r & &̀ Ģ]QSPдX [YËv&=|=Hv&=| =PH< uF<-uF<+uF3۹6 3Ҁ8 t8 t80| 89CB9 uUȎ؋v & ' ^&<v2 & ^& t\<t.<u@*v&v&v& v & y y x y y x+ + ; } ;A; ~ ;|2; } ;#; ~;|rh" $   X&  ' " $      ]orË( ) + uy(  + uy)  ;}4 &4 8 &8 )8 +6  ( t;g;0 }A. y * . B, . ܀ t88 y 4 8 6 8    66 H;0 }A. y * . J, . ܀ t8 y 4 8 6 8    66 ;gE;0 ~I. y * . B, . ܀ t88 y 4 8 6 8    6+6 ;w;0 ~I. y * . J, . ܀ t88 y 4 8 6 8    6+6 É4 &4 8 &8 )8 +6  ) t;~hF;2 }B. y * . A, . ܀ t88 y 4 8 6 8    >> <O;2 }B. y * . I, . ܀ t88 y 4 8 6 8    >> ;}gt;2 ~J. y * . A, . ܀ t88 y 4 8 6 8    >+> j} ;2 ~J. y * . I, . ܀ t88 y 4 8 6 8    >+> Ëȋ;'W_B;~ t Wy_J;} t ËӋ;'VJ^A;~ t ~V#^I;} t WÀ ts> uUuHuIu-u!$t9ut!; |; ; | ; ÊUv vvˎۢ ; |; ; | ; g]      " tÀ u  u " tà   u   t(  ++  +  t(  +++ \ t(  +++ - t%  +++  : u              àÉ* &* . &. ). +, >2 É* &* . &. ). +, 60 2 x; }; ~ x; } ; ~UȎ؋v& v& v & v & ]UȎ؋v& v& t\<t.<u@*v & t*v&v&u2} }~&] t à7)FȢ)F)F)^&)^&)))))F)F)_^&)^&)VU))))]^)u)u:Q^ &;.T++x+n+\+)))ۉ)))))أ))^ &tۡ))))á))))+,%,9,M,a,u,,,, 8bJe?W[ M`݃AC["\ &%QO[o:#!֑I c_UW/oQ "LK0]&8A7FQ'v]V;c{"KQ]$ !B`/xƪ"7WtS 'ۊ/ C8WmZ^E3BS}XUȎ؋v 6.+v6.+.+2P.+P+P6.6+\2\Ӏ$ Њ\2\$ Њ$ Ѐ ~ 2.+ӊ\2\ ӊ\2\$ Ѐ ӊ\2\ Ӏ~}.+\2\Ӏ$ Њ$ Њ$ Њ\2\$ Њ$ Њ$ Њ|2|2߀ .+2\.8+t3/3.>+.+.:+}@2D.!.2&+C:t3~6]UȎ؋v&6.v&8.v&P.v&@.v &B.v & y@ v&D.v&F.D.tB>D.uj.l.->D.uj.l.r.t. j.l.>@.u@.h>B.uB.h@.f.B.h.j.p.l.n.r.x.t.v.A>@.->@.~T.@.J.--H.H.>B.->B.~V.B.N.--L.L..@.-.B.-|>~.tH.>H.t@@X.J.>J.t@Z.L.@\.N.@@^.P.+ȉ:.<.P.>.R.z.>.;<.|?R.T.f.;h.|D.tt>D.tp.uan.tAn.z.Qp.uBn.ux.uv.tGv.z."x.l.n.j.p.z.p.rAf.;h.|/~.l.n.j.p.t.v.r.x.z.;V.~>:.|<.+>. :.:.>.<.:.:.<.>F.tP.F.f.@.h.B.]jrB>z.t;f.;h.}6;T.|,t;V.|&Hb.`.d.;b.t`.L;V.|t;T.táV.;T.tY`.9T.t9V.táR.9Z.|áR.9^.áV.;T.tS9T.t9V.t áR.9X.káR.9\.|`;T.uVR.f.;h.}9Z.}C9^.?9^.79Z.~1;T.u'R.f.;h.}9X.~9\.|9\.|9X.}Án6.P.Q2.'22223+3B3Y3n3>.6.<.8.s<.6.>.8.[<.6.>.8.Aq>.6.<.8.(X>.6.<.8.A<.6.>.8.*<.6.>.8.>.6.<.8.YáP.|.~.6.P. s 8.)s 6.|. s 8.+|.r. .~.6.s8.+P.s 6.|.s 8.+|.r. .~.6.s8.+P.s 6.+|.s 8.+|.r. .~.6.+P.Zs 8.cs 6.+|.Ds 8.+|.Ir. .~.6.+P.s 8.!s 6.+|.s 8.|.r. .~.6.s8.P.s 6.+|.s 8.|.r. .~.6.s8.P.s 6.|.~s 8.|.r. .~.6.P.Rs 8.[s 6.|.<s 8.|.Ar. .~.h.+f.=-} =}~.;  ; |;  ; |S5.'6666!6*636<6E6>.tA@>.t87>.t/.>.t&%>.t>.t>.t >.t[; ; | ; ; }v$6GYk} +<M^o.=KZhvUȎ؋v&6v&6v &6v &6v&6v&66 y@6'6 6.6666.666>6~}>6~r6>66+96~666>66+96~666666>6|>6| 6>6|q66.6؋  6.6+щ66u+66u' u t6%66+66u6 66>66=|>6.6ʋء6.6+щ66u+66u) u t!6'W66+66u6 66>6 |)+Ћ6%6666666] ; ; |; |; ~6; ~66UȎv6 Iv2>59;9396>=9t=9=93]7999t vs3959+A;9 =9t } ;9 +ى=9UȎv6 I~7659;939&>=9t&=9&=9ӎ3]7999t vs3959+A;9 =9t } ;9 +ى=9UȎ؋v& 99v& 79]U=@}e3ҋȻ - ྸ:.$::::::::::; 2-(# %+06 ;A~~]`0 U! !`B22.6%;.$F,!^22.6);.$qF ~]<6Q<6] UȎ؋v&Hظut)]UȎغutv&HعG]n,X` %UȎ؋v&Jt u>v& =v & =v & =v& =.==;tXI==<t <u===<t uҢ==<t<t u3= = = =v&] UȎ؋v &Jt u3v&v&]UȎ؋v &Jt u(v& t&\&uCv&] U.?.> ?v&.?v& t}&\&.GC^&w&5@^&&WG?.6 ?.F^ &W.?!^ . ?. ?. ?Z!h@~&] UȎ؋^ &j@^ &l@l@^&n@n@ʋءj@+ыʋءl@t u t~&]SCRNDRWMAXY-YD)/SCALE!:GOSUB 2256:X=INTX:Y=INTY:RETURN 2256 IF REALX!>32767 THEN INTX=32767 ELSE IF REALX!<-32768 THEN INTX=-32768 ELSE INTX=REALX! 2258 IF REALY!>32767 THEN INTY=32767 ELSE IF REALY!<-32768 THEN INTY=-32768 ELSE INTY=REALY! RETURN 2260 CALL ABSOLUTE (LXD,LYD,XD,YD,CLR,TYPE,LWIDTH,WRTLIN):RETURN ' *** ROTATE ARC ROUTINE *** 2262 GOSUB 2238:RETURN 2263 X=X OR ((EDA\128)*16384) Y=STA OR ((EDA MOD 128)*512) ZLAY(Z,N1)=X:ZLAY(Z,N2)=Y LAY(Z,N1)=X:LAY(Z,N2)=Y MZ>3 ><< Cm;G g !$ $%c&(L2R2\2=5L5:6Q6BCAGILMMjMMMNjOO3Q{RJXXZ\g]u]]^^addxCÞRandom Number Seed (-32768 to 32767)$d ]xEco#Ƥ~@zZrN vH Tʚ;    !!!"""####$$$%%%&&&&'''((())))***+++,,,,---...////0001112222333444555566677788*.*@ |Yt&wz^Pc|u~r1$cCu͍M r5ozsWb:,~/qY1.ޥ-T wV~/qYRM0={!;N;=-iPPPb5~P$L~ye&X4#]I̿JÍN}k,٬NytZB<(sfioS;5#-1]h!I5| Ƅ}&l.F}k +}+''c}jr$I~L~gffgf^_B";5J }#~t'Xv%F*Ӯw-;uD1mA4-q7|tP;d<>b}JlA]E62w8HMľfK:|O\ 5$4RKB.aUPo ̼ Y$ /\[_6A_p caw+fCzՔVijl7mGG'peXQsOnwףp= #zL} Hz@PC$t >(kn@C:h* 51_c.1@v:k ^# bx-Àz&XƐn2xʴW ?h)͡SЅ@aQYԦo% 'N x9? 6!OgI#E@|o|p+L67EV߄vl: {Η@H½p PvP?<&Ok8и'ƫ7Cưe\{2~]30b/5`=! C)/{QFZ$+vﶓ+髤8UqfclN@< 'PKPEe35DNn"~h!II,k  j0 0 TeB׳]\);8zr1r13@aPQlοYXtXCSP_ط.[PtãtXCSP_ط.>[PtãtXCSP_ط.[PtãtXSP_ط.l[Pt0001FyF1F6G^GGGPGGGG7773T6G6=606)=L++V/6L7%X@w3%@4A'%'*''11VZH;NZAZZj_\URP\iSv\/VMNC2_2aHH|***@67#O/O;OC?;?'z''/'?'??L'k'p'u'G'& P]*]3]<](" """Z JHQNQTQ2##2223+++MMX,@;@LlTP3W3QQ$$$"A.A LLL*L-L0LLLLHFF*KKKK*HEFBMIMPMWMRQR"RGGGGWEdEEoEO0Y0c0c0 FFCXBCMBCUBCRBn0w0q0z001000MMNNNN8*EE8bHMHW9!988*r*_`` `````$`)`.`3`L+U+`+y+DEWEdEEoE%E1E5+A+2+>+w|nic^kfhcaV^[2o2}2d22l22i270C0I0I00000/00 01aSaSSWX^FeFMLcMZcNtcSyntax erroRETURN without GOSUOut of DATIllegal function calOverfloOut of memor Subscript out of rang Division by zer Type mismatcOut of string spacString formula too compleNo RESUMRESUME without erroDevice TimeouDevice FaulOut of Pape2FIELD overflo3Internal erro4Bad file numbe5File not foun6Bad file mod7File already ope9Device I/O Erro:File already exist=Disk ful>Input past en?Bad record numbe@Bad file namCToo many fileDDevice UnavailablECommunication buffer overfloFDisk Write ProtecGDisk not ReadHDisk Media ErroUnprintable erro|xz.~X[&vSP-3BT="ˉCtK6SD3ۋӉ&SR"Z[ urg uvCKK$+؋+ڀK;zrAǓ|x>vOOXY&QPO G ǣ3󪣆 a(c)-+3󪿔H ^.V6  X[SPX[SPt 2345679:=>?@CEFGHD& 2345679:=>?@CEFGHD.vMM}&&>u=>t62X[>u-$)%S6x ABSTO >uA ! % tA in line]XZUY2AA at address]_ZU :AgAAAZADô&=t t ĮsGtA"3ۭ t;s ;rFF tUAInternal Error - No Line Numbe@Z##3O &%wA%* )! uڀ>+ tӀ>3 u 3 EX5 E* ! u3K M @8  !* '! %K 8 B&>>O t J+С Љ Ӄ ;w9WS<#@[_ 3X 3P -+ м3Ҵ!'!)tuzݡ;(!>t"'! uN>Ŏ&-uޡŎЋ&P6Ŏݺ! Error in EXE file $ !U3PSP ![K >P bmt&  +X  Z \ P9rSr]"[^>3;s6S++T v~+-t;wЋ +ϡ&;wz t8W+Ž x33N_)>v>x[ST PD+;^ +ñ tX +V K l( K 8  !> ]t)'* ! td6  ;sŎ&, u ؇z+H&&v$ .$ QX+u3Ҵ!* '!u> !6zt =tH 7F9w9w3">&=G6z6&t%FD+NW>|G>&^N>z5Ë6z>z>|D t|u 7FþP u.&*3؀u 602 6,.B!"t! !È(ڋ"ÉYlzB SSQR)tt ƀ>t u6r>tQ΋(WR_YV3tÀ>t ك r>t  $эL3t!$OG5>tʃ rOWʉ3JJGG G G GGGG GGGGQurYQrOyuir?tJxô{PX(<r P<u &n3Ҏڣ&&&& lnpr$&lnpr "yGO("Á}r˳.@rS3ء;#ur:t r[3؈y>u /! !3ء lnpr$&&&&&PR3Ҏڎy3FȢDZXϰD , *BreakPR3Ҏڎ>wt wuVv&vuZXϰ ZXVSQytBBwuY[^VSQu>uu@6y;t2yO{Pa$a3ء "2@@XwY[^UWV3Ҏڎ>>t6>?t8^_]ǃ u<u&úP>XÆʴQR QR |"ZYͱΊʰ>à#u &tRr2ڣNZP<t<s2 XPP QSPXX[>Zt YXtRPSQRVWƿ&6|&6~&|&~ưZ> ƿ&~&|_^ZY[X:s( C:tÊ :s _^ZY[XK>Du>Fu UVW_^]t>DtDÃ>Fu=UVW_^] u ;rEr VPJ,;F Xtt6HV6HHF^RSQPXP<tK<tN<t< t< t< tW[:6w"r> r   XY[ZÚ w tʊ6ۚ("RZ RPRUVW_^]((t u t 03-ZXP< u|/u<t X - %rˋ tt>wu?3 & &"@@>uu Ca a[BBwuËy>tuu>wt1uu$Q _.މyG ΉO?Y wF;7uwwOËw F;7uww GÉOO GÉ&PSQR?'>(tO>PSQRkZY[Xˠd<ts<r@PSQRVWPSQRVW&PSQRVWtF>t6 Cc urSQWVٴ ^_Y[C:rK8 sC:s83ۊ C()C$ €t̀ ط.. c utÀt:EEt J ŰF&) %SQw< u% %Y[uÊ 000u P%X%R t$K sJ[PbGZ*PSQRVW>E u |_^ZY[Xó?u >upJ1>(t PSCߋwr[SQ%[*ˊ [X<:r0u< uQWV ´^_YPSQRVWbPSQRVWT&PSQRVW' Ts& u;s-s(Pu ss(t t:6 u0,au>tKPt(u uȋ LM&:tģ&tP" u2ˉ&PQRVW uF t@8r:s5>Ets)ʊ>QYt2_^ZYXSP u2:t)&Pt(ut&P"X[QKYBDSCRNCAS1COM1COM2LPT1LPT2LPT3/;//M*   * &V&V&V2/2/M >VMVMV2/2/M rVrVrV3/~/M  sVwVwVwt u-ؘ.&t.&&V(u^P&QXPP&V(^t P&uPP &V(tR<uM^XPPPՉ&PS?t-_߰ItOtRtAu [jX7QS˳[Yˉ&PVPV4(u) ^XQRSڋw,[ZYCt K t w޻&SW._[OOuû&V6 u^<V^V6 u^V6 u^8V6 u^|V6 u^nV't^WSPWSPD. x2ؘ.& tXP.X[_XSV6 t \23'^[ðr x2PRW u<.tJu_ZXâ t߃rtа J JuRWV<:t ^_Z2_W+tIt9k&VRG=.u.8uJuG. y^^^_ZG.tZ^.}um ,@r<suÄ&tك3>&ً>|6\D.T/܉&Sr QR3ɋEZYcVW򥥇ڃ?t U_^[ˉ&QRVWp%MS [_^ZYˋދ tsJQVWw;v;_^u;Yˉ>t[6܀>tXSn܀>tXSˀ>t t ;r;sFFXSCu~݋PRS3ҋR[ZX˾˾˿˿ˉ6 >")6 >"ˉ6 >"6 >"ˏ$^&V&$$&UVWPQRS$[ZYX_^]PSQRVWqPSQRVWc&PSQRVWl6CC tVsQ>EtsE tA:6w;C s1rs s Rr uh^ZX uPVCfu6&3t=t5H;r6&+tH+^XÓ7FL6&;v[빰f<rS6z6&=ttuNN@G7FPSVW6zH=t#u󫓋;wu)@;t $+rF5>&_^[X during G.C:4|Internal Error - String Space Corrup t$>(t$VS6((w\Ӌ^úفfsG*QWH_YQVWA_^YS*tfr[s]PÇ(GXPRC&+rCC|CZXhPQRVWQSʋ2[^wA_^ZYXPS_;zr;|w @ G[;uX[XoRQ3BJYS_[ZË>z>&|@$+-E*>(.Efü/~/n/////6/e/O/QRS3Ɉ3Ҵ[ZYÀ>t \QRS3ɊŇ2< tI<uy tv:< u btu < rN>t :&ut:.& FP2> tCX~66PDP t$3XPDPD tXPDP3ۀ|tK3ۀ|t K3ۀ>tK &&6h^P&>t&XV6hs؇QsYˇQcYˇQ>ttQ{YQ?Y>tkYu#u3ɉYˇeQPSW,v&++r$ 2O_[XVQNNY\uFF^W_W_É&QRV3ˋڀt ]t%<t#6V PlX^ZY#t2׉^GԀ2nSWXÉ˾(B) t t2xs tP  X99,6966QR6ZYQR 6ZYQ5YZ59o9r@jm9r@[26 Pj3X  1Mua3Ztt2r 9s21EӉ&PQRVs2s21^ZYX wS[ni<"t,N3ɬ:t A,tNـ,uNO :tA' t3ۋӋl n<&tN w :v 3QˋݸuV^Y8ҝu<%t,<#t( t*P}r y]L yC^ :t&<t1E3ÚE<-t<+uFNû wx3p‹ t 3KPWUSRXXXXXЃrl t),0r < wlnu nlNì< t< t< t v:|3:+ ~ K0t .0v+It.E+ yڴ-> uH 00;&xrD^&VPx0_^X u[XXxX^_ t&VW[_^&VW&;&xr2 u(^жK:v t R&&&RͿ tyز-vJv 0À> rʻt  tض+ڰ t-vLdP> uo>\DɀtPLZހԊYQ́twr t'RZZϿ+ϰ0AOÿ"ߊŊ㗊܊ǕƊYQ́t wrt ׿ +Tl\sTl\̓0-Gf3Ғ';r03d dr 00 00ÿ>Ë;s"++0<5r O<:rA1O0A*Կwl;;;G;;o=o<;u uQNYV| ^>u`T>uS!!u#!u>u߀>tD<t <t <u\YZÃ|u |u|"V^u)&#3r<tB3|'3D2뤃l"sL$PQRSuB t|扔JDŽSt uĊ23ۉZL3ˉ+;rʨt3sFVQ6>sY^,+3 u[ZYVQ6>sY^ $PQRSC;ut K\'D)D*\"D$t4[ZYXD'QW@3|3_YD!K uD)D* D)'".6aA&>&r@}@@@@@@@@@>>ti sdPQR.D@ZYXˠËÊ+A t .׋ÊC2ÊX t s􊟘PR$: 2ÊP2 t׻Xs'Cu2ZX8A??ˀ>?tsPQt x ƇYXSQf t .:&t &t.Y[SQ?uQoYCCY[S[R"ȘZW xaG t]?΀s@3+s(Nރ6$zFھ?Y3E tZT tV߿ 0vJ y1w> u1쁊̀+ࢶ& G) yÀv*̊ π y cӾ > t  Ի1%)& #t uՠ$(s Q YQ6666 Ծ Y빾3E t=T tC4  ߚ0v; yiw/:u)쑆&N y€v*̊݀π yR TϾ ZX> t!PR  {|ZX+  #t u@Р$Hs Q  YQ66 о YW_SRP y3`XZ[W_SRPπ t[XZ[ˉ&PQD K&PQ@&PQV^0 y ,XS yN> uGKD&PQ3 t1rڊݑ*͊r;t$π> tp+ y"xYXˁu t> tt x&PQD &PQu x ݀> tsz uD Lt L7[˃?toVw4޷^Pt/u X&RSطX& u;RS  ڏZXTSRP&tuJ3۸XZ[G ~PQRVW񭒋4 t?Jy;8$}K+ʓ+~'$u QVW_^Yu+_^YZX3QʋӻFYˉ&Q3 &Q+Yˉ&J|ttRP+~;}XZB&R t>|AQPˊŠAXYZˉ&Rۉ&ڃ?tSPS_[JXZ޾ &SRڏC |tR;~ }3BZûÉ^&3Ɉ&Z;wRYȀ.u&V>uʾ>Dtf>tP[<\].X6QRSP1P sYX[ZY]QRSP s݇ 4}+s3T˾ s@hrS06 ʀ>t&"X t+*̘ ur xu#(w#PSV6 t3D.u-<u> t+ tK ް  ^[XP6X6{ޏPX$'@'.P$XtXV^ʋw:ûiC, G*8 O׃*3 K$bK&HKLLKK4L: J<$ :t$uB P X4tY$:ut :t u4tÃtPSQV˻, &׊!^Y[X$:t ,rÀ>uπ>tϻ, ֊֋kZ_WR;&xrS3P&otUûPSR3Ҏڎ`<;r@,;< r< r6 tttut B Z[Xrϰt tYY[ tkt2õ KuC:s?X_WPW钺 t KsO0ˀt t J{JJQWȾlLVW_Yˊtt .Ks ttò2۱˲˃sSXu$"AuPWXu .AVP船b X^˚MPQS+W3>b OOv>b _[YX     US>uM6b <t;N<,t u/FF6b _ <tuË׋*S3v ӓZ*3.&-   \  ։&Vt <t 6^鮸鱸v݋ `Ƣá t_ x[=u>t,P66+  ƾ [E PAP sYX uPQCPH:sp* uPQS*r y3RSRنĴ33ّ[Zh h d f i܋3ۋK؀>u BAS'3D.u7>uB`h t>d >rª<9M32-;|0d (f &GY3ۚ3'듊P@X: ut t8\u<uF3PQRWSt t9\rDEL˃ݍwL3s[_ZYXWWSߋ} t;u|[>6|_`'ۋ t x,PsXHPLžLL~66663j j GǾ [EXƾ >icZ]SR%r@%r@r Z;w[/Whf_Ou SR7V>tIJsYX[W_Ou´S\]\\]\S\]\S[S\;zr ;|s];zr;|sˉw \ًPž sHrԻ16 à,v6666" <+ þ Lþ-X t&*̘ ur x 鮳(w^Vt r pXv hSr t u ?԰ `t u> H؋ \3 ľ É&Zt<t6v S#5gr t< t <"u,u ~""Hr@"t%< tN< u,t_,< t< u t,t t :t :t;s<"t< u'r"< t<,t< uG.x r< t2 tuY&PwT ATBTCTDTETFTGTTTмTԲT̢TMUXdsPAsK tGÀ r=s63ɀAs/ ts&s!s tAt,PQt u@YX3 uË7' tCүVԋ ty$6ÀrPO ,vDTs@ Lo L 薽P@  8@] ~1 |-;w)VWQI+;rȋ; v tY_^ej_&Gz >x &~ &| &GטP W&U ,<uv 5]_> rw7vww>t6 t8<,t&~ ?Redo from star^=S >x | ty2 uW}Overflo'VWQ6| NN +&6| t Y_^ ux z &~ .x 4Ӛ*ڋҕ&rJ 6&=sԋ6&H 6 6 -  /tS ZӰ@鎭  ty  rt t ~   t t + trt tӋ  K=~HȒ )f2. r6 ;6 r6&FF6 Ë  衍 ; s! > ë«;> r>&GG> 隬   Z u  W7w=  -ы b&p ы G $ 0 ָ>r>@hrP蹸 $0É&P [w9[;[@[B[M[[O[K[U[I[[B[N[l\ \Xdڹ=ڋʺ4ڋ.(ڋ<+t<-R<,tFYuMRZs(PRS ˋZSY[RӻuS[ZXsڋrP* Xs ð@齪sss tsà uûuӊsJrÀBƀti\Sڊ u u 2sg r;7wwwG  鼻ϋc&l蛹 ΋H $ 0 h>r>@drLK $0PW PW PW  V^_XaQ鑉=ݚEE 3 t S t X;vP $t4t X   u`' >r @P脷E X3uCUP@ = ؗ@/  +  X];s @HxH+M 3 ÿ便38tEt  6 [Pw$  E 3EP͋ ã ; tr ; tr9 u%4 tt  sUW _]s \= tXHt. ݇> }Ë؋ u @tG̋ ty$6ÀrLѸ $齶<sD H H FL胶 肸 0鏶3 94/*%   uˋ6 . <tJ<t+> u%׀> uP@ ǀ> rOw > u> uRNiа"A\Ͱ"~ < uFY,> tvNJĴ*̊-v2 GPbNJXt u PA*Xr:v 5 t:3ì t&PVt7<u5 Ƽ6 ^Xˉ& xP) r͡ G Xps@a&PR*Z  a2 Xˠ uSE[  u> tT 80> uDы+s6̋ ~ R  t 6 +X餤鰤" Ɖ  : t  4I   Ë<\tC< Ͱ\2 t   < t<;t r '_ . u8X6 6 u6t uhE[E硡 =Ps r  á =>r r- À Ê r Ê r ÌƸ & "ŠrÌƸ &2 " &0QꟋڱӱs  Zt  Àɰ  <st $آ ñU à t- x$u;˟rK x rÞ33ɟ鎠3tCÌƸ tk &/ Њ "" Jt?s &/ & u㫠   > > 뜋 &/& ß  ؠ 2r> s 2ۋP &2"&0G & G"&G"&0Gـt2&GJx1u"܋&GMx2 ÈF"Ċ$Ѵt"Ċ2 tQ tMFH_t=Mut*ʸԊ"  t 6 Àt2 Ê&  > 6  32Ê. y . Ê2"t 2" 2ÊsG&=O&=Ês2&=G&=u%DZ$NjA<r,t*sø> .  6 2&=Erqr&=> . ˋRr Mtss3U#> . U33s EVs<> . Z&=ˋ&es:eesd;r> WA &2 " &0;r+ Ck7k(k!kkj ykkjjsjsjsjsj sj sj sjjKM tsvRSOuG w HP   iP& Դ蠵Ӵ uugi.:tN v.Z.d: r Q tMIS6 *˵It 讵C 覵Zӳ[  w tʊ6Ή tKxSR 芶 聶Z[& < u'Ҁ´ =sư RZuÀ>ZtB: s<sS6  *Q KYAP  X[ sC۴: r  : rË "[ ޲ Ë  RS²[Z& * SR t P}XZ襲[^ Ƈ ZQVi.:t Fu2. ^YSB[ 󭑿QV %^V^Y66 DS [ 󭑿QV ^V^^Y6666 DDDȫ3  3 n+sË+sÃu.rSR<Z[3۠ tC>v-t t v+uǨu/ߊ& |Ŀw |̀<0uŠBN *y2 y2@̀<0u2 t*Ǣ NJ @t H t%G* v<v @%2t ؘ & t*uv< tt$|u0u,0x Ix.t ~0 ~0t#PE+> uH y۴- 00īXtvw+MZ; k " ){0Kf#>YtS7G . J f cOn+@+E+P+q+|+bm:+K@ 0bɚ+UF?\^`bdfhjln        "$&(*,!.$0&2.4>6H8K:<À>Ã@ÅBÆDÇFýHJLN#f¡ã¡ ã~=\^xz#|$?pvrt "$0ĺP͌¾@ͦ>C>C>B>B>DTP*>Tu3><EB`cfVX>">!P>>">P\PTPPP`\;TtZHNP\PZPT\PP8PTj>\}̓^PPT\=^͌=b͌P= f͌fP^PPPPPPTfP`P^PPPPPTfPbP^PPPPPTfPfP^PPPPPTfPhP^PPPPPTfPlP^PPPPPTfPP^PPPPPTfPP^PPPPPTfPP^PPPPPTfPP^PPPPPTfP P^PPPPPTfP P^PPPPPTfPP^PPPPPTfPP^PPPPPTfPP^PPPPPTfPP^PPPPPTfPP^PPPPPTfPP^PPPPPTfPP^PPPPPTfP P^PPPPPT = D̀ӻ!= ̀f͌fPdP^PPظ PPPT= X̀ӻ= ̀f͌fPjP^PPظPPPT= ̀ˋ= ̀f͌fPnP^PPظPPPT^ø̀̀b̀̀f͌fPP^PP  ظPPPTĺf͌fPP^PPظPPPT^PPT>B!>DӻR͙>B>Dd͙>B>Dv͕>C>C3>D=j͍͌t`̓`;tnź͌nP>ntź͌>ntź͌>ntź͌>ntź͌>ntź͌>ntź͌>ntź͌^;t ź͌ź͌ź͌ź͌`;t ź͌ź͌ƺ͌ƺ͌nPpø-J PrPPTrË`ʋӻ͌Aráp;r}ǻ>"X3>!Ëڑ.>㻜ӻ㻜㻊㻆$㻄"t ~ҸvËBvÃ>v~ݸ_xËˁ فkËjܺ`㗋 ;^ x@xÃ>xA~zË@ BzÃ>z~ݻ>"À>d;@ |Dž@  kj>|ËǴLͦC|Ã>|~~„ilo{^x[ ~*b-, @ûź͌f ã¡h% ú>=CÃ> ~Z¾Pͦͦ^R͂T͜ͶͨXƿͲͨ   * !$'30D F H@J\L¡bN¡jP9<NQ2]4Z#!!ºĺƺȺʺ̺κк!Һ$!Ժ$ֺ!!غ$!ں$\ͦfr  >rP\PظvPPPTrP\PظvPPPTrP\PظvPPPTrP\PظvPPPT͌>"X3>!Ëڑ`>=+Ӄ><J##uỨͅ@Hû=jͺsJ=rͻvK #t 3/3.h͌@Ã>~ڡ@Ã>~źl͌>"X3>!Ëڑ`>=+ӋӋ́͝=сwK##uỨͅ@́͝=сw, úz= Ã>u J= ͌ںƋ= Ã>tٺ= ͌JË= = ͌úh͌Ë+ÇӋ= ͌>uúzƋ= Ã>tCá@Ã>~ËJ˻Ë= ͌>t+هӋ= ͌Ÿ͍uhú= Ã>u .hJ= ͌=ͥͨsË+ÇӋ= ͌=ͥͨwŸ͍u= 哣> uK>+uJ Ӄ>-uK ڃ>.uJ Ӄ>/~K>:}I# #u. .lú= ̀͌KËْ= ͌_>,u >/tKӻËKËْ= =ջuK##tŸl͍tËK= =ͥͨvþͲ͜=ͼt#==͌K= l͌̓ .p=ӻË+ډ^ًV= ͍͌u1 .p= ͌ .lþͲ=͌S .l= ͍t Ë̀͌ .pú= ͌Ë=ʺp͌3`ã3E;u5ظ .p͌p͌̓^;t@á;}@á;}>">u"Ƹt̀=ջwKˋڸx̀=ջwK #tƸt̀=ڸx̀͝=͹jsãáãá`Ë+^\h^Ɖ^̀=ͩ^h^̀=ͩڑn\h̀=ͩ^hْ̀=߿ͩӺuJӻuK #tþͳþ͝ͳсr@á;|/͌ú͌̓>t9>B>D滜͕͕͕h͕>B>D滼͕̓ƺ͌ãá^D.`h͌̓^;t.`h͌@á;}\;t(TTPPT\;Tu^;tPTb;»uKf;ºuJ ӡh;»uK #u*PT^@Á>ü~<j;t06PT^@Á>ü~>PT̓\PظP|PPPpPP PT  >^@ P`@ Pb@ Pd@ PrP\PظvPP2PTĈPPPP4PTX>"3>!Ëڑ>>">=j͍͌t͋̓=5uJ>XuK##u >B>D͕P͕͕=5uJ>XuK##u>B>D͕=5uJ>XuK##u>B>DV͕S=5uJ>XuK##u>B>D滐͕>B>D͕=͔͕>B>D͕̓̓>̓>B>Dӻ͕>B>DP͕>t,̓>B>Dӻx͕@Á>ü~Ë+=ʺ͌@;|>B>D滮͕D̓>B>D͕P͕͕̓>B>D͕Ë^= ͍t+ڋËْ= ͌Ë^= ͍t+ڋËْ= ͌Ë^= ͍t+ڋËْ= ͌Ë^= ͍t+ڋËْ= ͌^û䓣Ļ䓣ġ;ĻtKС\;ĹuI ;»uK #u^ġ^;ûuKС;Ĺ|I##uʻË= 哣 Ļ= 哣 ă> A}K> Z~J> a}I# ˃> z~K #u ; u \j]> @~K> [}J##u   ġ ; ĻtK; ĺtJ##u\á^ģ͋$PPPPPT͋^>B>D̓\ċءbēģ̓>C>C\>D͋PT^ģ͋>1>B>D>>+dD%mJgQhi;nQo=BPF:TZFdF/nFFFxF@U!~26]Uv!] BLDUȎ؋v& } u%IC.>@} u$&GC&\.>8&<.tЈGCv &.\v &.^.7! t=.^.\ش!.E.X.Z.7$!.7'!2~2&.7!]Uˎ۹Qr(Ys2~&]ڋ. +=r^_+бҋWV-P@Xp.  _^&VW_^[VW67 4CDMINDST.BLDoyHC A D D R A F T)\Release 1.40 - (C)Copyright: June 1984PERSONAL CAD SYSTEMS, INC. This computer has# K-bytes of memory and will support database layers. R Press any key to begin. V _______ h p - c a d z ABCDEFG CPATTR.EXE CPDIM.EXEI CPHELP.EXE CPPLOT.EXE B:CPATTR.EXE B:CPDIM.EXE B:CPHELP.EXE "B:CPPLOT.EXE 2CPINFO.CFG@z@H 76{dCP.DBUp~,/= #Current DBU is #, i.e. UAny key to continueCP2.EXEFile .* not found on disk ..... can NOT continue!9File CPINFO.CFG not found on disk ..... can NOT continue!6ZFile CP2.EXE not found on disk ..... can NOT continue!5File CP.DBU not found on disk ..... can NOT continue! DOS ERROR #) Can NOT continue!Press any key to abort =This computer does not have enough memory to operate CADDRAFTv$TA minimum of 256 K-bytes is required2|Default DBU error ...... Searching for a valid DBU,Error in CP.DBU file ..... can NOT continue! Error in U ..... can NOT continue!E Microsoft Mouse driver has not been installed ..... can NOT continue!K&>W  3_ ! t= ! t0 !"" !>#u$$,@t<wբ 3; = @( ! '! %; (  J+С Љ +֋܃;s3Ҵ!  '!) u& ; (  !> t"' ! ui>  Ŏ&- u[. ݹ3ع++33ь+ȁv3 !3P Error in EXE file $ Program too large $ Cannot find A:BASRUN.EXE Enter new drive letter: $BASRUN EXE.`;|.ŏb;|.0d0ţ2šl4ŋ*+$^b6š6ţ8͋^;&u\ģ:šģ<šģ>šģ@šģBš ģDš"ģFš$ģHš(ţJš*ţLš$ţNš&ţPš,ţRš2ţTš8ţV͋\;&uh:ţġ<ţġ>ţġ@ţġBţġDţ ġFţ"ġHţ$  MZ 9`   A ) )%MuH#wvC[>f!"7"_""".#N#j####%'+++&,S///0F0|000'1x111#2Y2223L3aABDDEBEL MM-NOR_^_@EPq|bmx_+@ xŠΚUC%>È£á£ûO?`;»}K^;ºuJ##uláj;t\ áf  hn á\;\tB^̓n̓>a ź͌=͌\Ë;`t`Ëڋ^= ͌^á^;t \e8\̓ Ÿ͍uJ\; »uK^;ùuI ##uãá;|̓=VS\ûŋи͍uI^; »uK#;uI#ˋء`;º~J##u Ÿ͍uJ^; »uK#ڋС\;uI#ˋء`;‰^}K#١;FuI##u ̓=%\;t̓u#";|J G Ÿ͍uJ^; »uK#ڋС\;uI##uF \;tPPPP4PQ%\;}Kb;~J##u X^û哣ËӋ>h;t)\;RtR»ź ͌\R»ź ͌h;t̓p ø̀$͌̓ ̓̓pn;t̓Q_̓6̓̓&̓pj;t^;t ź(͌ź(͌j;t̓=̀̀(̀$͌̓ ̓: .\>Ӌ=̀ ̀ʑ.^>Ӌ=̀$͌̓ ̓̓̓p > t\;t ^\ƒ>?uK\;tJ##uLƺ,͌̓̓p>"3>!Ëڑ>>">̓}̓p(ƺ$͌̓ >>t̓>XuK>xuJ #u >t>̓̓:0ƺ$͌̓ ̓DƸ0͍uJJ͍uI #t>Z̓p> t `>DuK>duJ #u¡̓>PuK>puJ ӡ^;ûuK#ڡ`;º}J##u \48>"t- .\>狅6Ó.^>狅8 6á8Ã>SuK>suJ #u.̓=P̀b̀Ӌ=̀$͌̓ E̓:lƺ$͌̓ ^:̓\:ûŸ0͍t̓p0=Ӌ^́͝сsKˋ=ͻvK #u0=Ӌ́͝сuP=ͣ£<>ƺ$͌̓ > =̀b̀Ӌ=̀$͌̓ ̓:ƺ$͌̓ ^:̓\:ûŸ0͍t̓p0=Ӌ^́͝сsKˋ=ͻvK #u0=ͣ̓p>GuK>guJ #u^;"u"\"ƒ>HuK`;úuJ#ӡ\;»uK##u=^@Ë͂Bͨ8͂ͬͨw \8O>KuK`;úuJ#ӡ\;»uK##uA^@Ë͂Fͨ6͂Ƌͨr +6ã>PuK`;úuJ#ӡ\;»uK##uA^@Ë͂Bͨ8͂Ƌͨr z+8ãm>MuK`;úuJ#ӡ\;»uK##uF^@Ë͂Fͨ6͂ͬͨw6>HuK`;úuJ#ӡ^;»uK##u +>KuK`;úuJ#ӡ^;»uK##u +>PuK`;úuJ#ӡ^;»uK##u K>MuK`;úuJ#ӡ^;»uK##u ̓u#̓ ^;t££\ ¡`;~`;t͋`;}PPPPQ%\;tj͋h;t ^,>t `>t ^\+£^ ¡\;|@͋b;»uKf;ºuJ ӡh;»uK ڡj;ºuJ #uPPP PQ%`;|j^J͋^;Jt\Já£á£á^ ;tء ãLÓN@NáL;N}^;t͂‹+͂͜ ͂͜͜͸Ͱ͢ˋ͂‹+͂͜ʹȄ͢+#};`}J+#};`}K#ڡ\;uJ##u\á^;t£á£͋8;»}KС:;¹~I#ˡ<;»}K#ًȡ>;‰^~K#^#uF+͂Lͼv͂͜Ͱ͢p͂+͂͜PͼȂ͢^͋+@͂TͼBͬPͨ+F͂XͼHͬTͨ̓$XãZã\͋^;u̓$$P

PPQ%$>  ^>͋\P

PPQ%͋^;t££R͂w͂͠w͠;;̓u#^;~;|^;r;|̓ ^;u\;t+PPPP4PQ%PPPP4PQ%\á£<>> |=̀$͌ =$͌̓ ^;"tƺ$͌̓ \^ã`W`;"tƺ$͌̓ \`6b;"tƺ$͌̓ \^ƺ$͌̓ \^ã`á£<>\̓ >!\̓ ͋$;K|;|J##u)>="ƒ>$ $||;|*>="^ƒ> IF^;t8̓$\bá£d̓Udább̓U\(X͋͋\;»uK;úuJ##uPPPP4PQ%^;uK>}J#ӡ\;»}K##u ̓m̓K͋^;uKȸF.\>狕;¸H#Ñn>狝;º|J##u+\bád̓U£dább̓U^͋;»uK\;uJ##u͋;u dá\b̓U£‹ء`bÓd̓Ubbád̓Ud̓U͋̓̓͋\;dûuK>d$~J #u͋>d||fádãhxfádhá.hãjáfãláj+ãnørP\PPpPPQ%fPjPظlPPbPrPtPPQ%fPظjPPnPbPrPtPPQ%lPظjPPnPbPrPtPPQ%fPnPظlPPbPrPtPPQ%rP\PظvPPPQ%͋\vD;t ^\̓}¸ .\>Ӌ͂͜͸̻sK‹ʑ.^>Ӌ͂͜͸̻sK##t>DtK>dtJ#ӿ‹ڸ .\>Ӌ͂͜͸̻vK‹‘.^>Ӌ͂͜͸̻vK ##u͋̓O͋ƾwͺ͢xzÃƾͺ͢xz}ƾʻvKʺvJ #u͋PP .\P.^PxPzPPQ%͋^;vt͋̓:ƺ$͌̓ ̓̓:^v͋ .\>ș+ʋӋ͂ͨڒ.^>ؙ+͂ͨ͋¡̓ ^;}K;|úuJ ӡ\;ûuK##t\á^;»uK;~úuJ #u \~B`;»}K\;ºuJ##u̓ \;@t̓$̓ ̓u#͉̓%%|9]N|̓}̓p(ƺ$͌̓ >̓}̓p(ƺ$͌̓ ^d»>̓}̓p(ƺ$͌̓ >̓}̓p(ƺ$͌̓ (>`;t̓,ø4̀@̀$͌̓ `;t̓:PǺ$͌̓ ̓`͋=0͍͌t0Ë t͌͋͋̓plǺ$͌̓ ̓̓Ǿwͦ͋¾rͦ͋Ǿwͺ=ʹͨ͋ƾͺ=ʹ͋PP\PPظPtPP PQ%͋`̓͋b̓I\̓L̓\PظP|PPPpPP PQ%̓͋b\PظPxPPzPpPP PQ%̓\̓L̓\PظP|PPPpPP PQ%̓͋*rP\PظvPPPQ%͋£<á^>ûǺ$͌̓ ^>͋£<á^>ûǺ$͌̓ ^>͋.\\J PPPQ%͋.\\J PPPQ%͋^;4t ƒ̓=\4̓p̓L\ã£|ããã‹CÓ£ã\£@͋B.^>\já\@ .\>\#ʓ.^>牍#.`>牍#@á;}B.^>\\j͋̓:̓͋͂ͼ͜=2ͨx=5ͨ͋=0͍͌t0Ë t͌͋0ú$͌̓ ͋̓͋dá^^N@NÁ>Nü~@á;}͋^;"»tKȸ F.\>狕;`}H Ñn>狝;`}J #u͋͂Fͨ͂߿Bͨ .\6Ӌ͂`͂͜͜͸ͬPͨ.^>Ӌ͂ʹͬTͨ̓$XãZã͂ĸ .\6Ӌ͂͜͜ދ͸û=ͼͬ͢ˋ͂ċڒ.^6拜͂͜͜ދ͸û=ͼͬ͋͢v͂ʹ^͂͜ȁͨ͂ͬ߿w׋͂͢v͂͜ʹͰӋ^͂͜͜Ȃͨr͂ʹĿͨ͂ͬ߿w׋͂͢r͂͜ʹͰ^͂͜Ȃͨ߿ͦͦ͋\bád̓U(\͋\bád̓U£dább̓U͋Ç+^á+^øPPPPQ%^ãÓøPPPPQ%+^á^  ãøPPPPQ%^ãá+ãøPPPPQ%PPPPQ%͋>狝 ;^t`͋>狝 ;`tb͋>狝 ;bt`͋rP\PظvPPPQ%*rP\PظvPPPQ%3rP\PظvPPPQ%͋\PظPxPPzPpPP PQ%̓͋rP\PظPPPQ%*rP\PظPPPQ%3rP\PظPPPQ%͋`PP\PPظvPrPP PQ%͋\@Á> ~͋ź͌=0͍͌t0Ë哣Ã> t͌͋>t ź0͌͋>tD䓣Ã>|>+^>ËJË= ͌ƺ$͌̓ >+`>r^;:ûuK>-tJ#Ӄ>0}K>9~I ##t7^;ûuK>.tJ#Ӄ>0}K>9~I ##t ~J>-}K ڃ>.uJ\;ùuI# ˃>:~K>A}J# у>Z~K>a}I# ʃ>{~K #t}0ú$͌̓ >+^>û0ø̀͌Y£Ëء\;Rtۓ¸PPPPPPPPPQ%ã͋PPظPPPPPPQ%PظPPPPPPPQ%PPظPPPPPPQ%PظPPPPPPPQ%͋̓#PPPPPPPPQ%͋̓#͂ͼPͨ̓$Xã̓S$͋ƾw '͂ͼ͋̓͢"PPPPPPQ%PPPPPPQ%PظrP\PPPQ%̓y#͋̓"PPPPPPQ%PPPPPPQ%PظrP\PPPQ%͋͂Fͨ͂߿BͨӋ͂߿ͨ͂߿ͨNj?-`͂͜͜?)͜?-?%Ͱ=6Pͨ̓$Xã͋%Áá\; á%@#}ã͋͂͂͜ʹͰPͨӋ͂r+͂͜ʹͰTͨ̓$XãZã͋ƾPw XƾPr X P͠XÿƾTw ZƾTr Z T͠Z͋PPPPPPPPQ%͋+͂Fͨ+͂Bͨ\Ó͂wô\͂F̻͜vKBþxʺuJ##u PþͦN\Ft Pþͦ3FþBͲ=1ͼPͨ\͂Pw ͪͨǾPͪ=͂͜Ͱ͋̓͢S$͋>h >h ͋̓n̓áá\̓}̓̓:^;\t(͂͂͜ʹͰ͂͜Ȃͨþͦ^;\u Ǻ$͌Ǻ$͌̓ øB.\>狕j;^tI.^>狝j;^}J #t.\\J PPPQ%>Ë狅 ‹k¸B.^×狅já\I^;\u=0͍͌tL.\>狅J Ó.^>狅J .`>狅J ^;~> ~K>@}J##u1̓Z*\;u\áã̓B4̓z̓WNã>@3̓64̓*\;uj̓z̓E5>狅 ‹kK>| \#Ë%͂ͼ͢ƒË͈D)X)****X9@á;|@á;|^;t̓̓Z͋áá^͋̓r)^;t̓"\;Rt^͋^;t þͦþͦ;ûKӋ̻͂wK#ڋС;ùIN#ˉ^͂߿̉^wK^#;I#NӋ͂ߋ~̉^wK# ڋV#V;I#ʋӋ͂~̻wK# #u^͋\;Rt^͋^;t þͦþͦ;KӋ̻͂wK#ڡ;J#Ӌ̻͂wK##u^͋\͋%?̓"̓!͋͋>^;t þͦþͦ^;u`;uOb;ud;uy.d|PP.`|PPPQ%y.f|PP.b|PPPQ%y.h|PP.`|PPPQ%y.j|PP.b|PPPQ%y.`>Ӌ|͂ͨڒ.b6Ӌ|͂߿ͨʑ.d6Ӌ|͂߿ͨ‘F.f6Ӌ|͂߿ ͨ‰Fhn6Ӌ|͂߿ͨ‰Fjn>Ӌ|͂ͨv¿ͨ~¿ͨ̓3͂ͬ߿ͨӋ͂ͬ߿"ͨþ‹ͨľ‹ͨ̓3͂ͬ&ͨ͂߿ͬ*ͨw?*ľ"w?þ¿ͨľ ¿ͨ̓3͂ͬ߿.ͨӋ͂ͬ߿2ͨþ‹ͨľ‹ͨ̓3͂ͬ6ͨ͂   ͬ:ͨľ.rͦľ6rͦ&ľ.wͦ&ľ6wͦ"ľ2rͦ"ľ:rͦ*ľ2wͦ*ľ:wͦPþͦTþ"ͦ̓$Xã¡Zã¿Pþ&ͦTþ*ͦ̓$Xã¡Zã‹͂w\͋;\͋͂w\͋;\͋^͋y.b|PP.f|PPPQ%y.d|PP.`|PPPQ%y.b|PP.j|PPPQ%£¡;| ¾?y.b|PP.f|P>PPQ%y.h|PP.`|P@PPQ%y.b|PP.j|PBPPQ%@ģDy.`|PP.d|PPPQ%y.b|PP.f|PPPQ%y.b|PP.j|PPPQ%£¡;| ¾?y.`|PP.h|P>PPQ%y.b|PP.f|P@PPQ%y.b|PP.j|PDPPQ%>ģBey.f|PP.b|PPPQ%y.`|PP.d|PPPQ%y.j|PP.b|PPPQ%£¡;| ¾?y.f|PP.b|P>PPQ%y.`|PP.h|P@PPQ%y.j|PP.b|PBPPQ%@ģDġ;>>ģ¡;BBģ¡;>|>ģ¡;B|Bģ¡;@@ģ¡;DDģ¡;@|@ģ¡;D|Dģ̓zþͺ߿Ë־͜ͺ΋ȁFͨͺ͜ͺͰJͨߋͦͦ͋%Ã<͂d͂͜͸͢Nā>@$Á?͂f͂͜ͼ͢!Á͂f͂͜ͼ͢á\;ûuK>huJ #u͋>Zt^͋>ôt`͋>tb͋d͋>h \; h͋y.`>狅|Pē.b>狅|RġTġVē.^>狅|Xĸ .`>X狅&lXģZġ;Z|Zĸ .^>X狅&l\ĸB.\>\狝j;\u\;uK;ºtJ##u>\狅 ‹k¡Zģ^ġX@ .\>`狅&lÓ.^>`狅&l+Pģbē.`>`狅&l+Rģdġ^;û~K> uJ #t6> |l; \<j#ãá\;t& >`狅&l%>l͂ͼ͢¡h;ûuK .`>`狕&l;\uH#Ëڑ.^>`狕&l;\^uK##u F^h;ûuK .`>`狕&l;\tHV.^>`狕&l;\^tK #^#u}F̓k&%?ËãÓ̓q&Ëؙ  Ò̓GbTģdVģ> ~K>@}J##uKá`ģáãfġãh̓B4hã̓5̓4̓z̓WNã`ġhģáfģ͈D)X)****X9`@`ġ^;`|N^ZģXĸy×>狝|;XĺuJ;XĻuK ڡ;ZĺuJ #u͋ .`>X狅&lXģZġ;Z|Zc`\;u͋̓u#á̓͋^;jĻuK>!uJ#Ӌء`;jĹuI>"uH# #u;4tƒ̓=\4á\;t"jġ^j£l£̓pȺ$͌ ԡ^;}K>$tJ##u̓ӡ^;»uK>"uJ##uء`“\£j̓F^;»uK>!uJ##u`¡b\! ^;t \`;»uK^;ºuJ#Ӄ>!uK>"uI ##u)̓p0Ⱥ$͌̓ ̓:̓T̓p̓w;\ӡ`;»uK>$tJ##u̓ҡ`;t3b̓pRȺ$͌̓ ̓:|Ⱥ$͌̓ ̓;\4J̓\^;\t@¾lͺpͶͼ6ͨ@¾lͺtͶͼ6ͨ̓|º$͌̓ ááááãn¡ãp¡^;4t tģvģ̓#̓!>$t͋^;\tȾ6ͺ:ͨ 6¾ͺ:ͨ͂^͂͜ʹ͜ȁ6ͬPͨ͂Ŀ:ͬTͨ̓$XãZãƒ\£̓#̓!tġvġãã^4͋^;t̓Qѡáá^;4t̓=^4;tãn¡ãp̓=ããы+n#}͂6ʹ=^͂͜͜Ͱ͢j‹+p#}͂:ʹ=ͬ͢l̓=ããСl£xĸj£zĸn͂|+^͂͜6ͼͰ͢Ëp͂+^͂͜:ͼͰ͢Ë͂^͂͜ʹ͜  ȃͬPͨ͂ċͬTͨ̓$XãZã̓#̓!|@|ġz;||T@áx;|5͋f¡h¿X¾ͦ̓Q_`;\t7~ľͦ̓\T¾ͦ̓Q_l.j“=̀̀$͌̓ `;\tO<ã<á^>ûȺ$͌̓ ̓`ȸ0͍uDƸ0͍tJJ͍tI##tn̓Q_l.j.`=̀$͌̓ ^<ã<Ó>ál.j“=̀̀$͌̓ `<ã<á^>ûȺ$͌̓ ̓`ȸ0͍uDƸ0͍tJJ͍tI##t`<ã<á^>;\t# ɺ^͌~ľ,ͦ̓\ͦ̓'0ɺ^͌̓\@xͺlͼ<ͼͨ̓^;t @ɺ͌Fɺ͌`;\t<ã<á^>ûĸL̀$͌̓ ^<ã<Ó>û^¸l̀x̀$͌̓ ̓``;\t ɺ͌ɺ͌b<ã<á^>ûĸ̀$͌̓ ^<ã<Ó>ûɺ$͌̓ ̓`DƸ0͍uJ˻J͍FuH #u ٺ^͌ƺ^͌^;\»tK;ºuJ#ӡ\;»tK##uPQ%̓Q_\d¡^d£d¡\b¡^b£b;\t̓*̓In͂b+^͂͜6ͼͰ͢p͂d+^͂͜:ͼͰ͢ľXͦ^;\t̓&\̓d+^.jb“=̀̀l.j“=̀̀̀$͌̓ ̓:ĸ|̀$͌̓ ^;\»uKӻDƸ^͍tI##u̓p^;\t-PPQ%^;\t6> u,̓pɺ$͌̓ ̓̓̓̓ʺ$͌̓ ^;\t!> u̓:<ʺ$͌̓ ̓m`;\t4fʸ̀̀͌^Ļ>"3>!>>"\ġ`;\»uK^;ºuJ##u>"`;\t̓p(ƺ$͌̓ >b;\t `\£j^;\tI=0͍͌u6̓plʺ$͌̓ ̓DƸ0͍uJJ͍uI #t>j;b~al;d~E̓`;\»uK^;ºuJ#ӡ\;»tK##u ʺ$͌̓ ̓:ʺ$͌̓ ̓̓*̓6̓\;tTPPQ%^;tPQ%b;»uKf;ºuJ ӡh;»uK #uPQ%j;t6PQ%`;t$̓ʺ$͌̓ ̓:PǺ$͌̓ ̓`f£h£Xͦ^;Œ\͂ͨ̓&̓r̓ʺ$͌̓ =͕̓:(˺$͌̓ ̓̓pL˸0͍uJR͍uI #u̓\; Ȼfʸ̀̀͌`;t$̓X˺$͌̓ ̓:PǺ$͌̓ ̓`>"3>!Ëڑ>>"\ċ>þ?þ?̓#þ?þ?͋ľͦ.^\hӻˋ̀=^hْ̀͝=͹ͩ͞ͽͥpͨC͂ʹx͉ͨ͋*GAGSGjG͋bľdċ?bڋ͋bأbġdأd͋bľdċ?dڋ͋̓zb͂͜ͼd͂͜߿͜ͼȂ͢ċxͺ͜ͺͰ͢ġģbġģd͉͋GGGH͋?ڋ͋أأ͋?ڋ͋͂͜ͼ͂͜߿͜ͼȂ͢ċxͺ͜ͺͰ͢ġģģ͉͋HHH͋͋+ģ͋+ģ͋b>d;}2̓˺$͌̓ ̓:˺$͌̓ =͍͌t͋.\>ĉJ .^>J .`>J #bċ#u,d+ãġ^=̀͌@ġ;}䓣ġdġ^^ģĸ.\>D‰J ˻ċĉ^= Vщ^^^= ^F>牝J `FË^^= СbF^^= ^n>牝J Fă>|;) ;|^ċȸB>牍j͋ġġ^ãËۓċP͂>N狝͂͜͜ͼ͢ċ߿ͺͼͨ͂rd͂ͼ͢^͂ʹ͢ġd; ã><|K>-J #u \Y>.|K>ÇJ##u ^0>È|K>J##u `bġ;t .\>狝&l;Dta.\>狝J ;DtC^ģġ.ģ\̓G̓u#\ġ;u.^>狅J  .^>狅&lĸPPPPPPPPPQ%\;~^ģġ.ģ\̓G̓u#^ĸPPPPPPPPPQ%\;~^ģġ.ģ\̓G̓u#\ġ;u.`>狅J  .`>狅&lĸPPPPPPPPPQ%\;~h^ģġ.ģ\̓G̓u#   ^ĸPPPPPPPPPQ%^ãx+^áģģ͋̓J͋^;t5ľͦċ޾ͦ .\>F+VڋË͂ͨ.^6F+VڋË͂ͨ‹Ӌ͂͜͸̻sK‹ˋ͂͜͸̻sK##tͦͦsƾwͺ͢xzÃƾͺ͢xz}PP .\P.^PxPzPPQ%>̓p(ƺ$͌̓ ^r»>̓=;ht ˺$͌̓ =;jt ˺$͌̓ =t  ̺$͌̓ =t ̺$͌̓ =4uJ^;ĻuK##u4̺$͌̓ =4t̓L̺$͌̓ =5uJ^;ĻuK##u4̺$͌̓ =5t̓^̺$͌̓ =Ft p̺$͌̓ =Gt ̺$͌̓ =9t ̺$͌̓ = t ̺$͌̓ =;`t ̺$͌̓ =;nt ̺$͌̓ ̓:==̀̀$͌̓ ̓̓\͂͜uͦxͦ4̓*̓6̓̓Z̓\%? ̓pͺ$͌̓ ̓DƸ0͍tJJ͍tI##u̓p̓6ͺ$͌̓ ̓>B^>DX̓:>B^>Dv̓p̓}ͺ>+=͕>F~ģġ껞͕͘.\\J PPPQ%ģġh껨͕|͔ӻ?7͕ڸ.\×ӋJ ͔͕ڑ.^×ӋJ ͔͕ڑ.`×ӋJ ͘B|ġ;|}͕͔ӻ͕ڸB.^×Ӌj͘Bá;|̓Z껠͙͙껠͙ģġh껨͕͔ӻ?7͕ڸ .\×Ӌ&l͔͕ڑ.^×Ӌ&l͔͕ڑ.`×Ӌ&l͘Bá;}껠͙ӻ͕?7 ͕͙͘ĸ͕͔ӻ ?7$͕ڸy.\Ë͕?70͕狝|͔.?7@͕.^Ӌ|͔=?7N͕ڒ.`狝|͔G?7V͕狝R͘Aá;|V^͕̓͘Z껠͙̓Z̓!Wź͌ žͦ>~̓+Zź͌>t ̓FV>~̓!Wź ͌$žͦ> ̓+Zź(͌> ̓FV>~Ÿ̀̀ŋ̀j̀ ̀^ڋF̀(̀|͌ٺ͌̓],žlͦ(ź͌̓]0lͦ߿,ž ͺͨ׋$ͺͨͲ@ͨ͋̓:rκ$͌̓ ̓̓:θ͍uJ͍uI ʻ͍uJ ѻ'=͍uI ʓ͍uJ ѻ͍uI #u͋θ͍uJ͍uI ʻ͍uJ ѻ"=͍uI ʓ͍uJ ѻ͍uI ʻ͍uJ #u͋͋žͦ468ź:͌͌>͌>4tBŋŹ= V:͌.=^ډFF͍t<>6t&̀͌^CŋË^= ͌6 4/=:͍tq>8t5˻źF͌Ӌْ̀>͌Cŋӻ͌68E/=:͍uJ>8uK##u 4/=:͍sJ˻:=^ًF͍vK##uٸ̀͌@;.=:͍uJ>6uK##u44>8uK>4uJ#Ӄ>uK##uBźJ͌>ŋ̀‹͌F=ͥNͨ=ͥRͨt 4>4uK>uJ##u<>8tRžNͲͨ"=ͥͨt 4>4uK>uJ#Ӄ>8uK##uSŋӹ= :͌0=^ڋF͍vKû9=^ډFF͍sK#^#u<t͋͋ź͌==ûBŋŹ^= ͍NtI$=Ë^NN^= ͍NtI#N#u^N= ̀͌@$=ûBŋŹ= ͍t  @͋VźB͌=0͍͌t0哣Ã> uK\;Vź}J##u θB̀͌͋> t̓\;Œ͊ݲ> tX@XŻ0ú$͌̓ >H>m>tN>VuYVHVšXHXŻBŋVŋ= ͌>+^>ûƺ$͌̓ >+`> B#|>0}K>/tJ#Ӄ>.tK#ڃ>"tJ#Ӄ>'tK#ڃ>9~J>A}I#ʃ>=tJ# Ӄ>Z~K>a}I# ʃ>z~K #tt0ú$͌̓ >+^>û`=0͍r哣ZŋZŃ=͌0øB̀͌X@XšV@V>Xt͋̓:źB͌V͋ .^p\͌䓣`bźd͌h͌>`t κ͌>`ur\ŋbŹ= ʺd͌ =^ڋF͍tAb7`=d͍r哣ZŋZŃ=͌dŸh̀͌b@bš`H`hź͌̓].^\h=^h͝=͹ͥPͨ߿@¾lͺ~ͼͨ׋Ͳͨ͋  ͍uJ͍uI ʻ͍uJ ѻ'=͍uI #u lľͦ͋θ͍uJ͍uI ʻ͍uJ ѻ"=͍uI #u lľͦ͋θ͍uJ͍uI #u lľͦ͋θ͍t lľͦ θ͍t lľͦlľͦ͋l$nPpPrPtPlPQ%͋^>B>D̓Q_\nŋءbpœrţt̓^>C>C\>D͋vvPQ%^<ã>͋̓_>>+ OnCnx%\|9 D= >Ku#p IQ_T6n^&. :P}n_`>O  Xp q F $ *$ J $LUmKh}Ow2<(=]NN`Z]_a*dIrLusZ=zb|!R!\"p#"S$"y##g%%I&.&k&q&&) 'B .) ) Z* B4 WN&64 * E5 ( D) X) * * X9 r) "/ 0 1 ., . 3 W3 ]4 4 5b +5l 5 8p 8f /8 8\ GFbET'w;;$<`\<(Q"D?pA<AF+D DFG*GAGSGjGGGG GHHZHdHnHHJ"KrK?NK2NOX+OySZ'!WL'+V$'+ZV'FV.'](]WQ'Z'\(]P(]F(^@_Jڋ. +=r^_+бҋWV-P@X.  _^&VW_^[VW67ONOFFFast redraw is Display ON Display OFFActive grid is # X =h Y =CADDRAFT Help Disk,WAIT4ABORT JOB ? Y/N HYNy TStep size: X=Cf Y=pNew X ? (1-5000) @ X=NEW Y ? (1-5000)  GNVLz@Grid too smallCP5.EXECP2.EXE CP3.EXE,CP4.EXE8Insert D in drive BTHit any key when ready pFeature not included@' 44.eSpacebar to stop redrawWait for redrawz{'Select PLTR (plotter) or PNTR (printer)4Enter scale, , then STRT %VBtn1-move plot window; Btn2-pick # ofplots, P to start33Kz Plotting will require sheet(s)Continue (Y or N)?7 Plotting will take approximately minute(s) and require$PRINTER%I4PLOTTERB!|D#1J#2PPlug PLOTTER into COMM port pTurn on | then press any key  and outline box? ? Include messagesY for yes, or any keySheet9 ofF Communications error detected"Make sure printer is on & cable is&@connected; Hit any key - restart PLOTj:pABORT PLOTTING? (Y or N) Unplug PLOTTER from Comm Port #1%Reconnect input device, then any key "Insert CADDRAFT Disk 'A'in Drive A'FILE SHOULD BE SAVED BEFORE CONTINUING!,Hit A to abort PLOT, or any keyPAVa'\Insert CADDRAFT Plotter Disk in Drive A#!Cannot accept text. Out of memoryPress any key to continue*~ CPINFO.EXE OUT OF BOUNDSMEMORY OVERFLOWINTERFACE FAULT"PRINTER NOT READY8PLOTTER NOT SELECTED PBAD FILE NAMEbFILE NOT FOUNDtDISK IS WRITE PROTECTEDDISK IS NOT READYDEVICE I/O ERRORDIVISION BY ZERO SYNTAX ERRORLAYER OVERFLOW DOS Error # Hit any key !DATABASE TRACE FUNCTION? (Y or N):TURN PRINTER ON & PRESS RETURN\ENTER LAYER #: START,END:z ENTER CODE #: START,END:LPT1:LAYER=CODE #=OP=Y=LAYERMCODE= CELL DATABASEOP =Y =CELL DATA ARRAYSCLAST= CELL #=(NAME IS 4# OF PLMTS= DCDB START=RCOX=ZCOY=bLCELNUM=n = vSyntax errorFTFEETFOOTMILMILSININCHINCHESMCMMM$ffP{&>W  3_ ! t= ! t0 !"" !>#u$$,@t<wբ 3; = @( ! '! %; (  J+С Љ +֋܃;s3Ҵ!  '!) u& ; (  !> t"' ! ui>  Ŏ&- u[. ݹ3+ع+;33ь+ȁv+3% !3P Error in EXE file $ Program too large $ Cannot find A:BASRUN.EXE Enter new drive letter:    SETINT CPSCALE RESETINT`! #@%`')+-/1 O5`79;?A C@E`GIKMOQ S@U`WOR 15:LOCATE N6,19:PRINT DLX:IF INIT=N0 THEN RETURN 2990 LOCATE N7,19:PRINT" ";:COLOR 15:LOCATE N7,19:PRINT DLY:IF INIT=N0 THEN RETURN ' '*** GET AND CHECK USER'S DBU *** ' 3000 IF VAL(DIS$)60 THEN 3015 'DBU OUTSIDE LIMIT CLOSE #2:OPEN "CP.DBU" FOR INPUT AS #2 FOR Z=N0 TO N2:FOR ZZ=N0 TO N6:DF$(Z,ZZ)=DBU$(Z,ZZ):DBU$(Z,ZZ)="":NEXT ZZ:NEXT Z 'CLEAR SPACE TOTAL=N0:NOMORE=N0:DBU$(N1,N0)="D" 'SET DEFAULT VALUE Z=N1 WHMZ]/( 1  " )h$Eh}\&w%S%$.b.@EPq|bmD@ @ @ @ . .8UE@? ,",$,&,(, *, ,,.,0,2,4,6,8,:,<,>,@,KB,D,F,HH,BJ,E .L,͌!ʺ =ºP,͌ںT,͌ =ºX,͌O=\,͌0.+͌6.+͌<.+͌B.+͌H.+͌N.+͌V.`,͌",d,>"3>!Ëڋё>>" ,f,B,>B,P ,Ph,PL,P0k ,;h,t8CD,P ,PF,PSj,Pl,P@,PSl,>j,}!̓,z.n,͌>"d,3>!> ,d,",r,=+Ӄ>r,<J##ut,ͅ",r,r,r,+",x,>"̓ ,\,z,͌0,~,",,̓62,~,",,̓6̓̓$",;,u;",;,ug+̓s̓m",;,u̓",;,t̓T ̓̓,\,z,͌4,~,",,̓6*,>5̓滄.͕̓̓.,͍uJ.͍uI #tA.,͍uJ.͍uI #t̓ ̓ ̓ ,,,*,>5̓滸.͕",,̓ ,,.,͍t ",,.,͍t ",,,,͌ӻ.,̀ˋڑ̀.̀,͌>"",,3>!>,㻜,㻞,㻠,㻢,㻤,㻦,㻨,>,u,,͌>"̓r ",,Wl,;,|,,͌>"̓ ",,0>"0,>B",>D*,>5.͕.,>5滌,͕͋̓ ,,,*,>5̓/͕",,̓ ,,.,͍t,͌",,,,,͌ӻ.,̀^ډFF̀>/̀º,ً͌ЋF̀ˋڑ̀.̀,͌>"$,,",;,t ,,{3>!˻,>̓.,>5滰,͕,,>5F/͕̓*,>5Z/͕̓̓.,͍tJ.͍tI##u >"",,>B)>D*,>5n/͕.,>5滰,͕>"͋P>3>R>1,,P ,Pk/z,͌z,P2,P",PPk/z,͌z,P4,P",PPk> ,@. ,>r, ,B ʓ.",>r,牍B .$,>r,牍B r,@r,>r,~l,,",O. , ,B Pr,PH,PSB. ,>r, ,#ʓ.",>r,牍#r,@r,,;r,}͋\,z,͌6,~,",,̓6~,>B,>D͋\,z,͌8,~,",,̓6~,>B,>D͋z,P~,P,PPk͋. , ,B P,PJ,PS͋. , ,B P,PH,PS͋̓̓͋",",,@,>,~,@,>,~͋̓͋=,͌.͍t,;$,tCڋ",= ͌It =͌,Qt =͌,哣,&,;,u<>,uK",;,uJ##u/=%,3=!,,+£,̓ ,>B,>D8>,uK",;,uJ##u/=%,3=!,,,̓ ,>B,>D͋.,͌, =,͌.͍t.,>5,;$,tCڋ",= ͌It =͌,Qt =͌,哣,&,;,um;>,uK",;,uJ##u/=%,3=!,,+£,̓ ,>B,>D1>,uK",;,uJ##u/=%,3=!,,,   ,>B,>D>, t ,,͌͋>,t .,͌͋>,*uKӻ.,͍uI#ʡ",;,uK##u.,͌/͕̓̓͋>,t[=%,3=!K,,䓣,>,}?,J,= ͌,>BӋ,>D˻0͕>B>D",;,uK>,-tJ#Ӄ>,0}K>,9~I ##t$,;,uK>,.tJ#Ӄ>,0}K>,9~I ##t>,uKӻ,#}H#ƒ>,~K#؃>,}J##u滆,͕̀͌B,;,~I>,-}K ١$,;,tI>,.uH# Ã>,:~K>,A}I# ȃ>,Z~K>,a}H# >,{~K ؃>,uI>,:uH# Ë~J# #t滆,͕,̀͌̓>5ӻ0͕>5滪,͕>50͕̓̓͋̓>5ӻ0͕>5滪,͕>5T0͕l,͔f0͕̓̓͋",;,t,W ,;,t ",,B,;,|,0,+",P",,,,;,|,̓͋>,>5",;,t >B>D!>Bӻ6>D˻0͕>B>D滔0͕͋=,͌.͍u͋ ,r,)ʋӻX,͌Ar,>r,~̓ ̓N*,>5>B",>D滠0͕̓,,͌.,>5͕>,>50͕0̀,͌3>!˻>>".,͌,0,͌,PT,PP,P ,)P,P,Pk ,;,t,,,P ,Pk̓,0̀z,͌̓6̓ >,6,,,P ,Pk2,~,",,1z,͌̓6̓̓ ,, ,r,)ʺ= ͌Ar,,;r,}׋,) ,)͌*,>5>BA>DD1͕6,>B",>DP1͕̓.,͍tJ.͍tI##u ,,̓N",,>5滆,͕̓8̓N>B",>DӋ*,>5滄1͕,͕1͕.,>5,͔,,Pؙ; ,t , P,@,>,P ,P,,̓͋>1,,P ,Pk",~,,1z,͌̓6*,P ,Pk$,~,,1z,͌̓6~,",, 2z,͌̓6,,P ,Pk,#"=22̀z,͌̓6*,P ,Pk,GZ2z,͌̓6͋.,͌, ,,.,P ,Pk,,,r,),̀͌,>B",>D,K/,P,P",PPk",,, ,,.,͌\,;r,t<,Q+ˋ‹ѻ\,= ̀͌,P,P",PPk",,,, ,f2,̀͌r,@r,,;r,|1>,|(,\,Pr,P",PPkr,@r,>r,~ރ>,P̓H͋(,P ,Pk~,,#",;,t l2z,͌̓6,;,t 2z,͌̓6",;,}K,;,~J##u 2z,͌̓6͋=,͌.͍t,哣,>,u1>,`~K>,{}J##u,=,͌2,= , ,;,t̓ ͋,ؙ>$,",,,",;,|+,أ,̓",;,|9",)ʺ,͌,F)͌͌F+,̓͋,,,.$,,),͌,;,}},;,+",,),)ˋ͍w,,),͍w/,),)͌,,.$,,w,)ӻ,͌͋̓ ,,,-͌>"3>!Ëڑ,>̓(,>5 ,;,t̓2͕.,>5滌,͕>B",>D2͕,>,u-,͌>"̓r ",,z,㻞,㻠,㻢,㻤,㻦,㻨,l,;,|-,͌>"̓ ",,!-㻾,->-uB.",>,-#>-u3̓,,P ,Pk 3z,͌̓6̓>"",, ,;-t̓L-+",- ,F. ,r,B .",r,B .$,r,B r,@r,-;r,}̓o - --------- -"-$-ӻ(-=ͣ,- ,.-̓;3",;.-t̓3z,͌̓6--0-",7. ,r,\(.",r,\(r,@r,0-;r,}-2-",Y. ,r,%.",r,%.$,r,%.&,r,%r,@r,2-;r,}",3 . ,r,(.",r,(r,@r,>r, ~á",Qr,ˁD%ڸB. ,#ف%Ӌ|&'@r,>r,A~",L. ,r,t(.",r,t(.$,r,t(r,@r,>r,~",4-ü(B4->4-~ݻ6-㓻83͍u/>",,P ,Pk̓@3z,͌̓6",,q>"̓o>B>D*,>5ӻZ3͕.,>5ˋ,-͔>5h3͕>5(͕(͕>5n3͕>5(͕v3͕͋>" ,,(,>5;,t̓~3͕.,>5滰,͕>B",>D滒3͕ ,;,t>!,3>>!   ,3>̓!>>͔,͔,͔,͔,͔,͔Ӌ,͔,͘:-",B.",>,狝#;",}̓LB.",>,狅#-->-͔,͔-͘+",<- ,L>. ,>r,ӋB ͔ڒ.",>r,ӋB ͔ڒ.$,>r,狝B ͘r,@r,<-;r,},@,:-;,|5>->Ӌ>-͔͔͘ ,"-> -͔ -͔-͒-͔-͔-͔-͔-͔-͔ˋ-͔ -͔"-͘$-͕3͕(-͙@-",7. ,r,\(͕3͕.",r,\(͙r,@r,@-;r,}-B-",Z>. ,>r,Ӌ%͔ڒ.",>r,Ӌ%͔ڒ.$,>r,狝%͔>r,Ӌ%͘Br,B-;r,}",6> . ,>r,Ӌ(͔ڒ.",>r,狝(͘r,@r,>r, ~",J>>r,ӋD%͔ڸB. ,ÖӋ#͔%͔|&͔'ˋ͙Ar,>r,A~",G>. ,r,t(͒.",r,t(͒.$,r,t(͖r,@r,>r,~",>>4-Ӌ(͘B4->4-~޻836-͌ˋ͙>"̓L ,;,u",;,u ",;,u>,t.̓,,P ,Pk,3̀3̀z,͌̓6<,P ,Pk~,,33z,͌̓6",,,,)˻,V+ӻ\,= ̀V͌)r,+,)Ëً",= ͌@r,>r,~͋,)ӻ.͌",u`=r,+ˋڑ͍sI{=^ڋF͍NvI#N#u =͌,)r,+^ڋF̀͌Ar,>r,~̓8>Bӻ>Dˋ.,>5D1͕>B>D,͔Pؙ; ,t ,P,",,P,; ,u,,̓~,,3\,= z,͌̓6",;,t,>%ӻ,>$͋ ,,͂D-ͨ*,>5̓4͕.,>5滌,͕*,>5 4͕̓.,͍tJ.͍tI##t*,>5̓84͕",,̓ ,,.,͍t ",,,=ͣH-",;H-~Kx,;H-}J #u#,,>5̓J4͕x,͔̓̓v$,J- ,3 ,.L-r,+(͌L-@L->L-~סr,@r,J-;r,}H-=$-͌ ,.-̓;3",;N-u>B)>D*,>5ӻX4͕.,>5ˋH-͔>5h3͕>5(͕(͕>5n3͕>5(͕v3͕̓_(",;,t,,>5̓`,͕̓e"*,>5̓f4͕$,,̓ ,,.,͍t ",,k,4= P-",P-ʓ=; ,u,=ͥD-ͨt>B)>D*,>5滆4͕,͕4͕.,>5D-͒̓e"͋:,>5 ,;,t̓滠4͕>B",>D滠4͕4D-u,͂R-ͨ,͂V-ͨ",Z-ء,\-B.",>,狝#;",}̓LB.",>,狅#+",^- ,x. ,>r,狅B -",;-~K>- uJ #t=>- }K-uI##t.",>r,ӋB ͂`-ͨڒ.$,6r,拜B ͂߿d-ͨ׿R-¿4D-ͪͬͨ͜͜V-¿.ͼͬͨ4ʺsJ4ʹvI #u ,Z-B.",>,狅#r,o4d-ʻsK4ʺvJ #u ,Z-B.",>,狅#r,/.",>r,狝B ?͂`-ͨD-ͺͨ4w ,Z-B.",>,狅#r,`-ڸ.",+",>r,狝B ͂͜͜ދͰ4̹sI.ͪ4̻vK #u ,Z-ڸB.",>,狅#r,m`-ڸ.$,+",>r,狝B ͂͜͜ދͰ4̹sI.ͪ4̻vK #u ,Z-ڸB.",>,狅#r,r,@r,^-;r,|y",;Z-u,,,@,\-;,|",;Z-u-̓,,P ,Pk4z,͌̓6̓",,k,h-",PB.",>,狝#;",}1̓LB.",>,狅#+",j- ,. ,>r,狅B -",;-~K>- uJ #t>- ~K>-@}J##tc-%͂D-ͼ͢l- ,;l-l->l-l--l- Ӌڸ. ,>r,牝B >- }K-uI##u+.",>r,狝B ?͂`-ͨD-ͺͨj.",>r,ӋB ͂`-ͨڒ.$,6r,拜B ͂߿d-ͨ׿R-¿4D-ͪͬͨ͜͜V-¿.ͼͬͨ>- }K-uI##u).",>r,狝B ӻ`-=͢ ډB 4`-=͢.",>r,牝B d-=͢.$,>r,牝B r,@r,j-;r,|̓o,@,h-;,|͋"=.",$,+= ; ,u H.n-͌I'=.",$,+= ; ,u B.n-͌.",$,+n-͌n-4= r- ,;r-ur-+",= ͌.t-͌ ,<r,+x-͌̓<",;|-tr,+t-͌r,r,@r,>r,~.t-͍t ",,F"=.",$,(= ; ,u H.n-͌I'=.",$,(= ; ,u B.n-͌.",$,(n-͌n-4= ~- ,;~-u  ~-+",= ͌.-͌ ,<r,+x-͌̓<",;|-tr,+-͌r,r,@r,>r,~.-͍t ",,6+t-͍uJ+͍uI ʻ+͍uJ #u ,-",-+t-͍t".",",+=4ͽͥ-ͨ+t-͍t.",",+=ͥ-ͨ+t-͍t".",",+=4ͽͥ-ͨ+t-͍t".",",+=4ͽͥ-ͨ+t-͍t".",",+=4ͽͥ-ͨ+t-͍t.",",+=ͥ-ͨ+-͍uJ+͍uI ʻ+͍uJ #u ,-",-+-͍t".",",(=4ͽͥ-ͨ+-͍t.",",(=ͥ-ͨ+-͍t".",",(=4ͽͥ-ͨ+-͍t".",",(=4ͽͥ-ͨ+-͍t".",",(=4ͽͥ-ͨ+-͍t.",",(=ͥ-ͨ.", ,+=ͥ-ͨ(=ͥ-ͨ-;-t--ͺ-Ͷ-ͼD-ͨG ,;-t 5-ͺͨ ,;-t 5-ͺͨ--ͺ-Ͷ-ͼD-ͨ ,;,t>B)>D5͕D-͒͋",, ,H-5-͌>B3>D(,>5P5͕̓1",;,u,,P ,Pk~,,)f5z,͌̓6,-",[ ,,\,P4,P",PPk̓,=,͌0͍t ,--),͌ں0= ; ,u= +",Ëْ= ͌.,̀˻,^̀>/̀º,͌̀^̀.̀,͌ں,͌>B",>DӋ*,>5滂5͕.,>5-)͕>B>D\,'= ͕̓m",;,u=,͌0͍u ,;H-u$,- ,< ,(.L-r,+Ӂ(͌<+͌L-@L->L-~Ρr,@r,-;r,} ,͂D-ͨ̓_(",;,t,,>5̓`,͕VH-=$-͌=,͌0͍u*̓e"",;,u'=,͌0͍u̓^̓T ,-Q̓T ̓̓,,>5滖5͕,͕*,>5滘-͕̓0,͍t ,- , uܡ-@--;-|~,,3\,= z,͌̓64,~,",,\,z,͌̓6 ,,,,̓ѡ ,,*,>5̓滮5͕̓.,͍tJ.͍tI##ta*,>5̓84͕",,̓ ,,.,͍t ",,,=ͣH-",;H-~Kx,;H-}J #u#,,>5̓J4͕x,͔̓̓vH-=$-͌ ,.-̓;3",;N-u$,- ,3 ,.L-r,<+(͌L-@L->L-~סr,@r,-;r,}>B)>D*,>5ӻX4͕.,>5ˋH-͔>5h3͕>5(͕(͕>5n3͕>5(͕v3͕*,>5̓f4͕$,,̓ ,,.,͍t ",,b,4= P-",P-ʓ=; ,u,=ͥD-ͨt>B)>D*,>55͕4͕.,>5D-͒͋$--͌ ,x,N->"d,3>!^ںn,N>d,",r,=+Ӄ>r,<J##ut,ͅ",r,r,r,+",x,$-=Ӌ",́͝сsKˋ=x,́͝тvK #t$,- ,0 ,.L-r,(.͌L-@L->L-~ڡr,@r,-;r,}ġ ,--",(5͌>"d,3>!Ëڑn,>d,",r,=+ӋӋr,́$-͝=сwK##ut,ͅ",r,r,r,́$-͝=сwt,3= - ,;-u-+",t,= ,͌ں6= - ,;-tٺ= ͌-J,= = ͌. , ,(,͌t,+-Ӌ= ͌",;-uxt,3= - ,;-t",-ã-",-->-~:-+",˻t,= ,͌ء ,;-t+هӋ= ͌.,͍u[,6= r, ,;r,u.- ,(r,+",,= ͌=ͥ-ͨsc,+r,Ӌ= ͌=ͥ-ͨw8.,͍u",= 哣r,>r, uK>r,+uJ Ӄ>r,-uK ڃ>r,.uJ Ӄ>r,/~K>r,:}I# #uH.-",(ظ .- (˻,^= ̀͌^KӋ= ͌D>r,,ur>r,/tKӻ,+",Ëْ= = ,́͝сuK##t%. ,",(5͍t ,+",= =ͥ-ͨ4v--Ͳ͜=ͼt5.==,͌ڸ. ,",(K= ͌̓;.-$,(-=ӻ,+ډ^ًV= ͌.͍u].-$,(ظ .-(= ͌.-",(--Ͳ=͌.-",(",= 0͍t ,̀͌.-$,(,= ͌|. ,$,(-=͌ء ,--j-- ,NL-;r,u>ظ.r,$,(x-͌ (n-͌̓<",;|-t-L-@L--;L-}r,@r,-;r,}>"",;-u .", ,(ӻ6̀= ,́͝͝сwK",(^ْ̀=.ͻ   wK ^#t.", ,(ӻ6̀=",(ْ̀͝=͹",́͝тs]----$,r,+", ,(^6^̀=-ͩ",(^̀=-ͩڑn ,(̀=-ͩ",(ْ̀=߿-ͩӺuJӻuK #t--ͳ--͝ͳсrr,@r,-;r,|/$-x-͌-n-͌̓< ,;|-t8,,>5>B>D6͕$-͕(6͕(͕̓46͕̓,,>5̓L6͕̓",.-a ,;N-t,,>5̓^6͕̓x,+N-=ʺ$-͌",N-N-;N-|,,>5̓滔6͕>"͋x-",= 0͍t+ڋËْ= ͌x-",= 0͍t+ڋËْ= ͌n-",= 0͍t+ڋËْ= ͌n-",= 0͍t+ڋËْ= ͌",|-x-䓣-n-䓣--;-tKС ,;-uI ;»uK #u|-",-",;|-uKС-;-|I##uʻx--= 哣-n-= 哣->-A}K>-Z~J>-a}I# ˃>-z~K #u-;-u ,|-j]>-@~K>-[}J##u - - ---;-tK-;-tJ##u ,|-",--͋-6ͦ-޾6ͦ֋-ͦ-ͦ,.",B.",>,狝#;",}̓LB.",>,狅#+",. ,. ,>r,狅B -",;-~y.",>r,狅B ..$,>r,狅B .>-~K>-@}J##t.-t.%?. , .̓?. ...r,@r,.;r,|S,@,.;,|6-ʻuK-ʺuJ #u,,,,$-͠,-͠,-͠,-͠,͋-tC ,; .t", .. .... .+...+.. .6-t .͂ͨ.͂-͜w.ͦ6-t .͂ͨ.͂-͜r.ͦ6-t .͂ͨ.͂-͜w.ͦ6-t .͂ͨ.͂-͜r.ͦ",; .u͋,,>5=t̓6͕̓=t ̓6͕=t ̓6͕= t ̓7͕=t ̓7͕=t ̓*7͕=3 >">"=4t̓@7͕̓=5uJ ,;,tK##u ,<? =5uJ>d,uK##u̓L,R7̀\7͕̀=5uJ>d,uK##u̓滒7͕=5uJ>d,uK##u̓滒7͕8=5uJ>,uK##u0,̓0͕.,>5滌,͕,,>5滴7͕=5uJ>,uK##u ,? =9t̓7͕̓==uJ",;,uK##u/̓7͕̓T ̓D̓*,>5滘-͕̓0? ==t̓7͕̓T ̓D%=>uJ",;,uK##u9̓7͕.,>5滌,͕̓T ̓*,>5滘-͕̓0? =>t ̓7͕.,>5滌,͕̓T =Ft̓7͕̓T =GuJ ,;,tK##u̓8͕̓ ,, ? =Gt̓8͕̓$*,>5̓08͕=͔@8͕̓̓̓L? ,;,t ,>%,>%͋ ,f,>"̓T8͕L,͕b8͕̓~8͕̓>#.,>5>1>>+d@`D,  X,65R$-sXm@T 4\]D( *qr  ]bDL9o:[ R ( N&2< L#8FH-6<MPiZXksX|;3hB!>x!6 c"_( e"](%M%4R$J(3(f&W193;B3rB\5|Br5B8B}6B8BF>F>xF:?y'?y?1yDDD BLDUȎ؋v& } u%IC.>} u$&GC&\.>&<.tЈGCv &.,v &...! t=...,ش!..(.*.$!.'!2~2&.!]0123456789UȎr&v & t&\&2rC>P]UȎsv &6 3 =} -= +3ҹ 0K}80u t C  2C>P]UȎsrv &6 33ҹ 0K}80u tC@  @ ?uC t2C>P~]UȎs]Ȏ>0>>_7!< tB<u;>u! O<+t <-t<0|<9È2G>P~ >P 6  %r`Ȏ>F3ۊ&8u .ãC |F tv  u 3 x&3 y& e!UȎhs]v &|>_*!< t5<u;>u! OI&2GA>P~v & >P iUȎs]v &|_!< tO<u u! OI<+t<-t <.t<0|<9&2lGA>P~>P Nv & wUȎ؋v&v&r & &̀ Ģ]QSPдX [YËv&=|=Hv&=| =PH < uF<-u F<+uF3۹63Ҁ8 t8 t80| 89CB9u U..>v&.v& t}&\&.GC^&w&5@^&&WG?.6.F^ &W.!^ ...Z! for existing name: B/.TMPJ/ already exists^/Overwrite ? Y/N r/Output file: :/This computer does not have enough memory to scale symbols$/A minimum of 256 K-bytes is required/ALL SYMBOLS IN THIS DIRECTORY 0 0Symbol 50 has not been translated to 1.40 format; can NOT loadX0 has more thanj0 layers; can NOT load0 0ABORTED20Enter drive letter for symbol directory (A or B): 0 WAIT 0:CADPLAN.IBM0SYM0No symbol on drive .1THIS DIRECTORY CAN ACCOMODATE 140 SYMBOLS ONLYH1 /T1Do you want symbol directory to be displayed ? 1Total symbols on drive P1 : /1(C) Copyright Personal CAD Systems - June, 1984+1This program scales 1.40 Symbol databases"2Recognizes (upper & lower case): #62FT IN MILS M CM MM ' ^2 onlyj2 #p2^Z = page down #2 ^W = page up#2^Z = page down ^W = page up2AB2Loading symbol 3LOADING3Input read error"3CANNOT CONTINUE......<3ENDD3END OF FILE READ ERROR ^3Old DBU #l3: r3 = z3 DBU3Writing symbol 3WRITING3,3SYMBOL 53 IS SAVED, BUT CANNOT BE INSERTED INTO THIS DIRECTORY3UPDATING DIRECTORY4Do you want to scale symbol $4 by using new DBU ? <4Enter DBU #: N4Enter 1 to \4New DBU #j4Enter scaling factor: 4. 4Scale symbol #4 by:4SCALING4Coordinates out of bounds4-@owz M3K 5SCALING FACTOR =/ 5 press to continue scaling other symbols{T5SCALE ALL SYMBOLSj5Press space bar to abort5 symbol 5Can't scale symbol 45Do you want to scale all symbols by using new DBU ? 5Scale all symbols6D6/ 6=6#6Current DBU is #,6, i.e. 86Any key to continue P6Press any key2b6Default DBU error ...... Searching for a valid one,6Error in CP.DBU file ..... can NOT continue!Є 6SYNTAX ERROR 6OUT OF BOUNDS6MEMORY OVERFLOW7DIVISION BY ZERO7INTERFACE FAULT.7PRINTER NOT READY D7BAD FILE NAMEV7File 1`7 is required to scale symbols, but is not on disk7File CP.DBU not found on disk 7 not found7DEVICE I/O ERROR 7DISK FULL7File error in symbol 8DISK IS WRITE PROTECTED8DISK IS NOT READY 48DOS Error #D8 Hit any key X8Error in ?f8 ..... can NOT continue!8Press any key to abort&>W  3_ ! t= ! t0 !"" !>#u$$,@t<wբ 3; = @( ! '! %; (  J+С Љ +֋܃;s3Ҵ!  '!) u& ; (  !> t"' ! ui>  Ŏ&- u[. ݹ3ع+Ḉ33ь+ȁv3 !3P Error in EXE f  ile $ Program too large $ Cannot find A:BASRUN.EXE Enter new drive letter: $BASRUN EXE= ͍t  @͋Tź@͌=0͍͌t0哣Ã> uK\;Tź}J##u θ@̀͌͋> t̓\;Œ͊> tV@VŻ0ú$͌̓ >H>m>tN>TuYTHTšVHVŻ@ŋTŋ= ͌>+^>ûƺ$͌̓ >+`> @#|>0}K>/tJ#Ӄ>.tK#ڃ>"tJ#Ӄ>'tK#ڃ>9~J>A}I#ʃRID,N0)33000! THEN WX=33000!-TXMAX! TXMAX!=(WX+SCRNDRWMAXX/SCALE!)-N1 TYMAX!=(SCRNDRWMAXY/SCALE!)-N1 IF (TYMAX!+WY)>33000! THEN WY=33000!-TYMAX! TYMAX!=(WY+SCRNDRWMAXY/SCALE!)-N1SETINT CPTRANS RESETINT`! #@%`')+-/1 O5`79;?A C@E`GIKMOQ S@U`W[]_a c@e`gikmoqR,PIXSET):RETURN 1536 IF CLRT(ALAY)=N1 THEN CLR=N2:RETURN ELSE IF CLRT(ALAY)=N2 THEN CLR=N3:RETURN ELSE IF CLRT(ALAY)=N3 THEN CLR=N2:RETURN 1630 WIN=&H3:CALL ABSOLUTE (SCRNDRWMAXY,N0,SCRNDRWMAXX,N0,WIN):WIN=&H2A:CALL ABSOLUTE (SCRNDRWMAXY,N0,SCRNDRWMAXX,N0,WIN):WIN=&H33:CALL ABSOLUTE (SCRNDRWMAXY,N0,SCRNDRWMAXX,N0,WIN):RETURN 1640 CALL ABSOLUTE (N0,SAVSTART,SMDRWBXLFT,N0,SMDRWBXRGT,MNUSDBXBTM,MAIN,SAVWIN):GOSUB 1397:RETURN 1650 WIN=&H3:CALL ABSOLUTE (SCRNDRWMAXY,N0,SCRNMAXX,N0,WIN):WIN=&H2A:CALL ABSOLUTMZ  " ) @EPq|bmw>@ @ @ @ 55<UK3333333333 ?34ء344B4E˻54͌4>"3>!>>"444>4P3P4P4P03;4tJ44H4P3P4PY4K4P4P4PY34̓->1>53>Bӻ>D5͕>53>B>D5͕3;4t+>B>DF6͕̓4̓f64͍tɡ3;4tW4哣4>4@~K>4C}I#˃>4`~K>4c}H# #uں4͌34f3>B3>D滈6͕̓64͍uJ6͍uI #u3464͌64͍uJ6͍uI #u3464͌Q74͍uJ7͍uI #tq 74͍uJ7͍uI #t34̓f03>B3>D3;4t,7͕̓A44̀4͌ں4͌34̓J7͕̓A44̀4͌̓̓3@.3>43B ʓ.3>4牍B .3>4牍B 4@4>4~443;.33B P4P4PYB.3>43#4@44;4}͋34̓f>5z7͕̓A64͍t44͌3>B,>D͕ 44̀4͌̓,͋3;4uKӻ4ȸ4͍^uK #u434͋4>BӋ3>D˻O= ͕>B>D͋4̓f >5滪7͕4͙>5͋4̓f4̓f͋34@4>4}~͋34334@4>4}~5@54;5}͋=4͌6͍t4 t6͌͋4͕͋65͌=4͌6͍t4哣5>5 t5͌͋>5t 64͌͋3;5tb=%53=!+3 55䓣 53; 5 5+35= ͌5>BӋ 5>D˻7͕>B>DR5;3  ~J>50}K>5-tI#˃>5/tK# ڃ>59~J>5A}I# ˃>5Z~K>5a}J# у>5z~K #t4͕5̀͌ >5̓7͕̓64͍ua4哣4>4@~K>4C}J#Ӄ>4`~K>4c}I# #u44͌̓34̓f>5z74̀4̀5͌343>!˻>34̓>57͕>5555>5t6>"̓ >54͕8͕̓̓̓̓̓>5>5uK3;4~J##t >5uK3;4}J##t 4;5|a>"4̓f >54͕"8͕5͔*8͕4̓f48͕4͔F8͕̓̓̓̓̓̓4;5}K3;4~J##t 4;5}K3;4}J##u̓ 555>5uB.3>55#>5uE>"4̓f >5^8͕4͕̓̓̓̓-̓3;4~ 3;5uk555+3 53-.34B ڋ.34B .34B B @,B %?"5.3$5$5 "5 @%B .3>4狝B #3;3t>4狅%&5?ٹ(5&5%*5(5,5,5 *5⒣.5%?05.5 054@4 5;4|.33B P5P4PY254565:5<5>5@5B5D5F5H5J5L5ӻP5㒻6͍t 8͌48L5͍t 8͌8L5͍t 8͌8L5͌D5T537y.34..34.4@4T5;4}D5V53Yy.34%.34%.34%.34%4@4V5;4}33 .343.3434@4>4 ~á3=4ˁD%ڸB.3#X5X-@4>4A~3Z53L.342.342.3424@4Z5;4}342B4>4~ݻ\5㓻8͍u?>"̓ >5滴8͕4͕̓̓̓̓-̓3;4~+74̀4̀`5͌3;4uk>"3d53>!Ëڑ`5>̓>54͕8͕̓3d594͍tJ9͍tI##u ̓̓v3d5>"ӻ>!ں`53>̓>59͕>5̓~>͔f5͔h5͔j5͔l5͔5͔Ӌ5͔5͘n53B.3>5狝#;3.33B P5P4PYB.3>5狅#55>5͔5͔5͘5+3p53L>.3>4ӋB ͔ڒ.3>4ӋB ͔ڒ.3>4狝B ͘4@4p5;4}5@5n5;5|r5>Ӌr5͔͔͘>25͔45͔65͒:5͔<5͔>5͔@5͔B5͔D5͔ˋF5͔H5͔J5͘L5͕.9͕P5͙t537y.34.͕.9͕.34.͙4@4t5;4}D5v53b>y.3>4Ӌ%͔ڒ.3>4Ӌ%͔ڒ.3>4Ӌ%͔ڒ.3>4狝%͘4@4v5;4}36> .3>4Ӌ3͔ڒ.3>4狝3͘4@4>4 ~3>>>4ӋD%͔ڸB.3ÖӋ#͔X-͔͔6͙B4>4A~3x53G>.342͒.342͒.342͖4@4x5;4}3>>4Ӌ2͘B4>4~޻8\5͌ˋ͙>"̓4̓f >549͙N9>U̓̓4̓f>53;4uK;4uJ #tE̓>5R9͕̓94͍uJ9͍uI #u ̓̓-u3;4}3;D5>1D5z53y.34.͑4@4z5;4}4̓f4͕x9͕4̓f>5滾9͕4̓f:͕4͕:͕̓4̓f̓94͍tJ9͍tI##tD5|5|5~53&43ʸy.3.͌A4~5;4}Ρ3434̓3564͌355|5;5| 34s534̀4͌ں4͌̓-̓,>5>1> >5̓4=;3t ̓fB:͕=;3t ̓fN:͕=t ̓fb:͕=t ̓fv:͕=4t ̓f滌:͕=5uJ3;d5uK##u? =5uJ3;4uK##tL=5uJ3;4uK#ڡ3;4}J##u+4>"̓4͕:͕̓̓̓? =5uJ3;4uK##u.34>"̓4͕:͕̓̓̓L? =Ft ̓f滾:͕=Gt ̓f:͕=9t ̓f:͕= t ̓f;͕4̓f;͕=͔(;͕̓  ̓>"3;4 L? ? 34>" >5̓fN;͕4͕X;͕4̓f滘;͕4̓f>5;͕̓355<ͦ5޾<ͦ֋5ͦ5ͦ453(B.3>5狕#;3tI.3>5狝#;3}J #t.33B P5P4PYB.3>5狅#+353.3>4狅B 5.3>4狅B 5.3>4狅B 53;5~K>5~J #t/3#5;3t5%?0535̓K55554@45;4|]5@55;5|<5ʻuK5ʺuJ #uf5h5j5l5͋5͠f55͠h55͠j55͠l5͋3#5;3tC3;5t350555555+0555+05535<5t 5͂ͨ5͂5͜w5ͦ<5t 5͂ͨ5͂5͜r5ͦ<5t 5͂ͨ5͂5͜w5ͦ<5t 5͂ͨ5͂5͜r5ͦ3;5u͋>g (#(#- "(Z-]f*27@AH k"< ,%R[\I L4s |} t ~xjyyK1y BLDUȎ؋v& } u%IC.>} u$&GC&\.>&<.tЈGCv &.,v &...! t=...,ش!..(.*.$!.'!2~2&.!]ڋ. +=r^_+бҋWV-P@X <.  _^&VW_^[VW67 5CDMINDST.BLD/5(C) Copyright Personal CAD Systems - June, 1984M5This program translates 1.30 & 1.35 File and Symbol databases to 1.40 format.:J6On which disk drive do Files and Symbols reside? (A or B) 6L6Translate (F)ile or (S)ymbol, (E)xit, (C)hange drive? (Enter F,S,E, or C) 6F6f6.DBF6S6s6.SYM7E1 7e7CC7c.7Enter name of symbol (.SYM) to be translated: ,N7Enter name of file (.DBF) to be translated: +~7Enter new name, or for existing name: 7TRANSLATING 7 7Enter new drive letter (A or B) 7:7Loading from disk8 has already been translated!&8 has.8layers 88System max isJ8- Can NOT translate!%b8Input read error - can NOT translate 8578T'8588Mm8598608END+8End of file read error - can NOT translate &8 Already exists - Overwrite? (Y or N) 9y9Y9Writing to disk29,89Translation complete!Y!V9Translate another file? (Y or N) B|9 uses the above Symbols - do you wish to translate all? (Y or N) E9(This is your only opportunity to automatically translate all Symbols# : used by (: - Answering (Y)es is strongly advised) F:OverflowR:Memory overflowf:Interface faultz:Printer not ready :Bad file name: not found .... hit any key :Disk is write protected:Disk is not ready:Device I/O error;Division by zero ;DOS error #",;- can NOT translate. Hit any key R;File <\; is required to translate databases, but is not on this diskL;drive. Be sure you have copied both files from the Database Translator disk;Press any key to abort Є>&>W  3_ ! t= ! t0 !"" !>#u$$,@t<wբ 3; = @( ! '! %; (  J+С Љ +֋܃;s3Ҵ!  '!) u& ; (  !> t"' ! ui>  Ŏ&- u[. ݹ3ع+ḙ33ь+ȁvặ3  !3P Error in EXE file $ Program too large $ Cannot find A:BASRUN.EXE Enter new drive letter: $BASRUN EXEFOR Z1=BCN+1 TO ECN OP=CDB(Z1,N0):DX1=CDB(Z1,N1)-COX:DY1=CDB(Z1,N2)-COY IF OP=8192 GOTO 3350 IF OPN0 OR (CDB(Z1,N1) AND &HC000)<>N0) THEN X=CDB(Z1,N1):Y=CDB(Z1,N2):GOSUB 2270:X=(X AND &H3FFF):STA=STA+ROTDEG  1/Unit,1 = 1# 1"/Fraction FT-IN,1 = 1",12 = 1' 1\2"/Fraction FT-IN,1 = 1/2",24 = 1' 1\4"/Fraction FT-IN,1 = 1/4",48 = 1' 1\8"/Fraction FT-IN,1 = 1/8",96 = 1' 1\16"/Fraction FT-IN,1 = 1/16",192 = 1' 1\16"/Fraction 1/8DA,2 = 1/8",192 = 1' 1\32"/Fraction FT-IN,1 = 1/32",384 = 1' 1\64"/Fraction FT-IN,1 = 1/64",768 = 1' 1\128"/Fraction FT-IN,1 = 1/128",1536 = 1' 1.0"/Decimal INCH,.1 = .1" .5"/Decimal INCH,1 = .5" .25"/Decimal INCH,1 = .25" .125"/Decimal INCH,1 = .125" .1"/Decimal INCH,1 = .1" .0625"/Decimal INCH,1 = .0625" .0625"/Decimal 1/8DA,2 = .125" .05"/Decimal INCH,1 = .05" .01"/Decimal INCH,1 = .01" .005"/Decimal INCH,1 = .005" .002"/Decimal INCH,1 = .002" .001"/Decimal INCH,1 = .001" .0005"/Decimal INCH,1 = .0005" 1.0'/Decimal FEET,.1 = .1' .1'/Decimal FEET,1 = .1' .01'/Decimal FEET,1 = .01' .005'/Decimal FEET,1 = .005' .001'/Decimal FEET,1 = .001' 1.0/Decimal,.1 = .1# .5/Decimal,1 = .5# .1/Decimal,1 = .1# .05/Decimal,1 = .05# .01/Decimal,1 = .01# .005/Decimal,1 = .005# .001/Decimal,1 = .001# .0005/Decimal,1 = .0005# 1mm/Metric,1 = 1mm .1mm/Metric,1 = .1mm .01mm/Metric,1 = .01mm .001mm/Metric,1 = .001mm User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# User/Definable,1=1# 1"/FT-IN (1.35),1 = 1",12 = 1' 0.1"/TENTHS (1.35),1 = 0.1",120 = 1' 0.001"/MILS (1.35),1 = 0.001",12000 = 1' 1/UNITS (1.35),1 = 1 UNITS ͕>B>D͋4̓f >5滪7͕4͙>5͋4̓f4̓f͋34@4>4}~͋34334@4>4}~5@54;5}͋=4͌6͍t4 t6͌͋4͕͋65͌=4͌6͍t4哣5>5 t5͌͋>5t 64͌͋3;5tb=%53=!+3 55䓣 53; 5 5+35= ͌5>BӋ 5>D˻7͕>B>DR5;3MZt Tl 3PءSTACK STACK STACK STACK STACK STACK STACK STACK STACK STACK STACK STACK 05"/Decimal INCH,1 = .005" .002"/Decimal INCH,1 = .002" .001"/Decimal INCH,1 = .001" .0005"/Decimal INCH,1 = .0005" 1.0'/Decimal FEET,.1 = .1' .1'/Decimal FEET,1 = .1' .01'/Decimal FEET,1 = .01' .005'/Decimal FEET,1 = .005' .001'/Decimal FEET,1 = .001' 1.0/Decimal,.1 = .1# .5/Decimal,1 = .5# .1/Decimal,1 = .1# .05/Decimal,1 = .05# .01/Decimal,1 = .01# .005/DeMZt TC 3PءSTACK STACK STACK STACK STACK STACK STACK STACK STACK STACK STACK STACK 05"/Decimal INCH,1 = .005" .002"/Decimal INCH,1 = .002" .001"/Decimal INCH,1 = .001" .0005"/Decimal INCH,1 = .0005" 1.0'/Decimal FEET,.1 = .1' .1'/Decimal FEET,1 = .1' .01'/Decimal FEET,1 = .01' .005'/Decimal FEET,1 = .005' .001'/Decimal FEET,1 = .001' 1.0/Decimal,.1 = .1# .5/Decimal,1 = .5# .1/Decimal,1 = .1# .05/Decimal,1 = .05# .01/Decimal,1 = .01# .005/De  $BASRUN EXEUȎ؋^&f@^&h@t@^ &r@^ &p@v@.h@z@|@x@.h@~@@p@.f@ʋءr@.f@+щ@@u+|@z@u( u t v@&~@@+@@ux@@ @@>h@~&] UȎ؋^ &j@^ &l@l@^&n@n@ʋءj@+ыʋءl@t u t~&] GOSUB 1410:STRG$=SCALMSG1$+SCALMSG2$:GOSUB 841 IF PTYPE=N1 AND DEVICE$<>"Y" THEN GOSUB 1450 IF PTYPE=N1 THEN PIXDUMP=&H2D:CALL ABSOLUTE(PERR,PIXDUMP) IF PTYPE=N1 THEN IF PERR<>13 THEN GOSUB 1450:STRG$="Communications error detected":GOSUB 841:GOSUB 1480:GOSUB 1485:GOSUB 1485:GOSUB 1400:STRG$="Make sure printer is on & cable is":GOSUB 841 IF PTYPE=N1 THEN IF PERR<>13 THEN GOSUB 1410:STRG$="connected; Hit any key - restart PLOT":GOSUB 841:GOSUB 1470:GOTO 4040 IF PTYPE=N2 THEN PLOTTER$=PLOTDRIV$+":"+OUTPUTDV$:PLOTFLAG=N1:CLOSE 2:OPEN PLOTTER$ FOR INPUT AS #2:CLOSE 2:PLOTFLAG=N0 IF PTYPE=N2 AND COMMPORT=N1 THEN CLOSE 1 IF PTYPE=N2 THEN GOSUB 1450:STRG$="WAIT":GOSUB 841:CHAIN PLOTTER$ 3990 IF PTYPE=N3 THEN PTYPE=N2:OLDPTYPE=N2:GOTO 3500 IF PTYPE=N1 THEN IN$=INKEY$:IF IN$<>"" THEN GOSUB 1450:STRG$="ABORT PLOTTING? (Y or N)":GOSUB 841:GOSUB 1470:IF IN$="Y" OR IN$="y" THEN 4030 4000 DEF SEG=SEGDEF IF ZZPN0 THEN STRG$="Unplug PLOTTER from Comm Port #1":GOSUB 841:GOSUB 1410:STRG$="Reconnect input device, then any key ":GOSUB 841:GOSUB 1470 4040 GOSUB 1380:GOSUB 1390:GOSUB 1630 IF INPUTDV=N0 THEN INITMICRO=&H54:CALL ABSOLUTE (STATUS,INITMICRO):COMMODE=&H83 IF INPUTDV=N1 THEN INITCOM=&H12:CALL ABSOLUTE (INITCOM):COMMODE=&H83 IF INPUTDV=N3 OR INPUTDV=N5 OR INPUTDV=N6 THEN GINITCOM=&H1E:CALL ABSOLUTE (GINITCOM):COMMODE=&H83 IF INPUTDV=N7 THEN COMMODE=&H83:INTKURTA1=&H36:CALL ABSOLUTE (INTKURTA1) IF SYSTYPE=N2 THEN GOSUB 1400:STRG$="Insert CADDRAFT Disk 'A'in Drive A":GOSUB 841:GOSUB 1410:STRG$="Hit any key when ready ":GOSUB 841:GOSUB 1370 WX=OWX:WY=OWY:SCALE!=OSCALE!:INMENU=N1:BXD=315:BYD=140:TMPOSCALE!=N0:GOSUB 2350:GOSUB 1430:GOTO 860 ' 4090 GOSUB 1400:STRG$="FILE SHOULD BE SAVED BEFORE CONTINUING!":GOSUB 841:PRINT CHR$(7); GOSUB 1410:STRG$="Hit A to abort PLOT, or any key":GOSUB 841:GOSUB 1470 GOSUB 1450:IF IN$="A" OR IN$="a" THEN GOSUB 1420:MAIN=N0:BXD=315:GOTO 860 PLOTTER$=PLOTDRIV$+":"+OUTPUTDV$ IF SYSTYPE=N2 THEN GOSUB 1400:STRG$="Insert CADDRAFT Plotter Disk in Drive A":GOSUB 841:GOSUB 1410:STRG$="Hit any key when ready ":GOSUB 841:GOSUB 1370 PLOTFLAG=1:CLOSE 2:OPEN PLOTTER$ FOR INPUT AS #2:CLOSE 2:PLOTFLAG=N0:CHAIN PLOTTER$ ' 4305 SWAP LX,HX:SWAP LY,HY:GOSUB 2235:SWAP LX,HX:SWAP LY,HY:RETURN ' 4450 'PDRWWDTH!=5.68 'JAPANESE IBM PRINTER PDRWWDTH!=8.0 'EPSON FX-80 PRINTER ' RATIO#=VAL(DBU$(N0,N1)+"#")/VAL(DBU$(N1,N1)+"#") ' PNTRSIZE!=PDRWWDTH!*RATIO# DISCALE!=(SCRNMAXX+1)/PNTRSIZE! 4480 RETURN ' ' *** ROTATION SYMBOL *** 5000 ON ROT GOTO 5001,5002,5003,5004:RETURN 5001 SWAP DX1,DY1:DX1=-DX1:RETURN 5002 DX1=-DX1:DY1=-DY1:RETURN 5003 SWAP DX1,DY1:DY1=-DY1:RETURN 5004 GOSUB 1460:TRX=DX1*COSPHI!-DY1*SINPHI!:TRY=DX1*SINPHI!+DY1*COSPHI!:DX1=TRX:DY1=TRY RETURN ' ' *** ROTATE TEXT SUBROUTINE DISPLAY ONLY *** ' 5100 ON ROT GOTO 5120,5130,5140,5150 RETURN 5120 SWAP X,Y:X=-X:RETURN 5130 X=-X:Y=-Y:RETURN 5140 SWAP X,Y:Y=-Y:RETURN 5150 TTX=X*COSPHI!-Y*SINPHI!:TTY=X*SINPHI!+Y*COSPHI!:X=TTX:Y=TTY:RETURN ' ' *** SUBROUTINE ROTATE_TEXT_INPUT_MODE_ONLY *** ' ON TXANG GOTO 5210, 5220, 5230 X = X + TXDELTA: RETURN '0 5210 Y = Y + TXDELTA: RETURN '1 5220 X = X - TXDELTA: RETURN '2 5230 Y = Y - TXDELTA: RETURN '3 ' ' *** SUBROUTINE BUNDLE(CN, T  XT$, MCODE, TXOP1, TXOP2, X, Y, ALAY, LAY) ' IF CN + (LEN(TXT$) + N3)\N4 < MCODE GOTO 5320 'ENOUGH ROOM GOSUB 1400:STRG$="Cannot accept text. Out of memory":GOSUB 841 GOSUB 1410:STRG$="Press any key to continue":GOSUB 841 '*** STANDARD ERROR RETURN POINT *** 5300 TXT$ = INKEY$: IF TXT$ = "" THEN 5300 ELSE RETURN ' 5320 LAY(CN,N0) = TXOP1: LAY(CN,N1) = X: LAY(CN,N2) = Y 'PLACE OPCODE, X AND Y TXPAD = LEN(TXT$) AND N3: IF TXPAD THEN FOR TXI = N1 TO N4 - TXPAD: TXT$ = TXT$ + CHR$(127): NEXT FOR TXI = N1 TO LEN(TXT$) STEP N4: CN = CN + N1: LAY(CN,N0) = TXOP2 LAY(CN,N1) = (ASC(MID$(TXT$,TXI, N1))) * 256 + (ASC(MID$(TXT$,TXI+N1,N1))) LAY(CN,N2) = (ASC(MID$(TXT$,TXI+N2,N1))) * 256 + (ASC(MID$(TXT$,TXI+N3,N1))) NEXT: LAYVM(ALAY,N1) = CN + N1: RETURN ' ' *** SUBROUTINE TXDRAW(TXZ, ALAY, LAY, MCODE, SCALE!, ROT, CLR, TYPE, LWIDTH, X, Y) ' 5410 TXBX=X:TXBY=Y:TXZ=TXZ+N1:TXI=-N1:TXDELTA=.16666*TXPITCH*TXDBU(TXSIZ) TXS!=.16666*TXDBU(TXSIZ)*SCALE!:IF TXS!>N1 THEN TXSCALE=TXS!*N4 ELSE TXSCALE=-(N1/TXS!) IF ROT= 316 OR ROTDEG <= 45 THEN TXANG = N0: GOTO 5490 'Q1 IF ROTDEG >= 46 AND ROTDEG <= 135 THEN TXANG = N1: GOTO 5490 'Q2 IF ROTDEG >= 136 AND ROTDEG <= 225 THEN TXANG = N2: GOTO 5490 'Q3 TXANG = N3 'Q4 ' 5490 IF TXLAY<>SCRNMAXX GOTO 5510 IF CDB(TXZ,N0)<>TXOP2 THEN 5630 ELSE 5520 5510 IF LAY(TXZ,N0)<>TXOP2 GOTO 5630 5520 TXI=TXI+N1:X=TXI*TXDELTA:Y=N0:GOSUB 5100:X=X+TXBX:Y=Y+TXBY: GOSUB 2230: TXFLAG = N0 IF TXLAY<>SCRNMAXX THEN TXASCII = LAY(TXZ,N1) ELSE TXASCII=CDB(TXZ,N1) CALL ABSOLUTE (TXFLAG,TXASCII,XD,YD,TXANG,TXSCALE,CLR,TYPE,DRAWCHAR): IF TXFLAG < N0 THEN 5620 TXI=TXI+N1:X=TXI*TXDELTA:Y=N0:GOSUB 5100:X=X+TXBX:Y=Y+TXBY: GOSUB 2230: TXFLAG = N1 'TXASCII is the same CALL ABSOLUTE (TXFLAG,TXASCII,XD,YD,TXANG,TXSCALE,CLR,TYPE,DRAWCHAR): IF TXFLAG < N0 THEN 5620 TXI=TXI+N1:X=TXI*TXDELTA:Y=N0:GOSUB 5100:X=X+TXBX:Y=Y+TXBY: GOSUB 2230: TXFLAG = N0 IF TXLAY<>SCRNMAXX THEN TXASCII = LAY(TXZ,N2) ELSE TXASCII=CDB(TXZ,N2) CALL ABSOLUTE (TXFLAG,TXASCII,XD,YD,TXANG,TXSCALE,CLR,TYPE,DRAWCHAR): IF TXFLAG < N0 THEN 5620 TXI=TXI+N1:X=TXI*TXDELTA:Y=N0:GOSUB 5100:X=X+TXBX:Y=Y+TXBY: GOSUB 2230: TXFLAG = N1 'TXASCII is the same CALL ABSOLUTE (TXFLAG,TXASCII,XD,YD,TXANG,TXSCALE,CLR,TYPE,DRAWCHAR) 5620 TXZ = TXZ + N1:GOTO 5490 5630 TXZ=TXZ-N1:X = TXBX: Y = TXBY: RETURN 'WHEW! WHAT A BITCH, BASIC SUCKS '  ' *** T E X T S: M A I N E N T R Y P O I N T *** ' 5670 GOSUB 5410: RETURN 'Draw only ' '***** JOB INFORMATION ***** ' 5710 IF GRID<>N1 THEN 5720 TSX!=SX!:TSY!=SY!:SX!=WX-(WX MOD GRIDS(AGRID,N0)):SY!=WY-(WY MOD GRIDS(AGRID,N1)) IF ((XMAX!-SX!)/GRIDS(AGRID,N0)<64 AND (YMAX!-SY!)/GRIDS(AGRID,N1)<38) THEN 5265 ELSE SX!=TSX!:SY!=TSY!:GOTO 5720 5265 IF SCALE!>3.2! THEN THSCALE=SCALE!*1000:GRIDCLR=131 ELSE THSCALE=SCALE!*10000:GRIDCLR=-131 CALL ABSOLUTE (WX,WY,GRIDS(AGRID,N0),GRIDS(AGRID,N1),THSCALE,GRIDCLR,DRAWGRID) 5720 DEF SEG=SEGDEF:GOSUB 1450:STRG$="WAIT":GOSUB 841:INFOVIEW=N1:CHAIN "CPINFO.EXE" ' '***** ERROR TRAP ROUTINE ***** ' 6510 GOSUB 1400 IF ERR=N6 THEN STRG$="OUT OF BOUNDS":GOSUB 841 IF ERR=N7 THEN STRG$="MEMORY OVERFLOW":GOSUB 841 IF ERR=25 THEN STRG$="INTERFACE FAULT":GOSUB 841 IF ERR=27 THEN STRG$="PRINTER NOT READY":GOSUB 841 IF ERR=52 AND PLOTFLAG=N1 THEN STRG$="PLOTTER NOT SELECTED":GOSUB 841 ELSE IF ERR=52 THEN GOSUB 1400:STRG$="BAD FILE NAME":GOSUB 841 IF ERR=53 AND PLOTFLAG=N1 THEN STRG$="PLOTTER NOT SELECTED":GOSUB 841 ELSE IF ERR=53 THEN GOSUB 1400:STRG$="FILE NOT FOUND":GOSUB 841 IF ERR=70 THEN STRG$="DISK IS WRITE PROTECTED":GOSUB 841 IF ERR=71 THEN STRG$="DISK IS NOT READY":GOSUB 841 IF ERR=57 THEN STRG$="DEVICE I/O ERROR":GOSUB 841 IF ERR=11 THEN STRG$="DIVISION BY ZERO":GOSUB 841 IF ERR=N2 THEN STRG$="SYNTAX ERROR":GOSUB 841 IF ERR=N9 THEN S  TRG$="LAYER OVERFLOW":GOSUB 841 GOSUB 1410:STRG$="DOS Error #"+STR$(ERR)+" Hit any key ":GOSUB 841 GOSUB 1480:GOSUB 1470 IF TMPOSCALE!<>N0 THEN SCALE!=TMPOSCALE!:TMPOSCALE!=N0:SIP=N0:GOSUB 1380:GOSUB 1390:GOSUB 1630 GOSUB 1415:GOSUB 1430:MAIN=N0:RESUME 860 ' '*** DATABASE TRACE FUNCTION *** ' 6690 GOSUB 1450:STRG$="DATABASE TRACE FUNCTION? (Y or N)":GOSUB 841:GOSUB 1470:IF IN$<>"Y" AND IN$<>"y" THEN GOSUB 1450:GOTO 4040 GOSUB 1400:STRG$="TURN PRINTER ON & PRESS RETURN":GOSUB 841:GOSUB 1470 GOSUB 1400:LOCATE SLROW,N1:INPUT;"ENTER LAYER #: START,END:";TLB,TLE GOSUB 1410:LOCATE LROW,N1:INPUT;" ENTER CODE #: START,END:";TCB,TCE GOSUB 1450:GOSUB 1416 WIDTH "LPT1:",132:LPRINT CHR$(15); IF TLB>70 THEN 6800 FOR Z=TLB TO TLE LPRINT "LAYER=";Z CALL ABSOLUTE(LAY(N0,N0),Z,READLAY) FOR ZZ=TCB TO TCE LPRINT "CODE #=";ZZ TAB(15) "OP=";LAY(ZZ,N0);"X=";LAY(ZZ,N1);"Y=";LAY(ZZ,N2) NEXT ZZ  LPRINT "LAYER";Z;"MCODE=";LAYVM(Z,N1) NEXT Z GOSUB 1415:LPRINT:GOTO 4040 6800 LPRINT"CELL DATABASE":LPRINT FOR Z= TCB TO TCE LPRINT "CODE #=";Z TAB(15) "OP =";CDB(Z,N0);"X =";CDB(Z,N1);"Y =";CDB(Z,N2) NEXT Z LPRINT:LPRINT"CELL DATA ARRAYS" TAB(20) "CLAST= ";CLAST:LPRINT FOR Z=1 TO LCELNUM:LPRINT "CELL #=";Z TAB(12) "NAME IS ";CNAM$(Z,N0) TAB(30) "# OF PLMTS=";CNUM(Z,N0) TAB(46) "CDB START=";CNUM(Z,N1) TAB(61) "COX=";CNUM(Z,N2) TAB(71) "COY=";CNUM(Z,3):NEXT  LPRINT "LCELNUM=";LCELNUM GOSUB 1415:LPRINT:GOTO 4040 ' ' *** READ THE PLOT SCALE MESSAGE *** ' 10000 INDEX=1:GOSUB 10200 GOSUB 10060:LEFTSIDE$=NUMBER$:LEFTSIDE!=NUMBER!:IF SCLERR>0 THEN 10020 GOSUB 10070:LFTUNIT$=UNIT$:IF EQUAL=0 THEN SCLERR=2:GOTO 10020 ELSE GOSUB 10030:IF UNITERR>0 THEN GOTO 10020 GOSUB 10060:RGHTSIDE$=NUMBER$:RGHTSIDE!=NUMBER!:IF SCLERR>0 THEN SCLERR=3:GOTO 10020 GOSUB 10070:RGHTUNIT$=UNIT$:IF EQUAL>0 THEN SCLERR=4:GOTO 10020 ELSE GOSUB 10030:IF UNITERR>0 THEN GOTO 10020 SCALMSG1$=" "+LEFTSIDE$+" "+LFTUNIT$+" = "+RGHTSIDE$+" "+RGHTUNIT$ UNIT$=LFTUNIT$:GOSUB 10400:LEFTFACT!=UNITFACT!:UNIT$=RGHTUNIT$:GOSUB 10400:RGHTFACT!=UNITFACT! LEFTSIDE!=LEFTSIDE!*LEFTFACT!:RGHTSIDE!=RGHTSIDE!*RGHTFACT!:OPTFAC!=LEFTSIDE!/RGHTSIDE!:RETURN 10020 GOSUB 1410:STRG$="Syntax error":GOSUB 841:GOSUB 1480:GOSUB 1410:GOTO 10000 10030 IF UNIT$="FT" OR UNIT$="FEET" OR UNIT$="FOOT" OR UNIT$=CHR$(39) OR UNIT$="MIL" OR UNIT$="MILS" THEN UNITERR=0:RETURN IF UNIT$="IN" OR UNIT$="INCH" OR UNIT$="INCHES" OR UNIT$=CHR$(34) OR UNIT$="M" OR UNIT$="CM" OR UNIT$="MM" THEN UNITERR=0:RETURN ELSE UNITERR=1:RETURN ' '*** LOOK FOR A NUMBER *** ' 10060 NUMBER!=0:SCLERR=0:BREAK=0:DECPNT=0:OPDIV=0:TEMP$="":NUMBER$="":OPNUM$="" WHILE BREAK=0 10065 TEMP$=MID$(BUFFER$,INDEX,1):IF TEMP$=CHR$(46) THEN IF DECPNT=0 THEN NUMBER$=NUMBER$+TEMP$:INDEX=INDEX+1:TEMP$=MID$(BUFFER$,INDEX,1):DECPNT=1 ELSE SCLERR=1:BREAK=1 IF TEMP$=CHR$(47) THEN IF OPDIV=0 THEN NUMRAT$=NUMBER$:OPNUM$=NUMBER$+TEMP$:INDEX=INDEX+1:NUMBER$="":DECPNT=0:OPDIV=1:GOTO 10065 ELSE IF (TEMP$=CHR$(47) AND OPDIV=1) THEN SCLERR=1:BREAK=1 IF (TEMP$>CHR$(47) AND TEMP$CHR$(57)) THEN SCLERR=1 WEND IF NUMBER!=0 THEN SCLERR=1:RETURN ELSE RETURN ' '*** GET THE UNIT *** ' 10070 UNIT$="" WHILE (CHR$(61)<>MID$(BUFFER$,INDEX,1) AND CHR$(36)<>MID$(BUFFER$,INDEX,1)) UNIT$=UNIT$+  MID$(BUFFER$,INDEX,1):INDEX=INDEX+1 WEND IF CHR$(36)=MID$(BUFFER$,INDEX,1) THEN EQUAL=0 ELSE EQUAL=1:INDEX=INDEX+1 RETURN ' ' READ THE KEYBOARD AND RETURN THE ' STRING IN BUFFER$ AND NUMBER OF ' CHARACTERS IN CHARCNT. ' 10200 CHARCNT=0:BUFFER$="" 10210 IN$=INKEY$:IF IN$="" THEN 10210 ELSE K=ASC(IN$):IF K=13 AND CHARCNT>N0 THEN BUFFER$=BUFFER$+"$":RETURN ELSE IF K=13 THEN GOSUB 1420:MAIN=N0:BXD=315:BYD=140:RETURN 860 ELSE IF K=32 THEN SCHARCNT=SCHARCNT+1:STRG$=IN$:GOSUB 841:COL=COL-1:GOTO 10210 IF K=8 THEN IF CHARCNT=0 THEN 10210 ELSE CHARCNT=CHARCNT-1:SCHARCNT=SCHARCNT-1:BUFFER$=LEFT$(BUFFER$,CHARCNT):COL=COL-N1:STRG$=" ":GOSUB 841:COL=COL-N2:GOTO 10210 ELSE IF LEN(BUFFER$)>=35 THEN 10210 IF (K<48 AND K<>47 AND K<>46 AND K<>34 AND K<>39) OR (K>57 AND K<65 AND K<>61) OR (K>90 AND K<97) OR (K>122) THEN 10210 STRG$=IN$:GOSUB 841:COL=COL-N1:IF IN$>CHR$(96) THEN ASCII=ASC(IN$):IN$=CHR$(ASCII-32) BUFFER$=BUFFER$+IN$:SCHARCNT=SCHARCNT+1:CHARCNT=CHARCNT+1:GOTO 10210 10260 IF SCHARCNT=0 THEN RETURN ELSE GOSUB 1410:BUFFER$="":CHARCNT=0:RETURN ' '*** SCREEN/PLOT SCALE CONVERTER *** ' 10300 DBUUNIT$=DBU$(2,N1):DBULEN=LEN(DBUUNIT$):DBUINDX=1:TMPCHAR$="":TMPDBU$="":IF DBULEN=0 THEN UNIT$="MM":GOTO 10320 WHILE DBULEN<>0 TMPCHAR$=MID$(DBUUNIT$,DBUINDX,1):IF TMPCHAR$=CHR$(32) THEN DBUINDX=DBUINDX+1:GOTO 10310 IF TMPCHAR$>CHR$(96) THEN ASCII=ASC(TMPCHAR$):TMPCHAR$=CHR$(ASCII-32) TMPDBU$=TMPDBU$+TMPCHAR$:DBUINDX=DBUINDX+1 10310 DBULEN=DBULEN-1 WEND UNIT$=TMPDBU$ 10320 GOSUB 10400:REALX!=VAL(DBU$(N0,N1))/VAL(DBU$(N1,N1)):SCALFAC!=UNITFACT!*OPTFAC!*UPMM!:SCALFAC!=SCALFAC!/REALX!:RETURN ' '*** GET THE UNIT TO MM FACTOR *** ' 10400 IF UNIT$="FT" OR UNIT$="FOOT" OR UNIT$="FEET" OR UNIT$=CHR$(39) THEN UNITFACT!=304.8:RETURN IF UNIT$="IN" OR UNIT$="INCH" OR UNIT$="INCHES" OR UNIT$=CHR$(34) THEN UNITFACT!=25.4:RETURN IF UNIT$="MIL" OR UNIT$="MILS" THEN UNITFACT!=.0254:RETURN IF UNIT$="M" THEN UNITFACT!=1000 ELSE IF UNIT$="CM" THEN UNITFACT!=10 ELSE UNITFACT!=1 RETURN ' 40000 SCRN=&H24:CALL ABSOLUTE (AH,AL,BH,BL,SCRN):RETURN 40010 LOCATE N1,N1:GOSUB 40020 AH=N0:AL=N3:BH=N0:BL=N0:GOSUB 40000 'CLS, SCREEN 0,0, WIDTH 80 LOCATE ,,N0 RETURN 40020 INITCRT=&H6:CALL ABSOLUTE (INITCRT):ROW=N1:COL=N1:RETURN 'CLS, SCREEN 1,0 65000 GOSUB 40010 END  ' CPDBU.BAS MINDSET VERSION 1.40 (C)Copyright PERSONAL CAD SYSTEMS, INC. JUNE 1984 ' $INCLUDE: 'NEWCOM' ' DIM DF$(2,6),D$(6),DBUDEF$(65) ON ERROR GOTO 9000 DEF SEG=SEGDEF IF INPUTDV=N7 THEN TDELAY=N0:TDELTA=N7 ELSE TDELAY=3500:TDELTA=14 REDEFINE=N0:WINDOWSET=N1 100 N10=10:N11=11:N12=12:N13=13:N14=14:N15=15:N16=16:N17=17:N18=18:N19=19 N20=20:N21=21:N22=22:N23=23:N24=24:N25=25:N26=26:N27=27:N28=28:N29=29 N30=30:N31=31:N32=32:N33=33:N34=34:N35=35:N36=36:N37=37:N38=38:N39=39 N40=40:N41=41:N42=42:N43=43:N44=44:N45=45:N46=46:N47=47:N48=48:N49=49 N50=50:N51=51:N52=52:N53=53:N54=54:N55=55:N56=56:N57=57:N59=59 N60=60:N65=65:N80=80:N191=191:N199=199:N311=311:OLDXT=XT:OLDYT=YT GOSUB 40010 ' IF MAIN=N13 THEN 1110 'SYMBOL LIBRARY IF ZLAY(1000,N2)=N1 THEN CHGDBU=N1 : GOTO 4500 'USER DBU IF ZLAY(1000,N2)=N2 THEN GOSUB 11000:GOTO 4699 'TABLET SCALING IF ZLAY(1000,N2)=N3 THEN 11200    'CURSOR DEFINITION GOTO 4699 ' '*** M O U S E D R I V E N *** ' '--- Mouse driven (for CURSOR numeric input) --- ' Should pass: initial value to TV$ ' range value to MIN & MAX (integer) ' # of figures to FIG ' Will pass : TV$ (if the input is valid) ' CANCEL (=N1 if "C" is chosen; =N0 otherwise) ' 200 SV=N0 CANCEL=N0:IF TBMAX THEN TB=ACTBOX:GOTO 200 TV$=RIGHT$(V$,LEN(V$)-INSTR(V$," "))+" ":TB=N0:RETURN ' '--- Get input from the keyboard or mouse --- 204 BUT=N0:GOSUB 210:IF S$=" " THEN GOSUB 206:BUT=N0:RETURN ELSE IF S$<>"X" THEN 204 IF ACTBOX=10 THEN CANCEL=N1:GOSUB 206:BUT=N0:RETURN A$=STR$(ACTBOX):V$=V$+RIGHT$(A$,1) V$=RIGHT$(V$,FIG):ROW=N25:COL=24-FIG:STRG$=V$:GOSUB 841:GOTO 204 ' '--- Compute coordinates of the box --- 206 X1BOX=223+8*ACTBOX:Y1BOX=N191:X2BOX=231+8*ACTBOX:Y2BOX=N199:BOXLT=N0:BOXLW=N0:GOSUB 208:RETURN ' '--- Draw box --- 208 TEMP=X2BOX-1:CALL ABSOLUTE(X1BOX,Y1BOX,TEMP,Y1BOX,BOXCLR,BOXLT,BOXLW,WRTLIN) TEMP=Y2BOX-1:CALL ABSOLUTE(X2BOX,Y1BOX,X2BOX,TEMP,BOXCLR,BOXLT,BOXLW,WRTLIN) TEMP=X1BOX+1:CALL ABSOLUTE(X2BOX,Y2BOX,TEMP,Y2BOX,BOXCLR,BOXLT,BOXLW,WRTLIN) TEMP=Y1BOX+1:CALL ABSOLUTE(X1BOX,Y2BOX,X1BOX,TEMP,BOXCLR,BOXLT,BOXLW,WRTLIN) RETURN ' '--- Input keyboard or mouse --- 210 GOSUB 27600:IF S$="" THEN TXD=XD:TYD=YD:GOSUB 2730:XD=TXD:YD=TYD:GOSUB 212:IF BUT=N1 THEN S$="X":RETURN ELSE IF BUT=N2 THEN S$=" ":RETURN ELSE RETURN IF S$="X" OR S$="x" THEN S$="X":RETURN IF S$=" " THEN RETURN IF LEN(S$)=N2 AND ASC(RIGHT$(S$,N1))=75 THEN XT=-N8:GOSUB 212:RETURN IF LEN(S$)=N2 AND ASC(RIGHT$(S$,N1))=77 THEN XT=N8:GOSUB 212:RETURN IF ASC(S$)=13 THEN S$=" ":RETURN S=ASC(S$) IF (S<48 OR S>57) AND (S<>67 AND S<>99) THEN S$="":GOTO 210 IF LEN(S$)=N1 AND S$<>"C" AND S$<>"c" THEN GOSUB 206:ACTBOX=VAL(S$):GOSUB 206:XT1=N8*ACTBOX+N1:S$="X":RETURN IF S$="C" OR S$="c" THEN GOSUB 206:ACTBOX=10:GOSUB 206:XT1=N8*ACTBOX+N1:S$="X":RETURN GOTO 210 ' '--- Determine where the box moves --- 212 IF XT=N0 THEN RETURN IF XT<-16 THEN XT=-16 ELSE IF XT>16 THEN XT=16 XT1=XT1+XT:IF XT180 THEN XT1=80 FOR DELAY=0 TO 500 :NEXT DELAY:XT=N0 TBOX=FIX(XT1\8) IF ACTBOX=TBOX THEN RETURN ELSE GOSUB 206:ACTBOX=TBOX:GOSUB 206 RETURN ' ' '*** Mouse driven for choosing words *** ' should pass: Number of column, maximum is 4 (NUMCOL) ' Words for choice (WORD$1 ... WORD$4) ' each word begins with capital letter ' ' Row # all the words to be placed (ROW) ' Column # each word to be placed (COL1 ... COL4) ' '--- Initialize the XT2MIN & XT2MAX --- 220 SV=N0 IF NUMCOL>N1 THEN XT2MAX=149:LUC1=ASC(LEFT$(WORD1$,N1)):LLC1=LUC1+N32:LUC2=ASC(LEFT$(WORD2$,N1)):LLC2=LUC2+N32 IF NUMCOL>N2 THEN XT2MAX=199:LUC3=ASC(LEFT$(WORD3$,N1)):LLC3=LUC3+N32 IF NUMCOL>N3 THEN XT2MAX=249:LUC4=ASC(LEFT$(WORD4$,N1)):LLC4=LUC4+N32 XT2MIN=50:XT2=XT2MIN ' '--- Entry point --- CANCEL=N0:COLFLG=N1:FC=N16:BC=N7:ACTBOX=N1:GOSUB 221:GOSUB 231 IF CANCEL=N1 THEN TV$=" " ELSE S$=STR$(ACTBOX):TV$=RIGHT$(S$,LEN(S$)-INSTR(S$," ")) RETURN ' '--- Draw box --- 221 IF COLFLG=N1 THEN COL=COL1:WORD$=WORD1$ IF COLFLG=N2 THEN COL=COL2:WORD$=WORD2$    IF COLFLG=N3 THEN COL=COL3:WORD$=WORD3$ IF COLFLG=N4 THEN COL=COL4:WORD$=WORD4$ IF DISCLR$<>"C" THEN GOSUB 292:LOCATE ROW,COL-N1:PRINT"[";:LOCATE ROW,COL+LEN(WORD$):PRINT"]";:RETURN LOCATE ROW,COL:COLOR FC,BC,N0:PRINT WORD$; RETURN ' '--- Get input from the keyboard or mouse --- 231 BUT=N0:GOSUB 235:IF S$=" " THEN CANCEL=N1:BUT=N0:RETURN IF S$<>"X" THEN 231 ELSE BUT=N0:FC=N14:BC=N0:GOSUB 221 RETURN ' '--- Input keyboard or mouse --- 235 GOSUB 27600:IF S$="" THEN GOSUB 2730:GOSUB 237:IF BUT=N1 THEN S$="X":RETURN ELSE IF BUT=N2 THEN S$=" ":RETURN ELSE RETURN IF S$="X" OR S$="x" THEN S$="X":RETURN IF S$=" " THEN RETURN IF ASC(S$)=13 THEN S$="X":RETURN IF LEN(S$)=N2 AND ASC(RIGHT$(S$,N1))=75 THEN XT=-XT2MIN:GOSUB 237:RETURN IF LEN(S$)=N2 AND ASC(RIGHT$(S$,N1))=77 THEN XT=XT2MIN: GOSUB 237:RETURN IF S$=CHR$(LUC1) OR S$=CHR$(LLC1) THEN ACTBOX=N1:COLFLG=N1:GOSUB 221:S$="X":RETURN IF S$=CHR$(LUC2) OR S$=CHR$(LLC2) THEN ACTBOX=N2:COLFLG=N2:GOSUB 221:S$="X":RETURN IF S$=CHR$(LUC3) OR S$=CHR$(LLC3) THEN ACTBOX=N3:COLFLG=N3:GOSUB 221:S$="X":RETURN IF S$=CHR$(LUC4) OR S$=CHR$(LLC4) THEN ACTBOX=N4:COLFLG=N4:GOSUB 221:S$="X":RETURN GOTO 235 ' '--- Determine where the box moves --- 237 IF XT=N0 THEN RETURN XT2=XT2+XT:IF XT2XT2MAX THEN XT2=XT2MAX ACTBOX=FIX(XT2\XT2MIN):IF COLFLG=ACTBOX THEN XT=N0:RETURN FC=N10:BC=N0:GOSUB 221 FC=N16:BC=N7:COLFLG=ACTBOX:GOSUB 221 XT=N0:RETURN ' '*** Determine COLOR and BRAKET *** ' 292 IF FC=N30 AND LPAGE=N1 AND DISCLR$<>"M" THEN COLOR N14,N0,N0:RETURN IF FC=N30 THEN COLOR N15,N0,N0:RETURN IF FC=N15 THEN COLOR N15,N0,N0:LB$=CHR$(16):RB$=CHR$(17) ELSE LB$=" ":RB$=" " IF LPAGE<>N1 THEN RETURN ELSE IF LPAGE=N1 AND FC<>N0 AND FC<>N15 THEN RETURN LOCATE NUMLF+ACTBOX-MINCTR+N1,MERGIN:COLOR FC,BC,N0 IF ACTBOX>N9 THEN PRINT RIGHT$(STR$(ACTBOX),N2);:RETURN ELSE PRINT STR$(ACTBOX);:RETURN RETURN ' 841 CALL ABSOLUTE (STRG$,ROW,COL,HRTXTPRT):COL=COL+LEN(STRG$)+N1:RETURN 842 CALL ABSOLUTE (SINT,ROW,COL,HRINTPRT):RETURN ' ' *** SYMBOL LIBRARY *** ' 1110 DEF SEG=SEGDEF:CALL ABSOLUTE(N1,CLRBUF):COLOR N0,N0,N0 IN$="SYMBOL INFORMATION":R=N1:C=N32:BC=N0:FC=N14:GOSUB 9500 HEADING$=" NAME #":HEADLEN=N13:NUMITEM=LCELNUM:NUMROW=N20:GOSUB 9750 R=N24:C=N1:BC=N0:FC=N11:IN$=" Active symbol is ":GOSUB 9500 R=N24:C=N19:BC=N0:FC=N14:IN$=CNAM$(ACELNUM,N0):GOSUB 9500 R=N25:C=N1:BC=N0:FC=N15:IN$=" BUTTON #1 to change active symbol, BUTTON #2 to return":GOSUB 9500 CALL ABSOLUTE(N1,POPSCRN) 1115 NUMLF=N2:GOSUB 10000 IF CANCEL=N0 THEN ACELNUM=VAL(TV$) 1120 SX!=WX-(WX MOD GRIDS(AGRID,N0)):SY!=WY-(WY MOD GRIDS(AGRID,N1)) GOSUB 40020 DEF SEG=SEGDEF:CALL ABSOLUTE (N2,SAVSTART,N0,N0,SCRNMAXX,SCRNMAXY,N0,SAVWIN):BUT=N0 IF (TISM=N1 AND INPUTDV>N2) THEN IF INPUTDV=N3 OR INPUTDV=N5 OR INPUTDV=N6 OR INPUTDV=N7 THEN CALL ABSOLUTE (XT,YT,BUT,READTP%) INFOVIEW=N4:CHAIN "CP3.EXE" ' '***** INPUT DEVICE INTERFACE SUBROUTINE ***** ' 2730 PDN=N0 IF INPUTDVN2 THEN BUT=N7:OLDBUT=N1:RETURN SAVXT=XT:SAVYT=YT IF OLDBUT=N1 THEN OLDBUT=N0:OLDXT=XT:OLDYT=YT XT=(XT-OLDXT)/TDELTA:YT=(YT-OLDYT)/TDELTA OLDXT=SAVXT:OLDYT=SAVYT:RETURN ' '*** GENERAL PURPOSE SUBROUTINES *** ' 4000 COLOR ,N0:LOCATE ROW,N1:PRINT SPACE$(79);:LOCATE ROW,N1:RETURN 4010 COLOR ,N0:LOCATE ROW,COL:PRINT SPACE$(80-CO  L);:LOCATE ROW,COL:RETURN 4020 FOR MSDELAY=N1 TO N4:FOR DELAY=N0 TO 30000:NEXT:NEXT:RETURN 4030 R=CSRLIN:C=POS(N0)-N1:LOCATE R,C:RETURN 4040 COLOR ,N0:LOCATE N24,N1:PRINT SPACE$(79);:LOCATE N24,N1:RETURN 4050 COLOR ,N0:LOCATE N25,N1:PRINT SPACE$(79);:LOCATE N25,N1:RETURN 4060 GOSUB 4050:GOSUB 4040:RETURN ' '*** KEYBOARD INPUT ROUTINE *** ' 4100 COLOR N15,N0,N0:NIN$="":SV=N1 COLOR N27:PRINT CHR$(22);:COLOR N15:GOSUB 4030:IF MAXCHR=N1 OR NUMONLY=N1 THEN MAXCHR=N5 ELSE IF MAXCHR=N2 THEN MAXCHR=N13 ELSE MAXCHR=N19 4110 IN$=INKEY$:IF IN$="" THEN 4110 ELSE K=ASC(IN$):IF K=N14 THEN SV=N0 ELSE IF K=N18 THEN SV=N1 IF K=N13 THEN IN$=NIN$:IF IN$="" THEN 4110 ELSE PRINT" ";:GOTO 4160 IF K=27 THEN IN$="":ROW=CSRLIN:COL=POS(0)-LEN(NIN$):GOSUB 4010:GOTO 4160 IF K=N8 THEN IF LEN(NIN$)57) AND K<>45 THEN 4110 IF LEN(NIN$)>MAXCHR OR (K=47 AND MAXCHR=N5) OR K<32 OR K=44 OR K>126 THEN 4110 ELSE PRINT IN$;:COLOR N27:PRINT CHR$(22);:COLOR N15:NIN$=NIN$+IN$:GOSUB 4030:GOTO 4110 4160 MAXCHR=N0:RETURN ' 4200 CHR=N1:SV=N1:GOTO 27000 'KB INPUT FOR ONE CHARACTER ONLY ' 4250 FOR Z=N0 TO N2:FOR ZZ=N0 TO N6:DF$(Z,ZZ)=DBU$(Z,ZZ):DBU$(Z,ZZ)="":NEXT ZZ:NEXT Z:RETURN 'SAVE TO TEMPORARY & CLEAR SPACES 4260 FOR Z=N0 TO N2:FOR ZZ=N0 TO N6:DBU$(Z,ZZ)=DF$(Z,ZZ):NEXT ZZ:NEXT Z:RETURN 'GET BACK OLD VALUES ' ' *** M A I N E N T R Y *** ' '*** READ ALL DEFINITIONS FROM THE FILE *** ' 4500 CLOSE #1:DBUCHEK=N1:OPEN "CP.DBU" FOR INPUT AS #1:DBUCHEK=N0 Z=N1 WHILE NOT EOF(1) AND Z<=N60 : LINE INPUT #1, DBUDEF$(Z):Z=Z+N1 : WEND CLOSE #1:DBUMAX=Z-N1 ' '*** DISPLAY ALL DEFINITIONS *** ' 4580 DEF SEG=SEGDEF:CALL ABSOLUTE(N1,CLRBUF):COLOR N0,N0,N0 IN$="USER DEFINABLE DATABASE UNITS":R=N1:C=N24:BC=N0:FC=N14:GOSUB 9500 HEADING$=" # DBU Description ":HEADLEN=N26 NUMITEM=DBUMAX:NUMROW=N20:GOSUB 9750 CALL ABSOLUTE(N1,POPSCRN) ' 4686 GOSUB 4060:COLOR N11:PRINT" Current DBU is #";:COLOR N10:PRINT VAL(DIS$); GOSUB 4050:COLOR N11:PRINT" BUTTON #1 to select, BUTTON #2 to return to INFO menu "; NUMLF=N2:GOSUB 10000 IF CANCEL<>N1 THEN 4700 4697 COLOR N11,N0,N0:GOSUB 4060:PRINT" Current DBU is #";:COLOR N10:PRINT VAL(DIS$);:COLOR N11:GOSUB 4050:PRINT"WAIT"; IF REDEFINE=N1 THEN CLOSE #1:OPEN"CP.DBU" FOR OUTPUT AS #1:FOR Z=N1 TO DBUMAX:PRINT #1,DBUDEF$(Z):NEXT Z:CLOSE #1 'JOHNY 4699 IF (TISM=N1 AND INPUTDV>N2) THEN IF INPUTDV=N3 OR INPUTDV=N5 OR INPUTDV=N6 OR INPUTDV=N7 THEN CALL ABSOLUTE (XT,YT,BUT,READTP%) S1$="#" FOR Z=N1 TO VAL(DBU$(N2,N0)) S2$=DBU$(N2,Z):GOSUB 18000:IF THESAME=N1 THEN DBU$(N2,Z)=" " NEXT CHAIN "CPINFO.EXE" 'JOHNY 4700 SELECT=VAL(TV$) GOSUB 4060:COLOR N11,N0,N0:LOCATE N25,N1:PRINT" BUTTON #1 to or , BUTTON #2 for no change"; COLOR N10:LOCATE N25,N17:PRINT"Change";:LOCATE N25,N31:PRINT"Redefine"; NUMCOL=N2:WORD1$="Change":WORD2$="Redefine":ROW=N25:COL1=N17:COL2=N31:GOSUB 220:COLOR N11,N0,N0 IF CANCEL=N1 THEN 4686 GOSUB 4250 'SAVE THE OLD VALUES FIRST IF VAL(TV$)=N1 THEN CHGDBU=N1:DB$=DBUDEF$(SELECT):GOTO 5990 'CHANGE ' '*** DEFINING DBU *** ' 5000 GOSUB 40010:COLOR N11,N0,N0 : CHGDBU=N0 : CALL ABSOLUTE(N1,CLRBUF) IN$=" Example of defining the Data Base Unit :" CALL ABSOLUTE(IN$,N2,N1,N0,N11,N1,LOADBUF) IN$=" 1) DBU NAME : " CALL ABSOLUTE(IN$,N3,N21,N0,N7,N1,LOADBUF) IN$="Ft_In" CALL ABSOLUTE(IN$,N3,N43,N0,N15,N1,LOADBUF) IN$="" CALL ABSOLUTE(IN$,N3,N48,N0,N10,N1,LOADBUF) IN$=" 2) Description: " CALL ABSOLUTE(IN$,N4,N21,N0,N7,N1,LOADBUF) IN$="2 tolerance" CALL ABSOLUTE(IN$,N4,N43,N0,N15,N1,LOADBUF) IN$=""    CALL ABSOLUTE(IN$,N4,N54,N0,N10,N1,LOADBUF) IN$=" 3) 1 DBU = " CALL ABSOLUTE(IN$,N5,N21,N0,N7,N1,LOADBUF) IN$="1"+CHR$(34) CALL ABSOLUTE(IN$,N5,N43,N0,N15,N1,LOADBUF) IN$="" CALL ABSOLUTE(IN$,N5,N45,N0,N10,N1,LOADBUF) IN$=" 4) definition : " CALL ABSOLUTE(IN$,N6,N21,N0,N7,N1,LOADBUF) IN$=".01=.01"+CHR$(34) CALL ABSOLUTE(IN$,N6,N43,N0,N15,N1,LOADBUF) IN$="" CALL ABSOLUTE(IN$,N6,N51,N0,N10,N1,LOADBUF)  IN$=" 5) definition : " CALL ABSOLUTE(IN$,N7,N21,N0,N7,N1,LOADBUF) IN$="12=1'" CALL ABSOLUTE(IN$,N7,N43,N0,N15,N1,LOADBUF) IN$=" " CALL ABSOLUTE(IN$,N7,N48,N0,N10,N1,LOADBUF) IN$=" 6) definition : " CALL ABSOLUTE(IN$,N8,N21,N0,N7,N1,LOADBUF) IN$="" CALL ABSOLUTE(IN$,N8,N43,N0,N10,N1,LOADBUF) IN$="":FOR I=N1 TO N80:IN$=IN$+CHR$(220):NEXT I CALL ABSOLUTE(IN$,N1,N1,N0,N13,N1,LOADBUF) IN$="":FOR I=N1 TO N80:IN$=IN$+CHR$(223):NEXT I CALL ABSOLUTE(IN$,N9,N1,N0,N13,N1,LOADBUF) IN$=CHR$(221):NIN$=CHR$(222) FOR Z=N2 TO N8 CALL ABSOLUTE(IN$,Z,N1,N0,N13,N1,LOADBUF) CALL ABSOLUTE(NIN$,Z,N80,N0,N13,N1,LOADBUF) NEXT Z IN$="Define your DBU and at end or to exit" CALL ABSOLUTE(IN$,N10,N1,N0,N11,N1,LOADBUF) IN$="" CALL ABSOLUTE(IN$,N10,N23,N0,N15,N1,LOADBUF) IN$="" CALL ABSOLUTE(IN$,N10,N41,N0,N15,N1,LOADBUF) ' '*** DISPLAY OLD VALUES *** ' IN$="1) DBU NAME :" CALL ABSOLUTE(IN$,N11,N1,N0,N7,N1,LOADBUF) IN$="2) Description:" CALL ABSOLUTE(IN$,N12,N1,N0,N7,N1,LOADBUF) IN$="3) 1 DBU =" CALL ABSOLUTE(IN$,N13,N1,N0,N7,N1,LOADBUF) IN$="4) definition :" CALL ABSOLUTE(IN$,N14,N1,N0,N7,N1,LOADBUF) IN$="5) definition :" CALL ABSOLUTE(IN$,N15,N1,N0,N7,N1,LOADBUF) IN$="6) definition :" CALL ABSOLUTE(IN$,N16,N1,N0,N7,N1,LOADBUF) IN$="7) definition :" CALL ABSOLUTE(IN$,N17,N1,N0,N7,N1,LOADBUF) IN$="8) definition :" CALL ABSOLUTE(IN$,N18,N1,N0,N7,N1,LOADBUF) IN$="9) definition :" CALL ABSOLUTE(IN$,N19,N1,N0,N7,N1,LOADBUF) ' IN$=" OLD DEFINITIONS " CALL ABSOLUTE(IN$,N21,N11,N7,N0,N1,LOADBUF) IN$=" NEW DEFINITIONS " CALL ABSOLUTE(IN$,N21,N50,N7,N0,N1,LOADBUF) ' NIN$=DBUDEF$(SELECT) P=INSTR(NIN$,","):IF P=N0 THEN Z=LEN(NIN$)+N1 ELSE Z=P TV$=LEFT$(NIN$,Z-N1)  Z=INSTR(TV$,"/"):IF Z=N0 THEN IN$=LEFT$(TV$,N6) ELSE IN$=LEFT$(LEFT$(TV$,Z-N1),N6) CALL ABSOLUTE(IN$,N11,N18,N0,N11,N1,LOADBUF) IF Z<>N0 THEN IN$=LEFT$(RIGHT$(TV$,LEN(TV$)-Z),N14):CALL ABSOLUTE(IN$,N12,N18,N0,N11,N1,LOADBUF) IF P=N0 THEN 5200 ELSE NIN$=RIGHT$(NIN$,LEN(NIN$)-P) P=INSTR(NIN$,","):IF P=N0 THEN Z=LEN(NIN$)+N1 ELSE Z=P IN$=LEFT$(LEFT$(NIN$,Z-N1),N20) CALL ABSOLUTE(IN$,N14,N18,N0,N11,N1,LOADBUF) IF P=N0 THEN 5200 ELSE NIN$=RIGHT$(NIN$,LEN(NIN$)-P)  P=INSTR(NIN$,","):IF P=N0 THEN Z=LEN(NIN$)+N1 ELSE Z=P IN$=LEFT$(LEFT$(NIN$,Z-N1),N20) CALL ABSOLUTE(IN$,N15,N18,N0,N11,N1,LOADBUF) IF P=N0 THEN 5200 ELSE NIN$=RIGHT$(NIN$,LEN(NIN$)-P) P=INSTR(NIN$,","):IF P=N0 THEN Z=LEN(NIN$)+N1 ELSE Z=P IN$=LEFT$(LEFT$(NIN$,Z-N1),N20) CALL ABSOLUTE(IN$,N16,N18,N0,N11,N1,LOADBUF) IF P=N0 THEN 5200 ELSE NIN$=RIGHT$(NIN$,LEN(NIN$)-P) P=INSTR(NIN$,","):IF P=N0 THEN Z=LEN(NIN$)+N1 ELSE Z=P IN$=LEFT$(LEFT$(NIN$,Z-N1),N20) CALL ABSOLUTE(IN$,N17,N18,N0,N11,N1,LOADBUF) IF P=N0 THEN 5200 ELSE NIN$=RIGHT$(NIN$,LEN(NIN$)-P) P=INSTR(NIN$,","):IF P=N0 THEN Z=LEN(NIN$)+N1 ELSE Z=P IN$=LEFT$(LEFT$(NIN$,Z-N1),N20) CALL ABSOLUTE(IN$,N18,N18,N0,N11,N1,LOADBUF) IF P=N0 THEN 5200 ELSE NIN$=RIGHT$(NIN$,LEN(NIN$)-P) P=INSTR(NIN$,","):IF P=N0 THEN Z=LEN(NIN$)+N1 ELSE Z=P IN$=LEFT$(LEFT$(NIN$,Z-N1),N20) CALL ABSOLUTE(IN$,N19,N18,N0,N11,N1,LOADBUF) ' '*** GET NEW VALUES ***    ' 5200 IN$="1) DBU NAME :" CALL ABSOLUTE(IN$,N11,N40,N0,N7,N1,LOADBUF) IN$="2) Description:" CALL ABSOLUTE(IN$,N12,N40,N0,N7,N1,LOADBUF) IN$="3) 1 DBU =" CALL ABSOLUTE(IN$,N13,N40,N0,N7,N1,LOADBUF) IN$="4) definition :" CALL ABSOLUTE(IN$,N14,N40,N0,N7,N1,LOADBUF) IN$="5) definition :" CALL ABSOLUTE(IN$,N15,N40,N0,N7,N1,LOADBUF) IN$="6) definition :" CALL ABSOLUTE(IN$,N16,N40,N0,N7,N1,LOADBUF) IN$="7) definition :"  CALL ABSOLUTE(IN$,N17,N40,N0,N7,N1,LOADBUF) IN$="8) definition :" CALL ABSOLUTE(IN$,N18,N40,N0,N7,N1,LOADBUF) IN$="9) definition :" CALL ABSOLUTE(IN$,N19,N40,N0,N7,N1,LOADBUF) CALL ABSOLUTE(N1,POPSCRN) CHGFLAG=N0 FOR Z=N0 TO N6:D$(Z)="":NEXT Z ' '*** NO WAY JOSE, DBU's ARE FOR CADPLAN TRANSLATOR *** ' IF SELECTN40 THEN 5360 COLOR N12 GOSUB 4040:PRINT"DBU #"; COLOR N10 PRINT SELECT;  IF SELECT>N56 THEN COLOR N12:PRINT" is used by database translator and"; COLOR N12 PRINT" may NOT be redefined"; COLOR N11:GOSUB 4050:PRINT"DBU #'s 41 - 56 are user definable. Hit any key "; GOSUB 4200 GOSUB 4260:GOTO 4580 ' 5360 COLOR N15:ROW=N11:COL=N57:GOSUB 4010:MAXCHR=N1:GOSUB 4100 DBUNAME$=IN$ : IF IN$="" OR CHGFLAG=N1 THEN 5610 5380 COLOR N15:ROW=N12:COL=N57:GOSUB 4010:MAXCHR=N2:GOSUB 4100 DBUDESC$=IN$ : IF IN$="" OR CHGFLAG=N1 THEN 5610 5400 COLOR N15:ROW=N13:COL=N57:GOSUB 4010:GOSUB 4100 D$(N0)=IN$ : IF IN$="" THEN 5480 5420 IF LEFT$(D$(N0),N1)=" " THEN D$(N0)=RIGHT$(D$(N0),LEN(D$(N0))-N1):GOTO 5420 5430 IF RIGHT$(D$(N0),N1)=" " THEN D$(N0)=LEFT$(D$(N0),LEN(D$(N0))-N1):GOTO 5430 IF D$(N0)="" THEN 5480 P=INSTR(D$(N0),"/") IF P=N0 THEN IF VAL(D$(N0))<=N0 THEN 5400 ELSE RATIO#=1#/VAL(D$(N0)+"#"):GOTO 5480 IF VAL(D$(N0))=N0 OR VAL(RIGHT$(D$(N0),LEN(D$(N0))-P))=N0 THEN 5400 ELSE RATIO#=1#/( VAL(D$(N0)+"#")/VAL(RIGHT$(D$(N0),LEN(D$(N0))-P)+"#") ) 5480 IF CHGFLAG=N1 THEN 5610 5490 COLOR N15:ROW=N14:COL=N57:GOSUB 4010:GOSUB 4100 D$(N1)=IN$ : IF IN$="" OR CHGFLAG=N1 THEN 5610 5510 COLOR N15:ROW=N15:COL=N57:GOSUB 4010:GOSUB 4100 D$(N2)=IN$ : IF IN$="" OR CHGFLAG=N1 THEN 5610 5530 COLOR N15:ROW=N16:COL=N57:GOSUB 4010:GOSUB 4100 D$(N3)=IN$ : IF IN$="" OR CHGFLAG=N1 THEN 5610 5550 COLOR N15:ROW=N17:COL=N57:GOSUB 4010:GOSUB 4100 D$(N4)=IN$ : IF IN$="" OR CHGFLAG=N1 THEN 5610 5570 COLOR N15:ROW=N18:COL=N57:GOSUB 4010:GOSUB 4100 D$(N5)=IN$ : IF IN$="" OR CHGFLAG=N1 THEN 5610 5590 COLOR N15:ROW=N19:COL=N57:GOSUB 4010:GOSUB 4100 D$(N6)=IN$ 5610 COLOR N15:CHGFLAG=N0:GOSUB 4060:PRINT"Enter number "; COLOR N11:PRINT"to change, "; COLOR N15:PRINT" "; COLOR N11:PRINT"to save, or "; COLOR N15:PRINT" "; COLOR N11:PRINT"to cancel new definitions "; 5670 ROW=N24:COL=77:GOSUB 4010:GOSUB 4200:GOSUB 4060 IF IN$=CHR$(27) THEN COLOR N11:PRINT"Canceling new definitions...";:GOSUB 4020:GOTO 6580 IF IN$="" THEN 5710 IF ASC(IN$)<49 OR ASC(IN$)>57 THEN 5670 5700 CHGFLAG=N1:ON (VAL(IN$)) GOTO 5360,5380,5400,5490,5510,5530,5550,5570,5590 5710 IF LEFT$(DBUNAME$,N1)=" " THEN DBUNAME$=RIGHT$(DBUNAME$,LEN(DBUNAME$)-N1):GOTO 5710 5720 IF RIGHT$(DBUNAME$,N1)=" " THEN DBUNAME$=LEFT$(DBUNAME$,LEN(DBUNAME$)-N1):GOTO 5720 IF DBUNAME$="" THEN COLOR N12:GOSUB 4060:PRINT"DBU NAME must be specified";:IN$="1":GOTO 5700 5740 IF LEFT$(DBUDESC$,N1)=" " THEN DBUDESC$=RIGHT$(DBUDESC$,LEN(DBUDESC$)-N1):GOTO 5740 5750 IF RIGHT$(DBUDESC$,N1)=" " THEN DBUDESC$=LEFT$(DBUDESC$,LEN(DBUDESC$)-N1):GOTO 5750 IF DBUDESC$<>"" THEN TMPNAME$=DBUNAME$+"/"+DBUDESC$ ELSE TMPNAME$=DBUNAME$ FOR Z=N0 TO N2:FOR ZZ=N0 TO N6:DBU$(Z,ZZ)="":NEXT ZZ:NEXT Z ' '*** SEARCH FOR COMMA (,) IN EACH DEFINITION *** ' FOR Z=N1 TO N6 P=INSTR(D$(Z),",") 'COMMA IS IF P<>N0 THEN Z=N6:TOTAL=Z 'INVALID    NEXT Z IF P<>N0 THEN 6550 ' '*** STORE ALL DEFINITIONS TO ONE VARIABLE *** ' DB$="" FOR Z=N1 TO N6 5910 IF LEFT$(D$(Z),N1)=" " THEN D$(Z)=RIGHT$(D$(Z),LEN(D$(Z))-N1):GOTO 5910 IF D$(Z)<>"" THEN DB$=DB$+","+D$(Z) NEXT Z DB$=TMPNAME$+DB$ : TMPNAME$=DB$ ' '*** CHECK IF DEFINITION IS VALID *** ' 5990 TOTAL=N0:NOMORE=N0:DBU$(N1,N0)="D" 'SET DEFAULT VALUE P=INSTR(DB$,",") IF P=N0 THEN 6550  IN$=LEFT$(DB$,P-N1) P1=INSTR(IN$,"/") IF P1=N0 THEN IN$=LEFT$(IN$,N6) ELSE IN$=LEFT$(LEFT$(IN$,P1-N1),N6) DBU$(N0,N0)=IN$ 6060 DB$=RIGHT$(DB$,LEN(DB$)-P) 6070 IF NOMORE=N1 THEN 6350 P=INSTR(DB$,",") IF P=N0 THEN NOMORE=N1:P=LEN(DB$)+N1 TOTAL=TOTAL+N1 IF TOTAL>N6 THEN 6350 S$=LEFT$(DB$,P-N1) 'GET EACH COLUMN IF NOMORE=N0 THEN DB$=RIGHT$(DB$,LEN(DB$)-P) IF S$="" THEN 6060 Z=INSTR(S$,"=")  IF Z=N0 THEN 6550 DBU$(N0,TOTAL)=LEFT$(S$,Z-N1) '# IN DBU ZZ!=VAL(DBU$(N0,TOTAL)) IF ZZ!<0! THEN 6550 'CHECK IF INVALID ? S$=RIGHT$(S$,LEN(S$)-Z) 'GET THE EQUIVALENT # ZZ!=VAL(S$) IF ZZ!<=0! THEN 6550 'CHECK IF INVALID ? 6230 IF S$<>"" THEN Z=ASC(LEFT$(S$,N1)) ELSE 6550 IF Z=32 OR Z=43 OR Z=45 OR Z=46 OR (Z>47 AND Z<58) THEN DBU$(N1,TOTAL)=DBU$(N1,TOTAL)+LEFT$(S$,N1):S$=RIGHT$(S$,LEN(S$)-N1):GOTO 6230 IF Z=44 THEN 6550 'IF COMMA THEN INVALID IF Z<>47 AND VAL(RIGHT$(S$,LEN(S$)-N1))=N0 THEN 6330 'fraction IF DBU$(N1,N0)<>"D" THEN 6330 Z!=VAL(RIGHT$(S$,LEN(S$)-N1)) 'GET DENOMINATOR 'JOHNY IF Z!>32767 THEN 6550 'DENOMINATOR IS TOO LARGE AS AN INTEGER 'JOHNY IF INT(Z!/ZZ!)*ZZ!=Z! THEN IN$=STR$(INT(Z!/ZZ!)):DBU$(N1,N0)=RIGHT$(IN$,LEN(IN$)-N1) ELSE GOSUB 6550 'JOHNY DBU$(N2,TOTAL)=RIGHT$(S$,LEN(S$)-LEN(STR$(Z!))) IF DBU$(N2,TOTAL)="" THEN 6550 ELSE DBU$(N2,TOTAL)=LEFT$(DBU$(N2,TOTAL),N6) 'JOHNY DBU$(N1,TOTAL)=STR$(ZZ!/Z!) 'JOHNY GOTO 6070 6330 IF RIGHT$(DBU$(N1,TOTAL),N1)=" " THEN DBU$(N1,TOTAL)=LEFT$(DBU$(N1,TOTAL),LEN(DBU$(N1,TOTAL))-N1):S$=" "+S$:GOTO 6330 DBU$(N2,TOTAL)=LEFT$(S$,N6) 'GET THE UNIT 'JOHNY GOTO 6070 6350 DBU$(N2,N0)=STR$(TOTAL) 'STORE TOTAL COLUMNS USED WRONG=N0:ZZZ=TOTAL FOR Z=N0 TO ZZZ:FOR ZZ=N0 TO ZZZ 'CHECK IF UNITS ARE THE SAME IF Z<>ZZ THEN S1$=DBU$(N2,Z):S2$=DBU$(N2,ZZ):GOSUB 18000:IF THESAME=N1 THEN WRONG=N1:TOTAL=ZZ:Z=ZZZ:ZZ=ZZZ 'SAME=INVALID NEXT ZZ:NEXT Z  'JOHNY IF WRONG=N1 THEN 6550 IF VAL(DBU$(N0,N1)+"#")=0# OR VAL(DBU$(N1,N1)+"#")=0# THEN TOTAL=N1:GOTO 6550 IF (VAL(DBU$(N0,N1)+"#")/VAL(DBU$(N1,N1)+"#"))=(L1#/L2#) THEN WRONG=N1:TOTAL=Z:Z=ZZZ 6470 NEXT Z IF WRONG=N1 THEN 6550 IF CHGDBU=N1 THEN DIS$=STR$(SELECT):GOTO 4697 'IF CHANGE ONLY, THEN EXIT IF D$(N0)="" THEN 6540 RATIO#=RATIO#/( VAL(DBU$(N0,N1)+"#")/VAL(DBU$(N1,N1)+"#") ) IF RATIO#<1.05# AND RATIO#>.95# THEN 6540 GOSUB 4060:PRINT"Please double check definition #1. Change ? (Y)es "; GOSUB 4200:IF IN$="Y" OR IN$="y" THEN GOSUB 4060:CHGFLAG=N1:GOTO 5490 6540 GOTO 6600 ' '*** ERROR TRAP FOR CHANGIN  G DBU *** ' 6544 COLOR N12 GOSUB 4060:PRINT"Error in DBU #"; COLOR N10 PRINT SELECT; COLOR N12 GOSUB 4050:PRINT"Redefine ?"; COLOR N10 LOCATE N25,N20:PRINT"NO YES"; NUMCOL=N2 WORD1$="NO" WORD2$="YES" ROW=N25 COL1=N20 COL2=N28 GOSUB 220 COLOR N12,N0,N0 IF VAL(TV$)=N2 THEN 5000 ELSE GOSUB 4260:GOTO 4686 ' '*** ERROR TRAP FOR DEFINING DBU *** ' 6550 IF CHGDBU=N1 THEN 6544 ELSE COLOR N12:GOSUB 4060:IF TOTAL=N0 THEN PRINT"No definition"; ELSE PRINT"ERROR, might be in definition #";TOTAL; GOSUB 4050:PRINT"Do you want to change it ? (Y)es "; GOSUB 4200:IF IN$="Y" OR IN$="y" THEN GOSUB 4060:GOTO 5610 6580 GOSUB 4260:GOTO 6610 ' 6600 REDEFINE=N1 'JOHNY DBUDEF$(SELECT)=TMPNAME$ DIS$=STR$(SELECT) 6610 GOTO 4580 ' '*** ERROR TRAP ROUTINE *** ' 9000 COLOR N12,N0,N0:GOSUB 4060 IF ERR=6 THEN PRINT"OUT OF BOUNDS"; IF ERR=7 THEN PRINT"MEMORY OVERFLOW"; IF ERR=25 THEN PRINT"INTERFACE FAULT"; IF ERR=27 THEN PRINT"PRINTER NOT READY"; IF ERR=52 THEN PRINT"BAD FILE NAME"; IF ERR=53 THEN PRINT"FILE NOT FOUND"; IF ERR=53 AND DBUCHEK=N1 THEN DBUCHEK=N0:PRINT"FILE CP.DBU NOT FOUND"; IF ERR=70 THEN PRINT"DISK IS WRITE PROTECTED"; IF ERR=71 THEN PRINT"DISK IS NOT READY"; IF ERR=57 THEN PRINT"DEVICE I/O ERROR"; IF ERR=11 THEN PRINT"DIVISION BY ZERO"; IF ERR=2 THEN PRINT"SYNTAX ERROR"; IF ERR=9 THEN PRINT"LAYER OVERFLOW"; GOSUB 4050:PRINT"DOS Error #";ERR;" Hit any key "; GOSUB 4020:GOSUB 4200 IF MAIN=N13 THEN RESUME 1120 IF ZLAY(1000,N2)=N1 THEN RESUME 4697 ELSE RESUME 4699 ' 9500 CALL ABSOLUTE(IN$,R,C,BC,FC,N1,LOADBUF):RETURN ' 9750 '*** Initialize the page *** ' should pass: Heading corresponds to each column (HEADING$) ' Heading length (HEADLEN) ' Total of items (NUMITEM) ' Maximum number of rows each column can has (NUMROW) ' NUMCOL=NUMITEM\NUMROW:IF (NUMITEM MOD NUMROW)<>N0 THEN NUMCOL=NUMCOL+N1 GAP=(80-HEADLEN*NUMCOL)\(NUMCOL+N1):IF GAP=N0 THEN C=N1 ELSE C=GAP+N1 IF NUMITEM>N0 THEN IN$=HEADING$:R=N2:BC=N0:FC=11:GOSUB 9500:MINCTR1=N1:MAXCTR1=NUMITEM:MERGIN1=C+N1 IF NUMITEM>N1*NUMROW THEN C=N2*GAP+N1*HEADLEN+N1:GOSUB 9500:MINCTR2=MINCTR1+NUMROW:MAXCTR2=NUMITEM:MERGIN2=C+N1:MAXCTR1=MINCTR2-N1 IF NUMITEM>N2*NUMROW THEN C=N3*GAP+N2*HEADLEN+N1:GOSUB 9500:MINCTR3=MINCTR2+NUMROW:MAXCTR3=NUMITEM:MERGIN3=C+N1:MAXCTR2=MINCTR3-N1 IF NUMITEM>N3*NUMROW THEN C=N4*GAP+N3*HEADLEN+N1:GOSUB 9500:MINCTR4=MINCTR3+NUMROW:MAXCTR4=NUMITEM:MERGIN4=C+N1:MAXCTR3=MINCTR4-N1 IF NUMITEM>N4*NUMROW THEN C=N5*GAP+N4*HEADLEN+N1:GOSUB 9500:MINCTR5=MINCTR4+NUMROW:MAXCTR5=NUMITEM:MERGIN5=C+N1:MAXCTR4=MINCTR5-N1 IF NUMITEM>N5*NUMROW THEN C=N6*GAP+N5*HEADLEN+N1:GOSUB 9500:MINCTR6=MINCTR5+NUMROW:MAXCTR6=NUMITEM:MERGIN6=C+N1:MAXCTR5=MINCTR6-N1 IF GAP=N0 THEN S=N2 ELSE S=GAP+N2 FOR Z=N1 TO NUMITEM IF ZN0 THEN RETURN TEMPB=N1 IF NUMCOL=N1 THEN XMMAX=99 ELSE IF NUMCOL=N2 THEN XMMAX=149 ELSE IF NUMCOL=N3 THEN XMMAX=199 ELSE IF NUMCOL=N4 THEN XMMAX=249 ELSE IF NUMCOL=N5 THEN XMMAX=299 ELSE IF NUMCOL=N6 THEN XMMAX=349 ELSE IF NUMCOL=N7 THEN XMMAX=399 COLFLAG=N1 MAXCTR=MAXCTR1:MINCTR=MINCTR1 MERGIN=MERGIN1 XMMIN=50:YMMIN=8:YMMAX=(MAXCTR+N1-MINCTR)*8+N3 XMOUSE=XMMIN:YMOUSE=YMMAX RETURN ' ' '*** Mouse driven for SYMBOL VIEW *** ' Init. passes: Number of column, maximum is 7 (NUMCOL) ' (9750) Minimum index of each column (MINCTR1 ... MINCTR7) ' Maximum index of each column (MAXCTR1 ... MAXCTR7) ' Column # to place the data (MERGIN1 ... MERGIN7) ' ' Prog'er passes: # of rows skipped before placing the data (NUMLF) ' '--- Entry point --- ' 10000 SV=N0 CANCEL=N0:ACTBOX=TEMPB FC=N16:BC=N7 LB$="[":RB$="]"  GOSUB 10010 GOSUB 10040 IF CANCEL=N1 THEN TV$=" ":RETURN S$=STR$(ACTBOX):TV$=RIGHT$(S$,LEN(S$)-INSTR(S$," ")) TEMPB=ACTBOX:LB$=CHR$(16):RB$=CHR$(17) IF MAIN=N13 THEN ERAS=N0 ELSE FC=N16:BC=N7 GOSUB 10010 RETURN ' '--- Draw box or brakets --- ' 10010 IF ACTBOXMAXCTR THEN ACTBOX=MAXCTR:YMOUSE=(MAXCTR1*N8+N3)-((MAXCTR-MINCTR)*N8) IF MAIN=N13 THEN 10015 '  '--- DBU --- LOCATE NUMLF+ACTBOX-MINCTR+N1,MERGIN:COLOR FC,BC,N0 IF ACTBOX>N9 THEN PRINT RIGHT$(STR$(ACTBOX),N2); ELSE PRINT STR$(ACTBOX); RETURN ' 10015 '--- Symbol library --- IF DISCLR$<>"M" THEN COLOR 14,N0,N0 ELSE COLOR 15,N0,N0 IF ERAS=N1 THEN LB$=" ":RB$=" " ELSE LB$="[":RB$="]" LOCATE NUMLF+ACTBOX-MINCTR+N1,MERGIN-N1:PRINT LB$; LOCATE NUMLF+ACTBOX-MINCTR+N1,MERGIN+LEN(CNAM$(ACTBOX,N0)):PRINT RB$; RETURN ' '--- Move left & right --- ' 10020 IF MAIN=N13 THEN ERAS=N1 ELSE FC=N10:BC=N0 GOSUB 10010 IF LEFT<>N1 THEN ACTBOX=(ACTBOX-MINCTR+N1)+(COLFLAG-N1)*MAXCTR1 ELSE ACTBOX=ACTBOX-(ACTBOX-COLFLAG*MAXCTR1)-(MAXCTR1-(ACTBOX-MINCTR+N1)) IF COLFLAG=N1 THEN MERGIN=MERGIN1:MAXCTR=MAXCTR1:MINCTR=MINCTR1:GOTO 10030 IF COLFLAG=N2 THEN MERGIN=MERGIN2:MAXCTR=MAXCTR2:MINCTR=MINCTR2:GOTO 10030 IF COLFLAG=N3 THEN MERGIN=MERGIN3:MAXCTR=MAXCTR3:MINCTR=MINCTR3:GOTO 10030 IF COLFLAG=N4 THEN MERGIN=MERGIN4:MAXCTR=MAXCTR4:MINCTR=MINCTR4:GOTO 10030 IF COLFLAG=N5 THEN MERGIN=MERGIN5:MAXCTR=MAXCTR5:MINCTR=MINCTR5:GOTO 10030 IF COLFLAG=N6 THEN MERGIN=MERGIN6:MAXCTR=MAXCTR6:MINCTR=MINCTR6:GOTO 10030 IF COLFLAG=N7 THEN MERGIN=MERGIN7:MAXCTR=MAXCTR7:MINCTR=MINCTR7 10030 IF MAIN=N13 THEN ERAS=N0 ELSE FC=N16:BC=N7 GOSUB 10010:RETURN ' '--- Get input from the keyboard or mouse --- ' 10040 BUT=N0:GOSUB 10050:IF S$=" " THEN CANCEL=N1:BUT=N0:RETURN  IF S$<>"X" THEN 10040 ELSE BUT=N0 RETURN ' 10050 GOSUB 27600:IF S$="" THEN GOSUB 2730:GOSUB 10060:IF BUT=N1 THEN S$="X":RETURN ELSE IF BUT=N2 THEN S$=" ":RETURN ELSE RETURN IF S$="X" OR S$="x" THEN S$="X":RETURN IF S$=" " THEN RETURN IF ASC(S$)=N13 THEN S$=" ":RETURN IF LEN(S$)=N2 AND ASC(RIGHT$(S$,N1))=75 THEN XT=-XMMIN:GOSUB 10060:RETURN IF LEN(S$)=N2 AND ASC(RIGHT$(S$,N1))=77 THEN XT=XMMIN: GOSUB 10060:RETURN IF LEN(S$)=N2 AND ASC(RIGHT$(S$,N1))=  72 THEN YT=N8: GOSUB 10060:RETURN IF LEN(S$)=N2 AND ASC(RIGHT$(S$,N1))=80 THEN YT=-N8:GOSUB 10060:RETURN GOTO 10050 ' '--- Determine where the brakets move --- ' 10060 IF XT=N0 AND YT=N0 THEN RETURN GOSUB 10070: TBOX=FIX(YMOUSE\N8): IF ACTBOX=COLFLAG*MAXCTR1+N1-TBOX THEN RETURN IF MAIN=N13 THEN ERAS=N1 ELSE FC=N10:BC=N0 GOSUB 10010:ACTBOX=COLFLAG*MAXCTR1+N1-TBOX IF MAIN=N13 THEN ERAS=N0 ELSE FC=N16:BC=N7 GOSUB 10010 RETURN 10070 IF XT=N0 THEN 10080 XMOUSE=XMOUSE+XT:IF XMOUSEXMMAX THEN XMOUSE=XMMAX XBOX=FIX(XMOUSE\XMMIN):IF COLFLAG=XBOX THEN GOTO 10080 IF COLFLAG>XBOX THEN LEFT=N1 ELSE LEFT=N0 COLFLAG=XBOX:GOSUB 10020 10080 IF YT<>N0 THEN YMOUSE=YMOUSE+YT:IF YMOUSEYMMAX THEN YMOUSE=YMMAX XT=N0:YT=N0 RETURN ' '***** Tablet Scaling Subroutine ***** ' 11000 DEF SEG=SEGDEF IF INPUTDV=N3 OR INPUTDV=N5 OR INPUTDV=N6 THEN COMMODE=&H83:GINITCOM=&H1E:CALL ABSOLUTE(GINITCOM) IF INPUTDV=N7 THEN COMMODE=&H83:INTKURTA1=&H36:CALL ABSOLUTE (INTKURTA1) GOSUB 4060:GOSUB 4050:COLOR N11:PRINT"Do you want to scale your tablet ? N0 YES"; NUMCOL=N2:WORD1$="NO":WORD2$="YES":ROW=N25:COL1=38:COL2=44:GOSUB 220:COLOR N11,N0,N0 IF CANCEL=N1 OR VAL(TV$)=N1 THEN TISM=N1:GOTO 11120 TISM=N0:GOSUB 11170 11010 ERRTAB=N1:XDMMIN=SCRNDRWMAXXM1:COLOR N11:GOSUB 40010:LOCATE 25,29:PRINT" to abort scaling";:COLOR 15:LOCATE N2,N1:PRINT"Select lower left corner of MENU area";:FLAG=N1 WHILE FLAG GOSUB 11160:IF A=13 THEN A=N0:GOTO 11120 GOSUB 11190 IF BUT=&HFF THEN 11020 XTMMIN=TX:YTMMIN=TY IF BUT=N1 THEN GOSUB 11150:FLAG=N0 BUT=&HFF 11020 WEND GOSUB 11140 LOCATE N4,N1:PRINT"Select upper right corner of MENU area";:FLAG=N1 WHILE FLAG GOSUB 11160:IF A=13 THEN A=N0:GOTO 11120 GOSUB 11190 IF BUT=&HFF THEN 11030 XTMMAX=TX:YTMMAX=TY IF BUT=N1 THEN GOSUB 11150:FLAG=N0 BUT=&HFF 11030 WEND IF XTMMIN>=XTMMAX OR YTMMIN>=YTMMAX THEN ER$="INVALID AREA":GOSUB 11130:GOTO 11010 GOSUB 11140:RATIOXTD!=57/(XTMMAX-XTMMIN):RATIOYTD!=181/(YTMMAX-YTMMIN) 11040 LOCATE N6,N1:PRINT "Select lower left corner of drawing area";:FLAG=N1 WHILE FLAG GOSUB 11160:IF A=13 THEN A=N0:GOTO 11120 GOSUB 11190 IF BUT=&HFF THEN 11050 XTMIN=TX: YTMIN=TY IF BUT=N1 THEN GOSUB 11150:FLAG=N0 BUT=&HFF 11050 WEND IF XTMIN>XTMMIN AND XTMINYTMMIN AND YTMIN30000 THEN LOCATE N8,32:PRINT" ";:GOTO 11060 ELSE XMIN!=VAL(IN$) 11070 LOCATE N9,N3:PRINT"Enter Y value (-30K to +30K) ";:NUMONLY=N1:GOSUB 4100:NUMONLY=N0:IF IN$="" THEN 11120 ELSE IF VAL(IN$)<-30000 OR VAL(IN$)>30000 THEN LOCATE N9,32:PRINT" ";:GOTO 11070 ELSE YMIN!=VAL(IN$) 11080 LOCATE 11,N1:PRINT"Select upper right corner of drawing area";:FLAG=N1 WHILE FLAG GOSUB 11160:IF A=13 THEN A=N0:GOTO 11120 GOSUB 11190 IF BUT=&HFF THEN 11090 XTMAX=TX: YTMAX=TY IF BUT=N1 THEN GOSUB 11150:FLAG=N0 BUT=&HFF 11090 WEND IF XTMAX>XTMMIN AND XTMAXYTMMIN AND YTMAX30000 THEN LOCATE 13,32:PRINT" ";:GOTO 11100 ELSE XMAX!=VAL(IN$) 11110 LOCATE 14,N3:PRINT"Enter Y value (-30K to +30K) ";:NUMONLY=N1:GOSUB 4100:NUMONLY=N0:IF IN$="" THEN 11120 ELSE IF VAL(IN$)<-30000 OR VAL(IN$)>30000 THEN LOCATE 14,32:PRINT" ";:GOTO 11110   ELSE YMAX!=VAL(IN$) RATIOXTW! = (XMAX!-XMIN!)/(XTMAX-XTMIN) RATIOYTW! = (YMAX!-YMIN!)/(YTMAX-YTMIN) 11120 ERRTAB=N0:PDN=N1:RETURN 11130 COLOR 28:LOCATE 17,30:PRINT ER$;:FOR E=N1 TO N3:FOR D=N1 TO 32000:NEXT D:NEXT E:LOCATE 17,30:PRINT" ";:COLOR 15:RETURN 11140 COLOR 10:LOCATE ,46:PRINT"Location Accepted";:COLOR 15:RETURN 11150 FOR DB=N1 TO 15000:NEXT DB:RETURN 11160 A$=INKEY$:IF A$="" THEN RETURN ELSE A=ASC(A$):RETURN 11170 CALL ABSOLUTE(N1,CLRBUF) IN$="To properly position your drawing on the tablet, follow these steps:":CALL ABSOLUTE(IN$,N4,N1,N0,N15,N1,LOADBUF) IN$="1. Center the drawing on the tablet.":CALL ABSOLUTE(IN$,N7,N1,N0,N15,N1,LOADBUF) IN$="2. Select a line in the drawing which closely parallels either the X-axis":CALL ABSOLUTE(IN$,N9,N1,N0,N15,N1,LOADBUF) IN$=" (horizontal line) or the Y-axis (vertical line).":CALL ABSOLUTE(IN$,N10,N1,N0,N15,N1,LOADBUF) IN$=" From this point on, if you chose a horizontal line then observe the Y-value":CALL ABSOLUTE(IN$,N12,N1,N0,N15,N1,LOADBUF) IN$=" at the top of the screen; for a vertical line, observe the X-value.":CALL ABSOLUTE(IN$,N13,N1,N0,N15,N1,LOADBUF) IN$="3. Place the digitizing cursor on one end of the line which you have just":CALL ABSOLUTE(IN$,N15,N1,N0,N15,N1,LOADBUF) IN$=" selected and note the value at the top of the screen.":CALL ABSOLUTE(IN$,N16,N1,N0,N15,N1,LOADBUF) IN$="4. Place the cursor on the other end of the line and again note the value.":CALL ABSOLUTE(IN$,N18,N1,N0,N15,N1,LOADBUF) IN$="5. Repeat steps 3 & 4, adjusting the drawing as necessary, until the value":CALL ABSOLUTE(IN$,N20,N1,N0,N15,N1,LOADBUF) IN$=" observed at each end of the line is approximately the same.":CALL ABSOLUTE(IN$,N21,N1,N0,N15,N1,LOADBUF) IN$=" NOTE: A difference in values of 10 or less will still ensure accuracy.":CALL ABSOLUTE(IN$,N23,N1,N0,N15,N1,LOADBUF) IN$="6. Carefully secure the drawing to the tablet and press to continue.....":CALL ABSOLUTE(IN$,N25,N1,N0,N15,N1,LOADBUF) IN$="X =":CALL ABSOLUTE(IN$,N1,N31,N0,N15,N1,LOADBUF):IN$="Y =":CALL ABSOLUTE(IN$,N1,N42,N0,N15,N1,LOADBUF) CALL ABSOLUTE(N1,POPSCRN):LXLENGTH=N0:LYLENGTH=N0 11180 GOSUB 11160:IF A=13 THEN A=N0:RETURN CALL ABSOLUTE (TX,TY,BUT,READTP%) IF TX>9999 THEN XLENGTH=N5 ELSE IF TX>999 THEN XLENGTH=N4 ELSE IF TX>99 THEN XLENGTH=N3 ELSE IF TX>N9 THEN XLENGTH=N2 ELSE XLENGTH=N1 IF TY>9999 THEN YLENGTH=N5 ELSE IF TY>999 THEN YLENGTH=N4 ELSE IF TY>99 THEN YLENGTH=N3 ELSE IF TY>N9 THEN YLENGTH=N2 ELSE YLENGTH=N1 IF XLENGTH for no change":GOSUB 841:RETURN 11380 IF CURSOR(N2)>CURSOR(N1)*N2-N1 THEN CURSOR(N2)=CURSOR(N1)*N2-N1:RETURN ELSE RETURN 11390 CALL ABSOLUTE (CURSOR(N1),CURSOR(N2),CURSOR(N3),CURSOR(N4),SCRNDRWMAXY,N0,SCRNDRWMAXX,N0,CURSSET) CALL ABSOLUTE (SCRNDRWMAXY,N0,SCRNDRWMAXX,N0,SETWIN) GOSUB 40010:GOTO 4699 ' ' ' '*** STRING COMPARISON (UPPER CASE <--> LOWER CASE) *** ' ' This routine compares 2 strings stored in S1$ & S2$. ' It will ignore the leading and trailing blanks of ' each strings. ' If both strings are the same, it will pass you ' THESAME=1, otherwise THESAME=0. ' 'WHAT YOU SHOULD PASS :  ' S1$ (STRING 1) AND S2$ (STRING 2) ' 'WHAT YOU WILL GET : ' THESAME ( 1=IF BOTH STRINGS ARE THE SAME, 0=OTHERWISE ) ' 'NOTE : ' TO AVOID USING THE SAME VARIABLES, THIS ROUTINE USES ' THE VARIABLE NAMES STARTING WITH "COMP" ' ' 18000 IF LEFT$(S1$,N1)=" " THEN S1$=RIGHT$(S1$,LEN(S1$)-N1):GOTO 18000 'supress leading blanks 18010 IF RIGHT$(S1$,N1)=" " THEN S1$=LEFT$(S1$,LEN(S1$)-N1):GOTO 18010 'supress trailing blanks 18020 IF LEFT$(S2$,N1)=" " THEN S2$=RIGHT$(S2$,LEN(S2$)-N1):GOTO 18020 'supress leading blanks 18030 IF RIGHT$(S2$,N1)=" " THEN S2$=LEFT$(S2$,LEN(S2$)-N1):GOTO 18030 'supress trailing blanks THESAME=N1 COMPL1=LEN(S1$) : COMPL2=LEN(S2$) IF (COMPL1<>COMPL2 OR COMPL1=N0 OR COMPL2=N0) THEN THESAME=N0:GOTO 18060 'different length COMPL=N1 WHILE THESAME=N1 AND COMPL<=COMPL1 COMPZ=ASC(MID$(S1$,COMPL,N1)) : COMPZZZ=ASC(MID$(S2$,COMPL,N1)  ) IF (COMPZ<65 OR (COMPZ>90 AND COMPZ<97) OR COMPZ>122) THEN IF COMPZ<>COMPZZZ THEN THESAME=N0:GOTO 18050 ELSE 18040 'not alphabets IF COMPZ>64 AND COMPZ<91 THEN COMPZZ=COMPZ+32 ELSE COMPZZ=COMPZ-32 'get lower and upper case IF COMPZZZ<>COMPZ AND COMPZZZ<>COMPZZ THEN THESAME=N0 'not the same 18040 COMPL=COMPL+N1 'get next char 18050 WEND 18060 RETURN '  '*** RECORD THE KB INPUT IF NECESSARY *** ' 27000 27005 IF CHR<>N1 THEN 27025 ELSE GOSUB 27100:IN$=TXI$ 27010 RETURN 27020 INPUT #3,K:IF K=N9 THEN LINE INPUT #3,IN$:PRINT IN$;:GOSUB 27030 ELSE 27005 27025 CHR=N0:RETURN 27030 RETURN 27032 RETURN ' 27100 TXI$=INKEY$:IF TXI$="" THEN GOTO 27100 ELSE IF TXI$=CHR$(14) THEN SV=N0:GOTO 27100 ELSE IF TXI$=CHR$(18) THEN SV=N1:GOTO 27100 ELSE IF ASC(TXI$)=13 THEN TXI$="":RETURN ELSE PRINT TXI$;:RETURN ' '*** RECORD KB INPUT IF NECESSARY *** ' 27600 S$="" S$=INKEY$:IF S$=CHR$(14) THEN SV=N0:GOTO 27600 ELSE IF S$=CHR$(18) THEN SV=N1:GOTO 27600 RETURN ' 40000 SCRN=&H24:CALL ABSOLUTE (AH,AL,BH,BL,SCRN):RETURN 40010 LOCATE N1,N1:GOSUB 40020 AH=N0:AL=N3:BH=N0:BL=N0:GOSUB 40000 'CLS, SCREEN 0,0, WIDTH 80 LOCATE ,,N0 RETURN 40020 INITCRT=&H6:CALL ABSOLUTE (INITCRT):ROW=N1:COL=N1:RETURN 'CLS, SCREEN 1,0  'CPTRANS.BAS CADDRAFT/MINDSET VERSION 1.40 (C)Copyright PERSONAL CAD SYSTEMS, INC. JUNE 1984 ' DEFINT A-Z DIM LAY(1000,2),LAYVM(65,1),PCT(65),LINET(65),CNUM(120,7),CLRT(65) DIM INFO$(65),CNAM$(120,1),VREC!(5,2),TXDBU(15),GRIDS(10,1),PENNUM(65) N0=0:N1=1:N2=2:N3=3:N4=4:N5=5:N6=6:N7=7:N8=8:N9=9 ' 10 ON ERROR GOTO 9000 FIRSTIME=N1:DIM ALLSYMS$(57) ALLSYMS=N0:WRITELAY=66:READLAY=69:BLDFILE$="CDMINDST.BLD" FILECHEK=N1:CLOSE 1:OPEN BLDFILE$ FOR INPUT AS #1:CLOSE 1:FILECHEK=N0 SEGDEF=&H1900:DEF SEG=SEGDEF:CALL LOADER(SEGDEF,N0,STATUS,BLDFILE$):IF STATUS<>N0 THEN 9100 HRAMSTART=&H1E00:SETHRAM=&H48:CALL ABSOLUTE (HRAMSTART,N0,SETHRAM) N75=75:CALL ABSOLUTE (MEMORY,MLAY,N75):MLAY=N7:GOSUB 780 40 CLS:COLOR 14:LOCATE N1,16:PRINT"(C) Copyright Personal CAD Systems - June, 1984"; COLOR 15:LOCATE N3,N1:PRINT"This program translates 1.30 & 1.35 File and Symbol databases to 1.40 format."; 45 IF FIRSTIME=N1 THEN LOCATE 5,1:PRINT"On which disk drive do Files and Symbols reside? (A or B) ";:GOSUB 861:ROWNUM=5:GOSUB 810:IF IN$="" THEN 45 IF FIRSTIME=N1 THEN DL=ASC(IN$):IF (DL>64 AND DL<67) OR (DL>96 AND DL<99) THEN DRIVE$=IN$:FIRSTIME=N0 ELSE 45 50 LOCATE N5,N1:PRINT"Translate (F)ile or (S)ymbol, (E)xit, (C)hange drive? (Enter F,S,E, or C) ";:GOSUB 861 IF IN$="F" OR IN$="f" THEN DBTYPE=N1:EXT$=".DBF":GOTO 55 IF IN$="S" OR IN$="s" THEN DBTYPE=N2:EXT$=".SYM":GOTO 55 IF IN$="E" OR IN$="e" THEN 8000 IF IN$="C" OR IN$="c" THEN 1000 ELSE ROWNUM=N5:GOSUB 810:GOTO 50 55 LOCATE N7,N1:IF DBTYPE=N2 THEN PRINT"Enter name of symbol (.SYM) to be translated: ";:GOSUB 897:INFIL$=IN$+EXT$:OUTFIL$=INFIL$:OVERWRITE=N1:GOSUB 840:GOTO 1643 PRINT"Enter name of file (.DBF) to be translated: ";:GOSUB 897:INFIL$=IN$+EXT$ 60 GOSUB 800:GOSUB 840:GOTO 1643 ' '*** GENERAL PURPOSE SUBROUTINES *** ' 780 FOR Z=N0 TO 1000:LAY(Z,N0)=N0:LAY(Z,N1)=N0:LAY(Z,N2)=N0:NEXT FOR Z=N1 TO MLAY:CALL ABSOLUTE(LAY(N0,N0),Z,WRITELAY):LAYVM(Z,N1)=N0:NEXT:RETURN 800 ROWNUM=N  9:GOSUB 810:COLOR 15:PRINT"Enter new name, or for existing name: ";:GOSUB 897 IF IN$="" THEN OUTFIL$=INFIL$:LOCATE N9,44:PRINT OUTFIL$; ELSE OUTFIL$=IN$+EXT$ GOSUB 805:RETURN 805 IF ALLSYMS=N1 OR OUTFIL$=INFIL$ THEN OVERWRITE=N1 ELSE OVERWRITE=N0 RETURN 810 LOCATE ROWNUM,N1:PRINT SPACE$(79);:LOCATE ROWNUM,N1:RETURN 840 ROWNUM=15:GOSUB 810:COLOR 10:PRINT"TRANSLATING ";INFIL$:COLOR 15:RETURN 850 ROWNUM=23:GOSUB 810:ROWNUM=24:GOSUB 810:RETURN 859 FOR DELAY=N1 TO 32000:NEXT DELAY:RETURN 860 FOR MSDELAY=N1 TO N4:FOR DELAY=N1 TO 32000:NEXT:NEXT:RETURN 861 IN$=INKEY$:IF IN$="" GOTO 861 ELSE IF ASC(IN$)=13 THEN IN$="":RETURN ELSE PRINT IN$;:RETURN ' '*** KEYBOARD INPUT ROUTINE *** ' 897 NIN$="" 898 IN$=INKEY$:IF IN$="" GOTO 898 ELSE K=ASC(IN$):IF K=13 THEN IN$=NIN$:RETURN ELSE IF K=27 THEN IN$="":RETURN IF K=N8 THEN R=CSRLIN:C=POS(N0)-N1:L=LEN(NIN$):IF LN7 OR (K<48 AND K<>45 AND K<>47) OR (K>57 AND K<65) OR (K>90 AND K<97) OR K>122 THEN 898 ELSE PRINT IN$;:NIN$=NIN$+IN$:GOTO 898 ' '*** DRIVE CHANGE *** ' 1000 COLOR 10:GOSUB 850:PRINT"Enter new drive letter (A or B) ";:GOSUB 861:IF IN$="" THEN 1005 ELSE DL=ASC(IN$) IF (DL>64 AND DL<67) OR (DL>96 AND DL<99) THEN DRIVE$=IN$:GOSUB 850:ROWNUM=N5:GOSUB 810:COLOR 15:GOTO 50 1005 GOTO 1000 ' 1643 '*** LOAD JOB ROUTINE *** ' INDRVFIL$=DRIVE$+":"+INFIL$ FILECHEK=N2:OPEN INDRVFIL$ FOR INPUT AS #1:FILECHEK=N0 GOSUB 850:COLOR 14:PRINT"Loading from disk";:COLOR 15 INPUT #1,INMLAY,ECOX,ECOY IF INMLAY=140 THEN CLOSE 1:GOSUB 850:COLOR 10:PRINT INFIL$;" has already been translated!";:GOSUB 860:GOSUB 859:GOSUB 859:GOSUB 859:GOSUB 850:COLOR 15 IF INMLAY=140 AND ALLSYMSN0 THEN 2100 IF INMLAY>MLAY THEN CLOSE 1:ROWNUM=23:GOSUB 810:COLOR 12:PRINT INFIL$;" has";INMLAY;"layers";:ROWNUM=24:GOSUB 810:PRINT"System max is";MLAY;"- Can NOT translate!";:GOSUB 860:GOSUB 859:GOSUB 859:GOSUB 859:GOSUB 859:GOSUB 850 IF INMLAY>MLAY AND ALLSYMSMLAY AND ALLSYMS>N0 THEN GOSUB 850:GOTO 2100 1651 INPUT #1,OP,NLN,LCN IF OP=30 THEN 1660 ELSE LAYVM(NLN,N1)=LCN IF OP<>31 THEN CLOSE 1:ROWNUM=23:GOSUB 810:COLOR 12:PRINT"Input read error - can NOT translate ";INFIL$;:GOSUB 860:GOSUB 859:GOSUB 859:GOSUB 780:GOSUB 850:IF ALLSYMS&H4000 THEN CELNUM=(LAY(Z,N0) AND &H3F):CELROT=(LAY(Z,N0) AND &H1FC0)*N2:LAY(Z,N0)=((CELNUM OR CELROT OR &H4000) AND &HFFBF):GOTO 1652 IF (LAY(Z,N0) AND N7)=N6 THEN PSTA=(LAY(Z,2) AND &H7F)*5:PENA=((LAY(Z,2) AND &H3F80)\128)*5:STA=(PSTA AND &H1FF):LOWENA=((PENA*512) AND &HFE00):LAY(Z,2)=(STA OR LOWENA):HIENA=(PENA AND &H180)*128:RAD=(LAY(Z,1) AND &H3FFF):LAY(Z,1)=(RAD OR HIENA) 1652 NEXT Z CALL ABSOLUTE (LAY(N0,N0),LN,WRITELAY):GOTO 1651 1660 INPUT #1,WX,WY,SCALE!,DLX,DLY,GLOK,ALAY,ACELNUM,LCELNUM,CLAST,AGRID,GRID,DIS$,DISCLR$ IF DIS$="F" THEN DIS$="57" ELSE IF DIS$="T" THEN DIS$="58" ELSE IF DIS$="M" THEN DIS$="59" ELSE DIS$="60" FOR Z=N1 TO LCELNUM:INPUT #1,CNAM$(Z,N0),CNAM$(Z,N1):NEXT FOR Z=N1 TO LCELNUM:INPUT #1,CNUM(Z,N0),CNUM(Z,N1),CNUM(Z,N2),CNUM(Z,N3):NEXT FOR Z=N1 TO 10:INPUT #1,GRIDS(Z,N0),GRIDS(Z,N1):NEXT FOR Z=N1 TO 65:INPUT #1,LINET(Z),LAYVM(Z,N0),BOGUS,CLRT(Z):NEXT FOR Z=N1 TO N5:INPUT #1,VREC!(Z,N0),VREC!(Z,N1),VREC!(Z,N2):NEXT FOR Z=N1 TO 15:INPUT #1,TXDBU(Z):NEXT INPUT #1,K$:IF K$<>"END" THEN CLOSE 1:GOSUB 850:COLOR 12:PRINT"End of file read error - can NOT translate ";INFIL$;:GOSUB 860:GOSUB 859:GOSUB 859:GOSUB 780:GOSUB 850:IF ALLSYMS"y" AND IN$<>"Y" THEN GOSUB 850:GOSUB 800:GOTO 1725 1728 TEST=N0:CLOSE 1:OPEN OUTDRVFIL$ FOR OUTPUT AS #1 GOSUB 850:COLOR 14:PRINT"Writing to disk";:COLOR 15 GOSUB 30958:WRITE #1,140,CRNLX,CRNLY,CRNUX,CRNUY,INMLAY,ECOX,ECOY FOR LN=N1 TO INMLAY:IF LAYVM(LN,N1)<=N0 THEN 1734 ELSE CALL ABSOLUTE (LAY(N0,N0),LN,READLAY):LCN=LAYVM(LN,N1):OP=31:WRITE #1,OP,LN,LCN FOR Z=N0 TO LCN-N1:WRITE #1,LAY(Z,N0),LAY(Z,N1),LAY(Z,N2):NEXT Z 1734 NEXT LN ENDOP=30:WRITE #1,ENDOP,ENDOP,ENDOP WRITE #1,WX,WY,SCALE!,DLX,DLY,GLOK,ALAY,ACELNUM,LCELNUM,CLAST,AGRID,GRID PRINT #1,DIS$;",";DISCLR$ FOR Z=N1 TO LCELNUM:PRINT #1,CNAM$(Z,N0);",";CNAM$(Z,N1):NEXT FOR Z=N1 TO LCELNUM:WRITE #1,CNUM(Z,N0),CNUM(Z,N1),CNUM(Z,N2),CNUM(Z,N3):NEXT FOR Z=N1 TO 10:WRITE #1,GRIDS(Z,N0),GRIDS(Z,N1):NEXT FOR Z=N1 TO 65:WRITE #1,LINET(Z),LAYVM(Z,N0),CLRT(Z),1,"":NEXT FOR Z=N1 TO N5:WRITE #1,VREC!(Z,N0),VREC!(Z,N1),VREC!(Z,N2):NEXT FOR Z=N1 TO 15:WRITE #1,TXDBU(Z):NEXT K$="END":PRINT #1,K$ CLOSE 1 ' 1790 GOSUB 850:ROWNUM=15:GOSUB 810:COLOR 12:PRINT"Translation complete!":SOUND 400,2:GOSUB 859:GOSUB 859:ROWNUM=15:GOSUB 810:COLOR 15 IF DBTYPE=N1 OR ALLSYMS=N1 THEN 2000 1800 GOSUB 850:COLOR 15:PRINT"Translate another file? (Y or N) ";:GOSUB 861:IF IN$="y" OR IN$="Y" THEN GOSUB 850:GOSUB 780:GOTO 40 GOTO 8000 ' 2000 IF ALLSYMS>N0 THEN 2100 IF LCELNUM"Y" AND IN$<>"y" THEN 1800 TLCELNUM=LCELNUM:FOR Z=N1 TO TLCELNUM:ALLSYMS$(Z)=CNAM$(Z,N0):NEXT  DBTYPE=N2:ALLSYMS=N1:GOSUB 850:SYMCOUNT=N0:EXT$=".SYM" 2100 SYMCOUNT=SYMCOUNT+N1:IF SYMCOUNT>TLCELNUM THEN ALLSYMS=N0:GOTO 1800 INFIL$=ALLSYMS$(SYMCOUNT)+EXT$:OUTFIL$=INFIL$ GOSUB 780:GOSUB 805:GOSUB 840:GOTO 1643 ' '*** ERROR ROUTINES *** ' 8000 COLOR 15:CLS:END ' 9000 COLOR 12:GOSUB 850:ROWNUM=23 IF ERR=N6 THEN GOSUB 810:PRINT"Overflow"; IF ERR=N7 THEN GOSUB 810:PRINT"Memory overflow"; IF ERR=25 THEN GOSUB 810:PRINT"Interface fault"; IF ERR=27 THEN GOSUB 810:PRINT"Printer not ready"; IF ERR=52 THEN GOSUB 810:PRINT"Bad file name"; IF ERR=53 AND TEST=N1 THEN RESUME 1728 IF ERR=53 AND FILECHEK=N1 THEN 9100 IF ERR=53 AND FILECHEK=N2 AND ALLSYMS>N0 THEN FILECHEK=N0:CLOSE 1:GOSUB 850:PRINT INFIL$;" not found .... hit any key ";:GOSUB 860:GOSUB 861:GOSUB 850:RESUME 2100 IF ERR=53 AND FILECHEK=N2 THEN FILECHEK=N0:CLOSE 1:GOSUB 850:PRINT INFIL$;" not found .... hit any key ";:GOSUB 860:GOSUB 861:GOSUB 850:RESUME 1800  IF ERR=70 THEN GOSUB 810:PRINT"Disk is write protected"; IF ERR=71 THEN GOSUB 810:PRINT"Disk is not ready"; IF ERR=57 THEN GOSUB 810:PRINT"Device I/O error"; IF ERR=11 THEN GOSUB 810:PRINT"Division by zero"; ROWNUM=24:GOSUB 810:PRINT"DOS error #";ERR;"- can NOT translate. Hit any key ";:GOSUB 860:GOSUB 861 GOSUB 850:CLOSE 1:IF ALLSYMSN1 OR LAYVM(LN,N1)  8191 THEN 30980 IF (OP AND N7)=N6 THEN RAD=(X AND &H3FFF):PASS=N0 GOSUB 31025 LX=X:LY=Y 30980 NEXT Z 30982 NEXT LN IF XHI!=34000 OR YHI!=34000 THEN CRNLX=-32768:CRNLY=-32768:CRNUX=32767:CRNUY=32767:RETURN CRNLX=XLO!:CRNLY=YLO!:CRNUX=XHI!:CRNUY=YHI!:RETURN ' 31025 IF (OP AND N7)=N6 THEN IF PASS=N0 THEN PASS=N1:X=LX+RAD:Y=LY+RAD ELSE X=LX-RAD:Y=LY-RAD:PASS=N0 IF XHI!=34000! THEN XHI!=X ELSE IF X>XHI! THEN XHI!=X IF XLO!=-34000! THEN XLO!=X ELSE IF XYHI! THEN YHI!=Y IF YLO!=-34000! THEN YLO!=Y ELSE IF YN0 THEN 60100 CALL ABSOLUTE(HRAMSTART,N0,SETHRAM) CALL ABSOLUTE(MEMORY,MLAY,N75):MLAY=7 IF MEMORY<256 THEN 750 GOSUB 780 'Clear layer ' FILE6$="CP.DBU" 'Check DBU file CLOSE #1:FILECHEK=5:OPEN FILE6$ FOR INPUT AS #1 FILECHEK=N0:Z=N1 WHILE NOT EOF(1) AND Z<=60 LINE INPUT #1,DB$ Z=Z+N1 WEND DBUMAX=Z-N1 CLOSE #1 ' GOSUB 1300:GOTO 470 460 STRG$=SPACES$ ROW=N20:COL=N1:GOSUB 821 ROW=N22:COL=N1:GOSUB 821 GOSUB 850 470 GOSUB 500: IF ABORT=N1 THEN 480 'Get symbol name IF SCALEALL=N1 THEN 4000 'Scale all symbols in the SYMFILE$() GOSUB 600 'Get new symbol name GOSUB 1600:IF ABORT=N1 THEN 480 'Load symbol database GOSUB 2000:IF ABORT=N1 THEN GOSUB 980:GOTO 480 'Scale symbol GOSUB 1700 'Write symbol database ' 480 GOSUB 780:STRG$=SPACES$:ROW=N23:COL=N1:GOSUB 821 COLOR N11:GOSUB 820:PRINT"Continue ......(Y/N) ? "; 484 GOSUB 860:GOSUB 861 IF IN$="N" OR IN$="n" THEN 60200 IF IN$="Y" OR IN$="y" THEN 460 GOSUB 990:GOTO 484 ' '--------------------------------------------------------------------- '*** GET SYMBOL NAME *** GET SYMBOL NAME *** GET SYMBOL NAME *** '--------------------------------------------------------------------- 500 GOSUB 990:GOSUB 820:ABORT=N0:SCALEALL=N0 COLOR N11:GOSUB 810:PRINT"Enter symbol name to be scaled: "; SYMS=N1:GOSUB 897:SYMS=N0 IF IN$="" THEN ABORT=N1:GOTO 505 IF IN$="*" THEN SCALEALL=N1:GOTO 505 TSYMNAM$=IN$ SYMNAM$=DRV$+":"+IN$+".SYM":CLOSE #1:FIND=N1 OPEN SYMNAM$ FOR INPUT AS #1 INPUT #1,RELEASE,CRNLX,CRNLY,CRNUX,CRNUY,INMLAY,ECOX,ECOY IF RELEASE<>140 THEN BADFILE$=TSYMNAM$:CLOSE #1:GOSUB 899:ABORT=N1:GOTO 505 IF INMLAY>MLAY THEN BADFILE$=TSYMNAM$:CLOSE #1:GOSUB 900:ABORT=N1:GOTO 505 CLOSE #1 LOCATE N20,N1:COLOR N11:PRINT"Symbol to be scaled: ";:COLOR N15:PRINT TSYMNAM$; 505 RETURN   ' '----------------------------------------------------------------- '*** GET NEW SYMBOL NAME *** GET NEW SYMBOL NAME *** '----------------------------------------------------------------- 600 GOSUB 820:OVERWRITE=N0:ABORT=N0 COLOR N11:GOSUB 810:PRINT"Enter new name, or for existing name: "; SYMS=N1:GOSUB 897:SYMS=N0 IF IN$="" THEN IN$=TSYMNAM$:OVERWRITE=N1:ABORT=N1 TNEWSYMNAM$=IN$ TEMPNAM$=DRV$+":"+IN$+".TMP" NEWSYMNAM$=DRV$+":"+IN$+".SYM":CLOSE #2:FIND=N2 IF ABORT=N1 THEN ABORT=N0:GOTO 605 OPEN NEWSYMNAM$ FOR INPUT AS #2 GOSUB 810:COLOR N15:PRINT TNEWSYMNAM$;:COLOR N14:PRINT" already exists"; GOSUB 820:COLOR N11:PRINT "Overwrite ? Y/N "; GOSUB 860:GOSUB 861 IF IN$<>"Y" AND IN$<>"y" THEN CLOSE #2:GOTO 600 OVERWRITE=N1 605 LOCATE 20,41:COLOR N11:PRINT"Output file: ";:COLOR N15:PRINT TNEWSYMNAM$; CLOSE #2 610 RETURN ' '----------------------------------------------------------------------- '*** GENERAL PURPOSE SUBROUTINES *** GENERAL PURPOSE SUBROUTINES *** '----------------------------------------------------------------------- 750 WIDTH 80:SCREEN 0:CLS:CALL COLIO(N14,N0) STRG$="This computer does not have enough memory to scale symbols" CALL HRTXTPRT(STRG$,N22,N1) STRG$="A minimum of 256 K-bytes is required" CALL HRTXTPRT(STRG$,N23,N1) GOTO 60150 ' 780 FOR Z=N0 TO 1000: LAY(Z,N0)=N0:LAY(Z,N1)=N0:LAY(Z,N2)=N0 :NEXT Z FOR Z=N1 TO MLAY: CALL ABSOLUTE (LAY(N0,N0),Z,WRITELAY): LAYVM(Z,N0)=N0:LAYVM(Z,N1)=N0 :NEXT Z RETURN ' 810 STRG$=SPACES$:ROW=N24:COL=N1:GOSUB 821:LOCATE ROW,COL:RETURN 820 STRG$=SPACES$:ROW=N25:COL=N1:GOSUB 821:LOCATE ROW,COL:RETURN 821 CALL HRTXTPRT(STRG$,ROW,COL):RETURN ' 825 CALL ABSOLUTE(LAY(N0,N0),ALAY,READLAY):RETURN 826 CALL ABSOLUTE(LAY(N0,N0),ALAY,WRITELAY):RETURN ' 850 GOSUB 820:GOSUB 810:RETURN ' 859 FOR MSDELAY=N1 TO 4:FOR DELAY=N1 TO 32700:NEXT:NEXT:RETURN 860 GOSUB 859:RETURN ' 861 IN$=INKEY$:IF IN$="" THEN 861 IF LEN(IN$)=N2 THEN IN$=RIGHT$(IN$,N1):IF ASC(IN$)=73 THEN IN$=CHR$(23) ELSE IF ASC(IN$)=81 THEN IN$=CHR$(26) ELSE 861 K=ASC(IN$) IF K=N3 THEN 60200 IF K=23 AND DISPLAY=N1 THEN LASTR=CSRLIN:LASTC=POS(0):NEXTPAGE=NEXTPAGE-N1:GOSUB 950:LOCATE LASTR,LASTC:GOTO 861 IF K=26 AND DISPLAY=N1 THEN LASTR=CSRLIN:LASTC=POS(0):NEXTPAGE=NEXTPAGE+N1:GOSUB 950:LOCATE LASTR,LASTC:GOTO 861 RETURN ' '*** Keyboard input routine *** 897 NIN$="" MAXLEN=9  898 IN$=INKEY$ IF IN$="" GOTO 898 COLOR N15 IF LEN(IN$)=N2 THEN IN$=RIGHT$(IN$,N1):IF ASC(IN$)=73 THEN IN$=CHR$(23) ELSE IF ASC(IN$)=81 THEN IN$=CHR$(26) ELSE 898 K=ASC(IN$) IF K=N3 THEN 60200 IF K=23 AND DISPLAY=N1 THEN LASTR=CSRLIN:LASTC=POS(0):NEXTPAGE=NEXTPAGE-N1:GOSUB 950:LOCATE LASTR,LASTC:GOTO 898 IF K=26 AND DISPLAY=N1 THEN LASTR=CSRLIN:LASTC=POS(0):NEXTPAGE=NEXTPAGE+N1:GOSUB 950:LOCATE LASTR,LASTC:GOTO 898 IF K=13 THEN IN$=NIN$:RETURN IF K=27 THEN IN$="":RETURN IF K=42 AND NIN$="" AND SYMS=N1 THEN IN$="*":PRINT"ALL SYMBOLS IN THIS DIRECTORY";:GOSUB 860:GOSUB 859:RETURN IF K=8 THEN R=CSRLIN:C=POS(0)-1:L=LEN(NIN$):IF L<1 THEN 898 ELSE NIN$=LEFT$(NIN$,L-1):LOCATE R,C:PRINT" ";:LOCATE R,C:GOTO 898 IF NUMONLY=N1 AND K<>45 AND (K<48 OR K>57) THEN 898 IF NUMONLY=N2 AND K<>46 AND (K<48 OR K>57) THEN 898 IF MSG=1 AND LEN(NIN$)<35 AND K>31 AND K<127 THEN PRINT IN$;:NIN$=NIN$+IN$:GOTO 898 IF LEN(NIN$)>MAXLEN OR K<45 OR (NUMONLY<>N2 AND K=46) OR (K>58 AND K<65) OR (K>90 AND K<97) OR K>123 OR (SYMS=1 AND K=58) OR (SYMS=1 AND LEN(NIN$)>7) THEN 898 PRINT IN$;:NIN$=NIN$+IN$ GOTO 898 ' 899 GOSUB 850 COLOR 14:PRINT"Symbol ";:COLOR 15:PRINT BADFILE$; COLOR 14:PRINT" has not been translated to 1.40 format; can NOT load"; GOSUB 860:GOSUB 859 RETURN 900 GOSUB 850 COLOR 14:PRINT"Symbol ";:COLOR 15:PRINT BADFILE$; COLOR 14:PRINT" has more than";MLAY;" layers; can NOT load"; GOSUB 860:GOSUB 859 R  ETURN ' 950 IF NUMPAGE=N1 THEN NEXTPAGE=N1:GOTO 975 IF NEXTPAGE=N0 THEN NEXTPAGE=N1:GOTO 975 IF NEXTPAGE>NUMPAGE THEN NEXTPAGE=NUMPAGE:GOTO 975 STARTING=(NEXTPAGE-N1)*80+N1 ENDING=NEXTPAGE*80 IF ENDING>TOTSYM THEN ENDING=TOTSYM GOSUB 1320 975 RETURN ' 980 COLOR N30 IF SCALEALL=N1 THEN LOCATE 20,N1 ELSE LOCATE 20,54:PRINT" ";:LOCATE 20,54 PRINT"ABORTED"; RETURN ' 990 IN$=INKEY$:IF IN$<>"" THEN 990 'Ignore kb input RETURN  ' '------------------------------------------------------------------------ '*** SYMBOL DIRECTORY *** SYMBOL DIRECTORY *** SYMBOL DIRECTORY *** '------------------------------------------------------------------------ 1300 FOR Z=N0 TO 140 : SYMFILE$(Z)=FILLER$ : NEXT Z 1310 GOSUB 990:GOSUB 1318 'Print heading COLOR N11:LOCATE 6,N1:PRINT "Enter drive letter for symbol directory (A or B): "; GOSUB 1330:DRV$=IN$:COLOR N15:PRINT DRV$; COLOR N30:PRINT" WAIT";  SYMNAM$=DRV$+":CADPLAN.IBM":OPEN SYMNAM$ FOR INPUT AS #1 1312 CLOSE #1:SYMNAM$="":TOTSYM=141:EXT$="SYM" CALL DIRECT(DRV$,FCB$,DTA$,SYMFILE$(N0),TOTSYM,EXT$) 'Call directory IF TOTSYM=N0 THEN CALL COLIO(N14,N0):GOSUB 820:STRG$="No symbol on drive "+DRV$:GOSUB 821:GOSUB 860:GOTO 1310 IF TOTSYM>140 THEN TOTSYM=140:CALL COLIO(N14,N0):ROW=N22:COL=N1:STRG$="THIS DIRECTORY CAN ACCOMODATE 140 SYMBOLS ONLY":GOSUB 821:GOSUB 860:GOSUB 990 ' FOR Z=N0 TO TOTSYM : SYMFILE$(Z)=LEFT$(SYMFILE$(Z),8) : NEXT Z SYMFILE$(TOTSYM)=SYMFILE$(N0) COLOR N11:LOCATE 6,65:PRINT" "; LOCATE N24,N1:PRINT"Do you want symbol directory to be displayed ? "; GOSUB 861:IF IN$<>"Y" AND IN$<>"y" THEN DISPLAY=N0:GOSUB 1318:GOTO 1315 ' DISPLAY=N1:COLOR 15:PRINT IN$; GOSUB 1350 'Sort symbol files in alphabetical order GOSUB 1318 'Print heading LOCATE 6,N1 COLOR N11:PRINT"Total symbols on drive ";DRV$;" : "; COLOR N15:PRINT TOTSYM; 'List results of directory call NEXTPAGE=N1 : STARTING=N1 IF (TOTSYM MOD 80)=N0 THEN NUMPAGE=TOTSYM\80 ELSE NUMPAGE=TOTSYM\80+1 IF TOTSYM>80 THEN ENDING=80 ELSE ENDING=TOTSYM GOSUB 1320 1315 RETURN ' '----------------- '*** Heading *** '----------------- 1318 CLS:CALL COLIO(N14,N0):ROW=N1:COL=16 STRG$="(C) Copyright Personal CAD Systems - June, 1984":GOSUB 821 CALL COLIO(N11,N0):ROW=N2:COL=18 STRG$="This program scales 1.40 Symbol databases":GOSUB 821 ROW=4:COL=N1 STRG$="Recognizes (upper & lower case): ":GOSUB 821 CALL COLIO(N14,N0):COL=35 STRG$="FT IN MILS M CM MM ' "+CHR$(34):GOSUB 821 CALL COLIO(N11,N0):COL=71 STRG$=" only":GOSUB 821 RETURN ' '-------------------------------- '*** Print symbol directory *** '-------------------------------- 1320 S$="" : ROWNUM=8 : COLUMN=N0 CALL COLIO(N15,N0) FOR Z = STARTING TO ENDING S$=S$+SYMFILE$(Z) LOCATE ROWNUM,N1 IF COLUMN+8>75 THEN CALL HRTXTPRT(S$,ROWNUM,N1):ROWNUM=ROWNUM+N1:COLUMN=N0:S$="" ELSE IF Z=ENDING THEN S$=S$+LEFT$(SPACES$,81-LEN(S$)):CALL HRTXTPRT(S$,ROWNUM,N1):ROWNUM=ROWNUM+N1 ELSE COLUMN=COLUMN+10:S$=S$+" " NEXT Z IF ROWNUM<18 THEN FOR Z=ROWNUM TO 17:CALL HRTXTPRT(SPACES$,Z,N1):NEXT Z IF TOTSYM>80 THEN GOSUB 1325 RETURN ' '---------------------------- '*** Print page down/up *** '---------------------------- 1325 CALL COLIO(N10,N0):ROW=18:COL=35 IF NEXTPAGE=N1 THEN STRG$="^Z = page down ":GOSUB 821 IF NEXTPAGE=NUMPAGE THEN STRG$=" ^W = page up":GOSUB 821 IF NEXTPAGE>N1 AND NEXTPAGE96 AND K<123 THEN IN$=CHR$(K-32) 'change to UPPERCASE HIT=INSTR("AB",IN$) 'Find out if drive letter is valid IF HIT=N0 THEN GOSUB 990:GOTO 1330 1340 RETURN ' '------------------------ '*** Sort filenames *** '------------------------ 1350 L=TOTSYM\N2+N1 : R=TOTSYM 1360 IF L>N1 THEN L=L-N1 : GOSUB 1450 : GOTO 1360 1370 IF R<=N1 THEN 1410 X$=SYMFILE$(N1) : SYMFILE$(N1)=SYMFILE$(R) : SYMFILE$(R)=X$ R=R-N1 : GOSUB 1450 GOTO 1370 1410 RETURN ' '----------------- '*** Sorting *** '----------------- 1450 I=L : J=N2*I : X$=SYMFILE$(I) 1460 IF J>R THEN GOTO 1510 IF J=SYMFILE$(J) THEN GOTO 1510 SYMFILE$(I)=SYMFILE$(J) : I=J : J=N2*I GOTO 1460 1510 SYMFILE$(I)=X$ RETURN ' '----------------------------------------------------------------- '*** LOAD SYMBOL DATABASE ***  LOAD SYMBOL DATABASE *** '----------------------------------------------------------------- 1600 GOSUB 850:ABORT=N0:CEL$=TSYMNAM$:CLOSE #1 OPEN SYMNAM$ FOR INPUT AS #1 GOSUB 820:COLOR N10 IF SCALEALL=N0 THEN GOSUB 810:PRINT"Loading symbol ";:COLOR N15:PRINT TSYMNAM$; ELSE LOCATE 20,N1:PRINT"LOADING"; INPUT #1,RELEASE IF RELEASE<>140 THEN BADFILE$=CEL$:CLOSE #1:GOSUB 899:ABORT=N1:GOTO 1670 INPUT #1,CRNLX,CRNLY,CRNUX,CRNUY,INMLAY,ECOX,ECOY IF INMLAY>MLAY THEN BADFILE$=CEL$:CLOSE #1:GOSUB 900:ABORT=N1:GOTO 1670 1651 INPUT #1,OP,ALAY,LCN IF OP=30 THEN 1660 ELSE LAYVM(ALAY,N1)=LCN IF OP<>31 THEN GOSUB 850:CALL COLIO(N14,N0):STRG$="Input read error":GOSUB 821:GOSUB 860:CLOSE #1:ABORT=N1:GOTO 1670 IF LCN=N0 GOTO 1651 GOSUB 825 FOR Z=N0 TO LCN-N1 : INPUT #1,LAY(Z,N0),LAY(Z,N1),LAY(Z,N2) : NEXT Z GOSUB 826 GOTO 1651 1660 INPUT #1,WX,WY,SCALE!,DLX,DLY,GLOK,ACTIVELAYER,ACELNUM,LCELNUM,CLAST,AGRID,GRID,DIS$,DISCLR$ OLDDBU=VAL(DIS$) DBUERROR=N0 GOSUB 17000 'CHECK DBU IF DBUERROR=N1 THEN GOSUB 850:STRG$="CANNOT CONTINUE......":GOSUB 821:GOTO 60150 FOR Z=N1 TO LCELNUM: INPUT #1,CNAM$(Z,N0),CNAM$(Z,N1) :NEXT Z FOR Z=N1 TO LCELNUM: INPUT #1,CNUM(Z,N0),CNUM(Z,N1),CNUM(Z,N2),CNUM(Z,N3) :NEXT Z FOR Z=N1 TO 10: INPUT #1,GRIDS(Z,N0),GRIDS(Z,N1) :NEXT Z FOR Z=N1 TO 65: INPUT #1,LINET(Z),LAYVM(Z,N0),CLRT(Z),PENNUM(Z),INFO$(Z) :NEXT FOR Z=N1 TO 5: INPUT #1,VREC!(Z,N0),VREC!(Z,N1),VREC!(Z,N2) :NEXT FOR TSN=N1 TO 15: INPUT #1,TXDBU(TSN) :NEXT TSN INPUT #1,K$ IF K$<>"END" THEN CLOSE #1:CALL COLIO(N14,N0):GOSUB 850:STRG$="END OF FILE READ ERROR":GOSUB 821:ABORT=N1:GOTO 1670 CLOSE #1:GOSUB 826 LOCATE 22,1 COLOR N11:PRINT "Old DBU #"; COLOR N15:PRINT OLDDBU; COLOR N11:PRINT": "; COLOR N15:PRINT DBU$(1,1);DBU$(2,1); COLOR N11:PRINT" = "; COLOR N15:PRINT DBU$(0,1);" DBU"; 1670 RETURN ' '------------------------------------------------------------------- '*** WRITE SYMBOL DATABASE *** WRITE SYMBOL DATABASE *** '------------------------------------------------------------------- 1700 CLOSE #1:FIND=N0 COLOR N10 IF SCALEALL=N0 THEN GOSUB 810:PRINT"Writing symbol ";:COLOR N15:PRINT TNEWSYMNAM$; ELSE LOCATE 20,N1:PRINT"WRITING"; IF OVERWRITE=N0 THEN OPEN NEWSYMNAM$ FOR OUTPUT AS #1 ELSE OPEN TEMPNAM$ FOR OUTPUT AS #1 GOSUB 30958 WRITE #1,140,CRNLX,CRNLY,CRNUX,CRNUY,INMLAY,ECOX,ECOY FOR ALAY=N1 TO INMLAY IF LAYVM(ALAY,N1)CHR$(96) AND CHAR$(Z)N0 THEN ENDING=TOTSYM GOSUB 1320 1739 ROW=6:COL=51:STRG$=LEFT$(SPACES$,29):GOSUB 821 1740 IF OVERWRITE=N1 THEN KILL NEWSYMNAM$:NAME TEMPNAM$ AS NEWSYMNAM$ RETURN  ' '------------------------------------------------------------ '*** SCALE SYMBOL *** SCALE SYMBOL *** SCALE SYMBOL *** '------------------------------------------------------------ 2000 ABORT=N0:AX1!=N0 COLOR N11:GOSUB 810:PRINT"Do you want to scale symbol "; COLOR N15:PRINT TSYMNAM$; COLOR N11:PRINT" by using new DBU ? "; GOSUB 861:IF IN$<>"Y" AND IN$<>"y" THEN 2030 2010 COLOR N11:GOSUB 810:PRINT"Enter DBU #: "; NUMONLY=N1:GOSUB 897:NUMONLY=N0  IF IN$="" THEN ABORT=N1:GOTO 2035 NEWDBU=VAL(IN$) IF NEWDBUDBUMAX THEN COLOR N14:GOSUB 820:PRINT"Enter 1 to";DBUMAX;:GOSUB 860:GOSUB 820:GOTO 2010 FOR Z=N0 TO N2 FOR ZZ=N0 TO 6 : DF$(Z,ZZ)=DBU$(Z,ZZ) : NEXT ZZ NEXT Z DIS$=STR$(NEWDBU) DBUERROR=N0 GOSUB 17000 IF DBUERR=N1 THEN GOTO 2000 LOCATE 22,41 COLOR N11:PRINT "New DBU #"; COLOR N15:PRINT NEWDBU; COLOR N11:PRINT": "; COLOR N15:PRINT DBU$(1,1);DBU$(2,1); COLOR N11:PRINT" = "; COLOR N15:PRINT DBU$(0,1);" DBU"; GOSUB 3000 IF ABORT=N1 THEN COLOR N14:GOSUB 810:PRINT EDBU$;:GOTO 2035 GOSUB 2040 GOTO 2035 2030 COLOR N11:GOSUB 810:PRINT"Enter scaling factor: "; NUMONLY=N2:GOSUB 897:NUMONLY=N0 IF IN$="" THEN ABORT=N1:GOTO 2035 POSDP=INSTR(IN$,"."):IF INSTR(POSDP+N1,IN$,".")<>N0 THEN 2030 AX1!=VAL(IN$) IF AX1!=0. THEN 2030 LOCATE 22,41 COLOR N11:PRINT"Scale symbol ";TSYMNAM$;" by:";:COLOR N15:PRINT AX1!; GOSUB 2040 2035 RETURN ' '-------------------- '*** DO SCALING *** '-------------------- 2040 COLOR N26 IF SCALEALL=N0 THEN GOSUB 810:PRINT"SCALING"; ELSE LOCATE 20,N1:PRINT"SCALING"; IF AX1!=1! THEN 2250 'Do not scale '--- Reference point is (ACX!,ACY!)=(ECOX,ECOY) --- ACX!=ECOX : ACY!=ECOY '--- Check for out of bounds --- VALID=N1 'Flag out of bounds FOR ALAY=N1 TO INMLAY IF LAYVM(ALAY,N1)32767. THEN VALID=N0:Z=LAYVM(ALAY,N1):GOTO 2100 IF Y!<-32768. OR Y!>32767. THEN VALID=N0:Z=LAYVM(ALAY,N1) GOTO 2100 '--- Circ & Arc ---   2050 X!=LAY(Z,N1) AND &H3FFF X!=X!*AX1! IF X!>16383. THEN VALID=N0:Z=LAYVM(ALAY,N1):GOTO 2100 IF (-X!+LAY(Z-N1,N1))<-32768. OR (X!+LAY(Z-N1,N1))>32767. THEN VALID=N0:Z=LAYVM(ALAY,N1):GOTO 2100 IF (-X!+LAY(Z-N1,N2))<-32768. OR (X!+LAY(Z-N1,N2))>32767. THEN VALID=N0:Z=LAYVM(ALAY,N1) 2100 NEXT Z IF VALID<>N1 THEN ALAY=INMLAY 2125 NEXT ALAY IF VALID<>N1 THEN GOSUB 810:CALL COLIO(N14,N0):STRG$="Coordinates out of bounds":GOSUB 821:GOSUB 860:ABORT=N1:GOTO 2250 '--- Scale all coordinates --- FOR ALAY=N1 TO INMLAY IF LAYVM(ALAY,N1)8193 AND OP<16384 THEN 2135 LWIDTH=((OP AND 1016)\8)*AX1!:IF LWIDTH127 THEN LWIDTH=127 LAY(Z,N0)=(OP AND 7) OR LWIDTH*8 2135 IF OP<8192 AND (OP AND 7)=6 THEN X!=LAY(Z,N1) AND &H3FFF:X!=X!*AX1! ELSE X!=LAY(Z,N1):Y!=LAY(Z,N2):X!=(X!-ACX!)*(AX1!-1.0)+X!:Y!=(Y!-ACY!)*(AX1!-1.0)+Y! IF OP<8192 AND (OP AND 7)=6 THEN LAY(Z,N1)=(LAY(Z,N1) AND &HC000) OR (INT(X!)):GOTO 2150 'Arc & circ LAY(Z,N1)=INT(X!): LAY(Z,N2)=INT(Y!) 2150 NEXT Z GOSUB 826 2175 NEXT ALAY 2250 RETURN ' '--------------------------------------------------------------------- '*** CALCULATE THE SCALE FACTOR *** CALCULATE THE SCALE FACTOR *** '--------------------------------------------------------------------- 'Check if unit name used in dbu file is in M$() '--- old dbu --- 3000 IF INSTR( DF$(N2,N1),CHR$(34))<>N0 THEN S2$="IN" ELSE IF INSTR( DF$(N2,N1),CHR$(39))<>N0 THEN S2$="FT" ELSE S2$= DF$(N2,N1) DASHCOL=INSTR(S2$,"-") IF DASHCOL<>N0 THEN S2$=LEFT$(S2$,DASHCOL-N1) OLDUNIT$="" FOR Z=N0 TO 5 S1$=M$(Z) GOSUB 18000 'Compare S1$,S2$ IF THESAME=N1 THEN OLDUNIT$=M$(Z):Z=5 NEXT Z  IF OLDUNIT$="" THEN ABORT=N1:GOTO 3150 '--- new dbu --- IF INSTR(DBU$(N2,N1),CHR$(34))<>N0 THEN S2$="IN" ELSE IF INSTR(DBU$(N2,N1),CHR$(39))<>N0 THEN S2$="FT" ELSE S2$=DBU$(N2,N1) DASH=INSTR(S2$,"-") IF DASH<>N0 THEN S2$=LEFT$(S2$,DASH-N1) NEWUNIT$="" FOR Z=N0 TO 5 S1$=M$(Z) GOSUB 18000 'Compare S1$,S2$ IF THESAME=N1 THEN NEWUNIT$=M$(Z):Z=5 NEXT Z IF NEWUNIT$="" THEN ABORT=N1:GOTO 3150 '*** OLDFLAG / NEWFLAG = N0 --> FT / IN / MILS ' = N1 --> M / CM / MM ' IF OLDUNIT$=M$(3) OR OLDUNIT$=M$(4) OR OLDUNIT$=M$(5) THEN OLDFLAG=N0 ELSE OLDFLAG=N1 IF OLDUNIT$=M$(3) THEN OLDV!=VAL(DF$(N1,N1))*12. 'OLDV! in inches IF OLDUNIT$=M$(4) THEN OLDV!=VAL(DF$(N1,N1)) IF OLDUNIT$=M$(5) THEN OLDV!=VAL(DF$(N1,N1))*.001 IF OLDUNIT$=M$(0) THEN OLDV!=VAL(DF$(N1,N1))*1000. 'OLDV! in mm IF OLDUNIT$=M$(1) THEN OLDV!=VAL(DF$(N1,N1))*10. IF OLDUNIT$=M$(2) THEN OLDV!=VAL(DF$(N1,N1)) IF NEWUNIT$=M$(3) OR NEWUNIT$=M$(4) OR NEWUNIT$=M$(5) THEN NEWFLAG=N0 ELSE NEWFLAG=N1 IF NEWUNIT$=M$(3) THEN NEWV!=VAL(DBU$(N1,N1))*12. 'NEWV! in inches IF NEWUNIT$=M$(4) THEN NEWV!=VAL(DBU$(N1,N1)) IF NEWUNIT$=M$(5) THEN NEWV!=VAL(DBU$(N1,N1))*.001 IF NEWUNIT$=M$(0) THEN NEWV!=VAL(DBU$(N1,N1))*1000. 'NEWV! in mm IF NEWUNIT$=M$(1) THEN NEWV!=VAL(DBU$(N1,N1))*10. IF NEWUNIT$=M$(2) THEN NEWV!=VAL(DBU$(N1,N1)) A!=VAL(DF$(N0,N1)) : B!=VAL(DBU$(N0,N1)) IF OLDFLAG<>NEWFLAG THEN 3050 AX1!=B!/(A!*NEWV!/OLDV!) GOTO 3150 3050 IF OLDFLAG=N0 THEN OLDV!=OLDV!*25.40005 IF NEWFLAG=N0 THEN NEWV!=NEWV!*25.40005 AX1!=B!/(A!*NEWV!/OLDV!) 3150 IF ABORT=N0 THEN LOCATE 23,41:PRINT"SCALING FACTOR =";AX1!; RETURN ' '------------------------------------------------------------------------------- '*** SCALE ALL SYMBOLS IN SYMFILE$() *** SCALE ALL SYMBOLS IN SY  MFILE$() *** '------------------------------------------------------------------------------- 4000 OVERWRITE=N1:NEWDBU=N0 E$=" press to continue scaling other symbols" LOCATE 6,51:COLOR N10:PRINT"SCALE ALL SYMBOLS"; GOSUB 4500 IF ABORT=N1 THEN 4120 CALL COLIO(N14,N0):ROW=20:COL=41:STRG$="Press space bar to abort":GOSUB 821 ' FOR INDEX=N1 TO TOTSYM ABORT=N0:CALL HRTXTPRT(SPACES$,N23,N1):GOSUB 780 IN$=INKEY$:IF IN$=" " THEN INDEX=TOTSYM:GOTO 4100 'Exit interrupt TSYMNAM$=SYMFILE$(INDEX) IF INSTR(TSYMNAM$," ")<>N0 THEN TSYMNAM$=LEFT$(TSYMNAM$,INSTR(TSYMNAM$," ")-N1) TEMPNAM$=DRV$+":"+TSYMNAM$+".TMP" SYMNAM$=DRV$+":"+TSYMNAM$+".SYM" NEWSYMNAM$=SYMNAM$ LOCATE 20,N1 COLOR N11:PRINT" symbol ";:COLOR N15:PRINT SYMFILE$(INDEX); LOCATE 22,N1:PRINT LEFT$(SPACES$,39); ' GOSUB 1600 'Load symbol database IF ABORT=N1 THEN 4075 IN$=INKEY$:IF IN$=" " THEN 4070 ' IF NEWDBU=N0 THEN 4050 'Not using new DBU FOR Z=N0 TO N2 FOR ZZ=N0 TO 6:DF$(Z,ZZ)=DBU$(Z,ZZ) : DBU$(Z,ZZ)=TDBU$(Z,ZZ):NEXT ZZ NEXT Z ' AX1!=N0 GOSUB 3000 'Calculate scale factor between DBU IF ABORT=N1 THEN COLOR N14:GOSUB 810:PRINT EDBU$;:GOTO 4075 DIS$=STR$(NEWDBU) 4050 IN$=INKEY$:IF IN$=" " THEN 4070 GOSUB 2040 'Scale symbol IF ABORT=N1 THEN 4075 IN$=INKEY$:IF IN$=" " THEN 4070 ' GOSUB 1700 'Write symbol database GOTO 4100 ' 4070 GOSUB 980:INDEX=TOTSYM 'Exit interrupt GOTO 4100 ' 4075 GOSUB 980:GOSUB 860:GOSUB 820 COLOR N14:PRINT"Can't scale symbol ";TSYMNAM$;:COLOR N11:PRINT E$; 4080 GOSUB 861 IF IN$=" " THEN INDEX=TOTSYM ELSE IF ASC(IN$)<>13 THEN 4080 ' 4100 NEXT INDEX ' 4120 ROW=6:COL=51:STRG$=LEFT$(SPACES$,29):GOSUB 821  ROW=N23:COL=N1:STRG$=SPACES$:GOSUB 821 SCALEALL=N0:OVERWRITE=N0:ABORT=N0 GOSUB 810 GOTO 480 ' '----------------------------------- '*** NEW DBU OR SCALING FACTOR *** '----------------------------------- 4500 ABORT=N0 COLOR N11:GOSUB 810 PRINT"Do you want to scale all symbols by using new DBU ? "; GOSUB 861:IF IN$<>"Y" AND IN$<>"y" THEN 4530 ' 4510 COLOR N11:GOSUB 810:PRINT"Enter DBU #: "; NUMONLY=N1:GOSUB 897:NUMONLY=N0 IF IN$="" THEN ABORT=N1:GOTO 4550 NEWDBU=VAL(IN$) IF NEWDBUDBUMAX THEN COLOR N14:GOSUB 820:PRINT"Enter 1 to";DBUMAX;:GOSUB 860:GOSUB 820:GOTO 4510 DIS$=STR$(NEWDBU) DBUERROR=N0 GOSUB 17000 IF DBUERR=N1 THEN GOTO 4500 FOR Z=N0 TO N2 FOR ZZ=N0 TO 6 : TDBU$(Z,ZZ)=DBU$(Z,ZZ) : NEXT ZZ NEXT Z LOCATE 22,41 COLOR N11:PRINT "New DBU #"; COLOR N15:PRINT NEWDBU; COLOR N11:PRINT": "; COLOR N15:PRINT DBU$(1,1);DBU$(2,1);  COLOR N11:PRINT" = "; COLOR N15:PRINT DBU$(0,1);" DBU"; GOTO 4550 ' 4530 COLOR N11:GOSUB 810:PRINT"Enter scaling factor: "; NUMONLY=N2:GOSUB 897:NUMONLY=N0 IF IN$="" THEN ABORT=N1:GOTO 4550 POSDP=INSTR(IN$,"."):IF INSTR(POSDP+N1,IN$,".")<>N0 THEN 4530 AX1!=VAL(IN$) IF AX1!=0. THEN 4530 LOCATE 22,41 COLOR N11:PRINT"Scale all symbols";" by:"; COLOR N15:PRINT AX1!; 4550 RETURN ' '----------------------------------------------------------------- '*** GET AND CHECK USER'S DBU *** GET AND CHECK USER'S DBU *** '----------------------------------------------------------------- 17000 DISTEMP$=DIS$ : DBUMAX=N0 : DBUERR=N0 '*** Calculate total number of DBU's *** ' CLOSE #3:FILECHEK=6:OPEN FILE6$ FOR INPUT AS #3 FILECHEK=N0:Z=N1 WHILE NOT EOF(3) AND Z<=60 LINE INPUT #3,DB$ Z=Z+N1 WEND DBUMAX=Z-N1 IF VAL(DIS$)DBUMAX THEN 17080    'DBU OUTSIDE LIMIT 17010 FOR Z=N0 TO N2:FOR ZZ=N0 TO 6:DBU$(Z,ZZ)="":NEXT ZZ:NEXT Z 'CLEAR SPACE TOTAL=N0:NOMORE=N0:DBU$(N1,N0)="D" 'SET DEFAULT VALUE CLOSE #3:FILECHEK=6:OPEN FILE6$ FOR INPUT AS #3 FILECHEK=N0:Z=N1 WHILE NOT EOF(3) AND Z<=VAL(DIS$) LINE INPUT #3,DB$ 'SET DEFAULT DBU Z=Z+N1 WEND IF Z<=VAL(DIS$) THEN 17080 'ERROR IN CP.DBU FILE P=INSTR(DB$,",") IF P=N0 THEN 17080 IN$=LEFT$(DB$,P-N1) P1=INSTR(IN$,"/") IF P1=N0 THEN IN$=LEFT$(IN$,6) ELSE IN$=LEFT$(LEFT$(IN$,P1-1),6) DBU$(N0,N0)=IN$ 17020 DB$=RIGHT$(DB$,LEN(DB$)-P) 17030 IF NOMORE=N1 THEN 17060 P=INSTR(DB$,",") IF P=N0 THEN NOMORE=N1:P=LEN(DB$)+N1 TOTAL=TOTAL+N1 IF TOTAL>6 THEN 17060 S$=LEFT$(DB$,P-N1) 'GET EACH COLUMN IF NOMORE=N0 THEN DB$=RIGHT$(DB$,LEN(DB$)-P) IF S$="" THEN 17020 Z=INSTR(S$,"=") IF Z=N0 THEN 17080 DBU$(N0,TOTAL)=LEFT$(S$,Z-N1) '# IN DBU ZZ!=VAL(DBU$(N0,TOTAL)) IF ZZ!<0! THEN 17080 'CHECK IF INVALID ? S$=RIGHT$(S$,LEN(S$)-Z) 'GET THE EQUIVALENT # ZZ!=VAL(S$) IF ZZ!<=0! THEN 17080 'CHECK IF INVALID ? 17040 IF S$<>"" THEN Z=ASC(LEFT$(S$,N1)) ELSE 17080 IF Z=32 OR Z=43 OR Z=45 OR Z=46 OR (Z>47 AND Z<58) THEN DBU$(N1,TOTAL)=DBU$(1,TOTAL)+LEFT$(S$,1):S$=RIGHT$(S$,LEN(S$)-1):GOTO 17040 IF Z=44 THEN 17080 'IF COMMA THEN INVALID IF Z<>47 AND VAL(RIGHT$(S$,LEN(S$)-N1))=N0 THEN 17050 'fraction IF DBU$(N1,N0)<>"D" THEN 17050 Z!=VAL(RIGHT$(S$,LEN(S$)-N1)) IF Z!>32767 THEN 17080 'TOO BIG AS AN INTERGER DENOMINATOR IF INT(Z!/ZZ!)*ZZ!=Z! THEN IN$=STR$(INT(Z!/ZZ!)):DBU$(N1,N0)=RIGHT$(IN$,LEN(IN$)-1) ELSE GOSUB 17080 DBU$(N2,TOTAL)=RIGHT$(S$,LEN(S$)-LEN(STR$(Z!))) IF DBU$(N2,TOTAL)="" THEN 17080 ELSE DBU$(N2,TOTAL)=LEFT$(DBU$(2,TOTAL),6) DBU$(N1,TOTAL)=STR$(ZZ!/Z!) GOTO 17030 17050 IF RIGHT$(DBU$(N1,TOTAL),N1)=" " THEN S$=" "+S$ DBU$(N2,TOTAL)=LEFT$(S$,6) 'GET THE UNIT GOTO 17030 17060 DBU$(N2,N0)=STR$(TOTAL) 'STORE TOTAL COLUMNS USED WRONG=N0 FOR Z=N0 TO TOTAL:FOR ZZ=N0 TO TOTAL 'CHECK IF UNITS ARE THE SAME IF Z<>ZZ THEN S1$=DBU$(N2,Z):S2$=DBU$(2,ZZ):GOSUB 18000:IF THESAME=N1 THEN WRONG=1 'SAME=INVALID NEXT ZZ:NEXT Z:CLOSE #3 IF WRONG=N1 THEN 17080 IF VAL(DBU$(N0,N1)+"#")<=N0 OR VAL(DBU$(N1,N1)+"#")<=N0 THEN 17080 IF (VAL(DBU$(N0,N1)+"#")/VAL(DBU$(N1,N1)+"#"))=(L1#/L2#) THEN 17080  NEXT Z S1$=DIS$ S2$=DISTEMP$ GOSUB 18000 IF THESAME=N0 THEN COLOR N14:LOCATE 24,26:PRINT"Current DBU is #";DIS$;", i.e. ";DBU$(0,0);:GOSUB 820:PRINT"Any key to continue";:GOSUB 861 GOTO 17090 ' 17070 COLOR N14:GOSUB 820:PRINT"Press any key";:GOSUB 861:DBUERROR=N1:GOTO 17090 17080 IF DBUERR=N0 THEN COLOR N14:GOSUB 810:PRINT"Default DBU error ...... Searching for a valid one";:GOSUB 859 DIS$=STR$(DBUMAX-DBUERR) DBUERR=DBUERR+N1 IF DBUERR>DBUMAX THEN COLOR N14:GOSUB 810:PRINT"Error in CP.DBU file ..... can NOT continue!";:GOTO 17070 GOTO 17010 17090 CLOSE #3 RETURN ' '------------------------------------------------------- '*** STRING COMPARISON (UPPER CASE <--> LOWER CASE) *** '------------------------------------------------------- ' This routine compares 2 strings stored in S1$ & S2$. ' It will ignore the leading and trailing blanks of ' each strings. '   If both strings are the same, it will pass you ' THESAME=1, otherwise THESAME=0. ' 'WHAT YOU SHOULD PASS : ' S1$ (STRING 1) AND S2$ (STRING 2) ' 'WHAT YOU WILL GET : ' THESAME ( 1=IF BOTH STRINGS ARE THE SAME, 0=OTHERWISE ) ' 'NOTE : ' TO AVOID USING THE SAME VARIABLES, THIS ROUTINE USES ' THE VARIABLE NAMES STARTING WITH "COMP" ' 18000 IF LEFT$(S1$,N1)=" " THEN S1$=RIGHT$(S1$,LEN(S1$)-N1):GOTO 18000 'supress leading blanks 18010 IF RIGHT$(S1$,N1)=" " THEN S1$=LEFT$(S1$,LEN(S1$)-N1):GOTO 18010 'supress trailing blanks 18020 IF LEFT$(S2$,N1)=" " THEN S2$=RIGHT$(S2$,LEN(S2$)-N1):GOTO 18020 'supress leading blanks 18030 IF RIGHT$(S2$,N1)=" " THEN S2$=LEFT$(S2$,LEN(S2$)-N1):GOTO 18030 'supress trailing blanks THESAME=N1 COMPL1=LEN(S1$) : COMPL2=LEN(S2$) IF (COMPL1<>COMPL2 OR COMPL1=N0 OR COMPL2=N0) THEN THESAME=N0:GOTO 18060 'different length  COMPL=N1 WHILE THESAME=N1 AND COMPL<=COMPL1 COMPZ=ASC(MID$(S1$,COMPL,N1)) : COMPZZZ=ASC(MID$(S2$,COMPL,N1)) IF (COMPZ<65 OR (COMPZ>90 AND COMPZ<97) OR COMPZ>122) THEN IF COMPZ<>COMPZZZ THEN THESAME=N0:GOTO 18050 ELSE 18040 'not alphabets IF COMPZ>64 AND COMPZ<91 THEN COMPZZ=COMPZ+32 ELSE COMPZZ=COMPZ-32 'get lower and upper case IF COMPZZZ<>COMPZ AND COMPZZZ<>COMPZZ THEN THESAME=N0 'not the same 18040 COMPL=COMPL+N1 'get next char 18050 WEND 18060 RETURN ' '----------------------------------------------------------------------------------- '*** GET (CRNLX,CRNLY) & (CRNUX,CRNUY) *** GET (CRNLX,CRNLY) & (CRNUX,CRNUY) *** '----------------------------------------------------------------------------------- 30958 XHI!=34000!:XLO!=-34000!:YHI!=34000!:YLO!=-34000! FOR ALAY=N1 TO INMLAY IF LAYVM(ALAY,N1)8191 AND OP<16384 GOTO 30980 '*** ELLIPSES *** ' IF (OP AND 7)=5 THEN SEMIX=X:SEMIY=Y:PASS=N0:Z=Z+N1 'HARRY IF (OP AND 7)=6 THEN RAD=(X AND &H3FFF):PASS=N0 GOSUB 31025 LX=X:LY=Y 30980 NEXT Z 30982 NEXT ALAY IF XHI!=34000! OR YHI!=34000! THEN CRNLX=-32768:CRNLY=-32768:CRNUX=32767:CRNUY=32767 ELSE CRNLX=XLO!:CRNLY=YLO!:CRNUX=XHI!:CRNUY=YHI! RETURN ' '--------------------------------------------------------------------------- '*** GET (XLO!,YLO!) & (XHI!,YHI!) *** GET (XLO!,YLO!) & (XHI!,YHI!) *** '--------------------------------------------------------------------------- 31025 '*** ELLIPSES *** IF (OP AND 7)=5 THEN IF PASS=N0 THEN PASS=N1:X=LX+SEMIX:Y=LY+SEMIY ELSE X=LX-SEMIX:Y=LY-SEMIY:PASS=0 'HARRY IF (OP AND 7)=6 THEN IF PASS=N0 THEN PASS=N1:X=LX+RAD: Y=LY+RAD ELSE X=LX-RAD: Y=LY-RAD: PASS=0 IF XHI!= 34000! THEN XHI!=X ELSE IF X>XHI! THEN XHI!=X IF XLO!=-34000! THEN XLO!=X ELSE IF XYHI! THEN YHI!=Y IF YLO!=-34000! THEN YLO!=Y ELSE IF Y51 THEN CLOSE #1,#2 IF ERR=52 THE  N GOSUB 810:PRINT"BAD FILE NAME";:GOSUB 860:GOTO 60060 IF ERR=53 AND HIT<>N0 THEN HIT=N0:RESUME 1312 IF ERR=53 AND FILECHEK=1 THEN GOSUB 810:PRINT"File "+BLDFILE$+" is required to scale symbols, but is not on disk";:GOTO 60150 IF ERR=53 AND FILECHEK=5 THEN GOSUB 810:PRINT"File CP.DBU not found on disk";:GOTO 60150 IF ERR=53 AND FILECHEK=6 THEN GOSUB 810:PRINT"File CP.DBU not found on disk";:GOTO 17070 IF ERR=53 AND FIND=1 THEN FIND=0:GOSUB 810:PRINT"Symbol ";:COLOR N15:PRINT TSYMNAM$;:COLOR N14:PRINT" not found";:GOTO 60070 IF ERR=53 AND FIND=2 THEN FIND=0:RESUME 605 IF ERR=57 THEN GOSUB 810:PRINT"DEVICE I/O ERROR";:GOSUB 860:GOTO 60060 IF ERR=61 AND SCALEALL=N1 THEN GOSUB 810:PRINT"DISK FULL";:GOSUB 980:GOSUB 60080:GOSUB 820:COLOR N11:PRINT E$;:GOSUB 860:RESUME 4080 IF ERR=61 THEN GOSUB 810:PRINT"DISK FULL";:GOSUB 980:GOSUB 60080:GOTO 60070 IF ERR=62 AND SCALEALL=N1 THEN GOSUB 810:PRINT"File error in symbol ";:COLOR N15:PRINT TSYMNAM$;:GOSUB 980:GOSUB 820:COLOR N11:PRINT E$;:GOSUB 860:RESUME 4080 IF ERR=62 THEN GOSUB 810:PRINT"File error in symbol ";:COLOR N15:PRINT TSYMNAM$;:GOSUB 980:GOTO 60070 IF ERR=70 THEN GOSUB 810:PRINT"DISK IS WRITE PROTECTED";:GOSUB 980:GOTO 60070 IF ERR=71 AND HIT<>N0 THEN GOSUB 820:PRINT"DISK IS NOT READY";:GOSUB 860:HIT=N0:RESUME 1310 IF ERR=71 THEN GOSUB 810:PRINT"DISK IS NOT READY";:GOSUB 860:GOTO 60060 COLOR N11:GOSUB 820 PRINT"DOS Error #";ERR;" Hit any key ";  GOSUB 860 GOSUB 861 60060 GOSUB 825 60070 RESUME 480 60080 IF OVERWRITE=N0 THEN KILL NEWSYMNAM$ ELSE KILL TEMPNAM$ RETURN 60100 FILECHECK=N0:CLOSE #1 GOSUB 810:PRINT"Error in ";BLDFILE$;" ..... can NOT continue!"; 60150 GOSUB 820:PRINT"Press any key to abort"; GOSUB 861 60200 CLOSE:COLOR N15:CLS:END OSUB 4100:NUMONLY=N0:IF IN$="" THEN 11120 ELSE IF VAL(IN$)<-30000 OR VAL(IN$)>30000 THEN LOCATE 14,32:PRINT" ";:GOTO 11110            !  !  "  "  #  #  $  $  %  %  &  &  '  '  ((