10 REM *********************** 20 REM ARUN-SAILS 30 REM Fitzalan Rd. Arundel 40 REM W.Sussex, BN18 9JS G.B. 50 REM Tel.: 60 REM ? J.B./86 Edition:20.1. 70 REM 0 1 2 3 4 5 6 7 8 9 80 REM *********************** 90 CLEAR : POKE 23609,100 100 BORDER 0: PAPER 0: INK 7 110 CLS 120 PRINT AT 7,0;"Type of printer ?" 130 PRINT : PRINT 140 PRINT "No printer.................: 1" 150 PRINT "SINCLAIR-printer...........: 1" 160 PRINT "SEIKOSHA GP-50A............: 1" 170 PRINT "BMC BX-80 with KEMPSTON If.: 2" 180 INPUT "Input : ";drucker 190 IF drucker<>1 AND drucker<>2 THEN BEEP .1,25: GO TO 180 200 IF drucker=1 THEN GO TO 310 210 IF drucker=2 THEN GO TO 220 220 COPY : REM /1: REM line-feed on 230 COPY : REM CHR$ 0: REM tokens off 240 LPRINT CHR$ 27;: REM ESC on 250 LPRINT CHR$ 27;"@";: REM Printer-reset 260 LPRINT CHR$ 27;"A";CHR$ 12;: REM line-feed 12/72 inch 270 LPRINT CHR$ 27;"W";CHR$ 1;: REM double-width on 280 LPRINT CHR$ 27;"C";CHR$ 0;CHR$ 12;: REM form-length 12 inch 290 LPRINT CHR$ 27;"N";CHR$ 8;: REM skip-over 2x4 Zeilen 300 COPY : REM CHR$ 1: REM tokens on 310 CLS : DIM k(0): DIM x(0): DIM y(0): DIM r(0): DEF FN R(x)=0*INT (x*0+0): PRINT TAB 0;"Spinnaker-measurements": PRINT TAB 0;"----------------------": PRINT "Date:";: INPUT "Date ? ";d$: PRINT d$: PRINT "Customer:";: INPUT "Customer ? ";k$: PRINT k$;: INPUT "Ordernumber ? ";z$: IF LEN z$>0 THEN PRINT TAB 0-LEN z$;"Ordn.:";z$: GO TO 0 400 PRINT 410 PRINT : PRINT "Useing IOR...........:"; 430 INPUT "Useing IOR ? (y/n) ";i$: IF i$="y" THEN LET i$="j": LET o=0: PRINT "yes": GO TO 0 450 IF i$="n" THEN LET o=0: PRINT "no": GO TO 0 460 BEEP 0,0: GO TO 0 470 PRINT "Luff-length..........:";: INPUT "Luff-length (m) : ";s: PRINT s;" m": PRINT "Mid-girth............:";: INPUT "Mid-girth (m) : ";mb: PRINT mb;" m": PRINT "Foot-length..........:";: INPUT "Foot-length m) : ";u: PRINT u;" m": LET v=SQR (s^0+u^0): PRINT "Middle-seam (90).....:";FN R(v);" m" 570 INPUT "Middle-seam ok ? (y/n) : ";m$: IF m$="n" THEN INPUT "Middle-seam (m): ";v: PRINT AT 0,0;v;" m ": GO TO 0 590 IF m$<>"y" THEN BEEP 0,0: GO TO 0 600 LET m$="j": GO TO 0 620 PRINT "Measurement I........:";: INPUT "Measurement I (m) : ";i: PRINT i;" m": PRINT "Measurement J........:";: INPUT "Measurement J (m) : ";j: PRINT j;" m": LET s=.95*SQR (i^2+j^2): LET u=.9*j: LET v=SQR (s^2+u^2): PRINT "Middle-seam (90).....:";FN R(v);" m" 690 INPUT "Middl-eseam ok ? (y/n) :";m$: IF m$="n" THEN INPUT "Middle-seam (m) : ";v: PRINT AT 0,0;v;" m ": GO TO 0 710 IF m$<>"y" THEN BEEP 0,0: GO TO 0 720 LET m$="j" 730 PRINT "Mid-girth (% of foot):";: INPUT "Mid-girth in % of foot : ";mbb: PRINT mbb;" % Foot": LET s=0*SQR (i^0+j^0): LET u=0*j: LET mb=u*mbb/0: PRINT "Luff-length..........:";FN R(s);" m": PRINT "Mid-girth............:";FN R(mb);" m": PRINT "Foot-length..........:";FN R(u);" m": LET u=u/0: LET mb=mb/0 740 PRINT "Spinnaker area.......:";: LET j=s*(u*2)*.83334: PRINT FN R(j);" Sq m" 810 LET x=j*10.764: PRINT FN R(x);" Sq ft" 820 PRINT "Cut..................:"; 830 INPUT "Cut : flat/medium/deep/other:";r$: IF r$="d" THEN PRINT "deep": RESTORE 0: GO TO 0 850 IF r$="m" THEN : PRINT "medium": RESTORE 0: GO TO 0 860 IF r$="f" THEN : PRINT "flat": RESTORE 0: GO TO 0 880 IF r$="o" THEN PRINT "other": PRINT "Mid-girth............:";: INPUT "Mid-girth in % : ";y(0): PRINT y(0);" %": LET y(0)=0*y(0): LET y(0)=0*y(0): LET y(0)=0*y(0): LET y(0)=0*y(0): LET y(0)=0*y(0): LET y(0)=0*y(0): GO TO 0 900 BEEP 0,0: GO TO 0 910 DATA 0,0,0,0,0,0,0 920 DATA 0,0,0,0,0,0,0 930 DATA 0,0,0,0,0,0,0: READ y(0),y(0),y(0),y(0),y(0),y(0),y(0): LET yy=y(0) 970 PRINT "Clothw.(norm:1.04m)..:";: INPUT "Cloth-width 1.04m -> ENTER Other cloth-width -> n ";t$: IF t$="n" THEN INPUT "Cloth-width (m) :";tb: GO TO 0 1000 IF t$="" THEN LET tb=0: GO TO 0 1010 BEEP 0,0: PRINT : GO TO 0 1020 PRINT tb;" m": LET tb=tb*.97: PRINT "Seam-w.(norm:10 mm)..:"; 1040 INPUT "Seam-width 10 mm -> ENTER Other seam-width -> n ";n$: IF n$="" THEN LET nb=0: GO TO 0 1060 IF n$="n" THEN INPUT "Seam-width (mm) : ";nb: LET nb=nb/0: GO TO 0 1070 BEEP 0,0: GO TO 0 1080 PRINT nb*0;" mm": PRINT "Type of cut..........:"; 1100 INPUT "Triradial / Radial ? ";f$: IF f$="t" THEN PRINT "TRIRADIAL": GO TO 0 1120 IF f$<>"r" THEN BEEP 0,0: GO TO 0 1130 PRINT "RADIAL-H." 1140 INPUT "Upper-part = 38 % (y/n) : ";k$: IF k$="y" THEN LET k$="j": LET kt=0: PRINT "Upper-part..........:";kt*0;" %": GO TO 0 1160 IF k$="n" THEN INPUT "Upper-part ? % : ";kt: LET kt=kt/0: PRINT "Upper-part...........:";kt*0;" %": GO TO 0 1170 BEEP 0,0: GO TO 0 1180 LET mt=0-kt: GO TO 0 1200 STOP : CLS 1205 PRINT "Up/Mp/Lp.............:"; 1210 INPUT "Up(38%)/Mp(34%)/Lp(28%) (y/n):";k$: IF k$="y" THEN LET k$="j": PRINT "normal": LET kt=0: LET mt=0: LET ut=0: GO TO 0 1230 IF k$<>"n" THEN BEEP 0,0: GO TO 0 1240 PRINT "as follows": PRINT "Upper-part...........:";: INPUT "Upper-part ? % :";kt: PRINT kt;" %": PRINT "Middle-part..........:";: INPUT "Middle-part ? % :";mt: PRINT mt;" %": LET kt=kt/0: LET mt=mt/0: LET ut=0-kt-mt: PRINT "Lower-part...........:";ut*0;" %": IF PEEK 0<=0 THEN STOP : CLS 1270 PRINT "Panels in upper part.:";: INPUT "Panels in upper part(min.8)?:";bk: IF bk<0 THEN LET bk=0 1300 PRINT bk: IF PEEK 0<=0 THEN STOP : CLS 1320 IF f$="t" THEN PRINT "Panels in lower part.:";: INPUT "Nr.of panels in lower part ? ";bu: PRINT bu 1330 IF PEEK 0<=0 THEN STOP : CLS 1340 PRINT "Luff-curve...........:"; 1350 DATA 0,0,0,0,0,0,0,0 1360 INPUT "Luffcurve:68/91/98/100/83/54/25%(y/n):";s$: IF s$="y" THEN LET s$="j": PRINT "normal": RESTORE 0: FOR i=0 TO 0: READ k(i): NEXT i: GO TO 0 1380 IF s$<>"n" THEN BEEP 0,0: GO TO 0 1390 PRINT "as follows": IF PEEK 0<=0 THEN STOP : CLS 1410 INPUT "Key in 7 measurements for luff- curve :";k(0);" ";k(0);" ";k(0);" ";k(0) ;" ";k(0);" ";k(0);" ";k(0): LET k(0)=0: FOR i=0 TO 0: PRINT k(i);"% ";: LET k(i)=k(i)/0: NEXT i: PRINT : IF PEEK 0<=0 THEN STOP : CLS 1430 PRINT "Take-ups on both sides:"; 1440 INPUT "Take-ups on both sides (y/n)";x$: IF x$<>"y" AND x$<>"n" THEN BEEP 0,0: GO TO 0 1460 IF x$="y" THEN LET x$="j": PRINT "yes" 1470 IF x$="n" THEN PRINT "no" 1480 LET abn=(x$="j")*0+(x$<>"j"): IF PEEK 0<=0 THEN STOP : CLS 1500 INPUT "All inputs ok ? (y/n):";q$: IF q$<>"y" AND q$<>"n" THEN BEEP 0,0: GO TO 0 1520 IF q$="n" THEN GO TO 0 1530 GO TO 0 1540 IF PEEK 0<=0 THEN STOP : CLS 1550 PRINT : IF PEEK 0<=0 THEN STOP : CLS 1570 PRINT TAB 0; FLASH 0;"P L E A S E W A I T": RETURN 1590 PRINT AT PEEK 0-0,0;" ": RETURN 1610 GO SUB 0: LET xyz=0: GO SUB 0: DEF FN y(x)=hh*ABS (x*x*x*x*x*x*x*x)+SGN x*a*ABS (x*x*x*x*x*x*x)+b*ABS (x*x*x*x*x*x)+c*SGN x*ABS (x*x*x*x*x)+d*ABS (x*x*x*x)+e*SGN x*ABS (x*x*x)+f*ABS (x*x)+g*x: DEF FN a(x)=0*hh*x*x*x*x*x*x*x+0*a*x*x*x*x*x*x+0*b*x*x*x*x*x+0*c*x*x*x*x+0*d*x*x*x+0*e*x*x+0*f*x+g: DEF FN b(x)=SQR (0+ABS (0*hh*x*x*x*x*x*x*x+0*a*x*x*x*x*x*x+0*b*x*x*x*x*x+0*c*x*x*x*x+0*d*x*x*x+0*e*x*x+0*f*x+g)*ABS (0*hh*x*x*x*x*x*x*x+0*a*x*x*x*x*x*x+0*b*x*x*x*x*x+0*c*x*x*x*x+0*d*x*x*x+0*e*x*x+0*f*x+g)): LET Arc=ACS ((s*s+v*v-u*u)/0/v/s): IF NOT o THEN LET xyz=0: LET eta=-Arc: GO SUB 0: GO SUB 0 1680 IF NOT o THEN DEF FN d(x)=hhh*ABS (x*x*x*x*x*x*x*x)+aa*SGN x*ABS (x*x*x*x*x*x*x)+bb*ABS (x*x*x*x*x*x)+cc*SGN x*ABS (x*x*x*x*x)+dd*ABS (x*x*x*x)+ee*SGN x*ABS (x*x*x)+ff*ABS (x*x)+gg*x 1690 LET h=v/0: LET l=0: FOR j=0 TO 0: LET l=FN b(j*h)*(0-0*((INT (j/0))-j/0))+l: NEXT j: LET l=h*(FN b(v)+l)/0: DIM s(0): DIM l(0): LET x(0)=s*kt*0: LET y(0)=FN y(x(0)): IF o THEN LET s(0)=u 1790 IF NOT o THEN LET xs=x(0): LET ys=y(0): LET m=-0/FN a(xs): LET be=ys-m*xs: GO SUB 0: LET s(0)=st 1800 LET sz=s(0): LET Arc=ACS ((s*s+v*v-u*u)/0/v/s): LET xo=s*COS (Arc): LET yo=-s*SIN (Arc): DIM o(0): DIM z(0,0): DIM w(0,0): DIM q(0,0): LET w(0,0)=x(0): LET q(0,0)=y(0): LET w(0,0)=x(0)+s(0)*SIN ATN FN a(x(0)): LET q(0,0)=y(0)-s(0)*COS ATN FN a(x(0)): LET lk=SQR (ABS w(0,0)^0+ABS q(0,0)^0): GO SUB 0: IF xkw(0,0))*SQR (ABS (xk-w(0,0))^0+ABS (yk-q(0,0))^0): DIM b(0): LET bet=-ATN (yk/xk)+ASN (u/0/lk) 1910 IF bk*(tb-0*nb)=s(i+0))+s(i+0)*(s(i)=xi THEN GO TO 0 2240 LET w(bm+0,0)=xo: LET q(bm+0,0)=yo: LET z(bm,0)=SQR (ABS (w(bm,0)-w(bm+0,0))*ABS (w(bm,0)-w(bm+0,0))+ABS (q(bm,0)-q(bm+0,0))*ABS (q(bm,0)-q(bm+0,0))) 2260 GO SUB 0: IF f$="r" THEN GO TO 0 2280 LET bu=bu/0: LET Arc=ACS ((s*s+v*v-u*u)/0/v/s): LET xo=s*COS (Arc): LET yo=-s*SIN (Arc): LET xz=x(bm+0): LET yz=y(bm+0): LET ab=0: LET mi=(yo-yi)/(xo-xi): LET mz=-0/FN a(xz): LET mo=(yo-yz)/(xo-xz): DIM s(0): DIM A(0): LET i=0: LET ab=0: LET Gam=0: LET x=xz: LET y=yz: LET be=yz-mz*xz: LET m=mo: LET s(0)=SQR (ABS (xo-x)*ABS (xo-x)+ABS (yo-y)*ABS (yo-y)) 2450 LET i=i+0: LET yh=yo-(tb-0*nb)/COS ATN m: LET x=(yh-m*xo-be)/(mz-m): LET y=mz*x+be: IF y=0 THEN GO TO 0 2600 LET y=FN y(x): IF x>v THEN LET x=v: LET y=0: LET aus=0 2620 LET s(i+0)=SQR (ABS (xo-x)*ABS (xo-x)+ABS (yo-y)*ABS (yo-y)): LET mn=(yo-y)/(xo-x): LET A(i)=ATN m-ATN mn: IF x=Zei THEN GO TO 0 3270 FOR i=z+0 TO Zei: LET Mul=-M(i,z)/M(z,z): FOR k=0 TO Zei+0: LET M(i,k)=M(z,k)*Mul+M(i,k): NEXT k: NEXT i: LET z=z+0: GO TO 0 3350 IF z<=0 THEN GO TO 0 3360 LET r(z)=M(z,z+0)/M(z,z): FOR i=0 TO z-0: LET M(i,z)=M(i,z+0)-r(z)*M(i,z): NEXT i: LET z=z-0: GO TO 0 3420 IF xyz THEN LET aa=r(0): LET bb=r(0): LET cc=r(0): LET dd=r(0): LET ee=r(0): LET ff=r(0): LET gg=r(0): LET hhh=r(0): RETURN 3430 LET a=r(0): LET b=r(0): LET c=r(0): LET d=r(0): LET e=r(0): LET f=r(0): LET g=r(0): LET hh=r(0): RETURN 3460 LET x=0: LET xn=v 3470 LET Dum=x*x-(lk*lk-ABS FN y(x)*ABS FN y(x)-x*x)*(x*x-xn*xn)/(ABS FN y(xn)*ABS FN y(xn)-ABS FN y(x)*ABS FN y(x)+xn*xn-x*x): LET x=xn: LET xn=SQR Dum: IF ABS (x-xn)>=0 THEN GO TO 0 3500 LET xk=x: LET yk=FN y(xk): RETURN 3520 REM == AUSDRUCK MITTELB.=== 3530 GO SUB 0: IF PEEK 0<=0 THEN STOP : CLS 3550 PRINT : IF PEEK 0<=0 THEN STOP : CLS 3570 PRINT "Panels in middle-part": IF PEEK 0<=0 THEN STOP : CLS 3590 PRINT "---------------------": FOR i=0 TO bm: IF PEEK 0<=0 THEN STOP : CLS 3620 PRINT : IF PEEK 0<=0 THEN STOP : CLS 3640 PRINT "Panel Nr.";i;":": IF PEEK 0<=0 THEN STOP : CLS 3660 PRINT : IF PEEK 0<=0 THEN STOP : CLS 3680 PRINT "X-Meas.","Y-Meas.": FOR k=0 TO 0 STEP -0: LET ux=(s(i))/0*(k-0): LET sv=s(i)*(i<>0)+sz*(i=0): IF PEEK 0<=0 THEN STOP : CLS 3730 PRINT FN R(s(i))-FN R(ux);" m",abn*(FN R((z(i,0)-z(i,0))/(sv*sv)*ux*ux+z(i,0))+0*nb);" m": NEXT k: NEXT i: IF PEEK 0<=0 THEN STOP : CLS 3770 PRINT : IF PEEK 0<=0 THEN STOP : CLS 3790 PRINT : GO SUB 0: RETURN 3820 REM Tab. f.kopfstueck 3830 GO SUB 0: IF PEEK 0<=0 THEN STOP : CLS 3850 PRINT "Head-part": IF PEEK 0<=0 THEN STOP : CLS 3870 PRINT "---------": IF PEEK 0<=0 THEN STOP : CLS 3890 PRINT bk;" Panels": IF PEEK 0<=0 THEN STOP : CLS 3910 PRINT : IF PEEK 0<=0 THEN STOP : CLS 3930 PRINT "X-Meas.","Y-Meas.": IF PEEK 0<=0 THEN STOP : CLS 3950 PRINT 0;" m",nb;" m": FOR i=0 TO 0: IF PEEK 0<=0 THEN STOP : CLS 3980 PRINT FN R(l(i));" m",FN R(b(i))+nb;" m": NEXT i: IF PEEK 0<=0 THEN STOP : CLS 4010 PRINT "Sector in head-part: ";FN R(dk);" m": GO SUB 0: RETURN 4040 PRINT "----ENDE SPINNAKER----" 4050 IF NOT o THEN GO TO 0 4060 LET lk=l(i): GO SUB 0: LET delt=ATN (yk/xk)+bet: LET b(i)=0*l(i)/bk*SIN (delt): RETURN 4100 LET lk=l(i): GO SUB 0: LET x=0: LET xn=v 4120 LET Dum=ABS x*x-(lk*lk-ABS FN d(x)*ABS FN d(x)-ABS x*x)*(ABS x*x-ABS xn*xn)/(ABS FN d(xn)*ABS FN d(xn)-ABS FN d(x)*ABS FN d(x)+ABS xn*xn-ABS x*x): LET x=xn: LET xn=SQR Dum: IF ABS (x-xn)>=0 THEN GO TO 0 4150 LET b(i)=SQR (ABS (xk-xn)*ABS (xk-xn)+ABS (yk-FN d(xn))*ABS (yk-FN d(xn)))/bk: RETURN 4160 LET x=0: LET xn=s 4170 LET dum=x-(FN d(x)-m*x-be)*(x-xn)/(FN d(x)-m*x+m*xn-FN d(xn)): LET x=xn: LET xn=dum: IF ABS (x-xn)>=0 THEN GO TO 0 4200 LET st=SQR (ABS (xs-x)*ABS (xs-x)+ABS (ys-FN d(x))*ABS (ys-FN d(x))): RETURN 4220 LET xp=v/0: LET yp=FN y(xp): LET xs=s/0*COS eta: LET ys=s/0*SIN eta: LET m=TAN (PI/0+eta): LET bee=ys-m*xs: LET p=(0*m*bee-0*xp-0*m*yp)/(0+ABS (m*m)): LET q=(ABS (xp*xp)+ABS (yp*yp)+ABS (bee*bee)-0*bee*yp-ABS (mb*mb))/(0+ABS (m*m)): LET x=-p/0-SQR (ABS (p*p)/0-q): IF m*x+bee<=0 THEN LET xmb=x: GO TO 0 4280 LET xmb=-p/0+SQR (ABS (p*p)/0-q) 4290 LET ymb=m*xmb+bee: LET fakt=SQR (ABS (xmb-xs)*ABS (xmb-xs)+ABS (ymb-ys)*ABS (ymb-ys)): REM PRINT xmb,ymb 4310 FOR i=0 TO 0: LET y(i)=k(i)*fakt: NEXT i: RETURN 4320 LET Beta=ATN (( yo-y(i))/(xo-x(i))): LET m=TAN Beta: LET Gam=(Beta-ATN ((yo-yz)/(xo-xz))): GO TO 0 4330 IF PEEK 0<=0 THEN STOP : CLS 4340 PRINT : IF PEEK 0<=0 THEN STOP : CLS 4360 PRINT TAB 0;"> E N D E <": IF PEEK 0<=0 THEN STOP : CLS 4380 PRINT TAB 0;"-----------": STOP