Sharp PC1360 |
Dokumentation ansehen
Programmspeicher-Image laden
10 | "C" CLS :CLEAR :DEGREE :POKE 64288,0:CLOSE :WAIT 0:F3=1 |
20 | PRINT "Computer Aided Design":PRINT "mit SHARP PC-1360":PRINT "und SHARP CE-140P" |
30 | WAIT :PRINT "Copyright by M.Janssen":WAIT 0:CLS |
40 | DIM T$(0)*80 |
50 | INPUT "Bild speichern ? <N/J> ";M$:IF M$="J" LET F1=1 |
60 | CLS :IF F1 GOSUB 4880 |
70 | IF F1 OPEN "X:"+N$+".CAD" FOR OUTPUT AS #2 |
80 | IF F1 PRINT "Speicherung:":PRINT "1 = automatisch":F9=1:PRINT "0 = einzelne Abfrage":INPUT F9 |
90 | CLS :WAIT :PRINT "CE-140P o.k. ? <ENTER>":WAIT 0:CLS |
100 | LPRINT CHR$ 27+"@":LF 1 |
110 | INPUT "Bildtitel: ";T$(0) |
120 | POKE 12348,16 |
130 | CLS :IF LEN T$(0)>38 GOTO 110 |
140 | IF T$(0)<>"" LPRINT " ";T$(0) |
150 | S=1:PRINT "Eingabemasstab:":PRINT "1mm = Einheit(en)":CURSOR 6,1:INPUT S |
155 | CLS :IF S<=0 OR S>5 BEEP 2:GOTO 150 |
160 | S=5/S |
170 | PRINT "Bildgroesse:":PRINT "Breite (X): Einh.":PRINT "Laenge (Y): Einh." |
180 | U=450:V=300 |
190 | CURSOR 12,1:INPUT U:U=U*S |
200 | CURSOR 12,2:INPUT V:V=V*S |
210 | CLS :IF U>450 OR V>999 BEEP 2:GOTO 170 |
220 | GRAPH :GLCURSOR (12,-V):SORGN |
230 | IF F1 PRINT #2,U,V |
240 | "H" CLS :WAIT 0:PRINT "Ihre Auswahl ?":PRINT "(H = Hilfe) |
250 | M=ASC INKEY$ :IF M=0 GOTO 250 |
260 | IF F3 BEEP 1,8,200 |
270 | CLS :IF M<65 BEEP 2:GOTO 240 |
280 | ON M-64 GOSUB 340 ,350 ,370 ,390 ,700 ,1120 ,1150 ,1470 ,1660 ,1680 ,1730 ,1800 ,1840 |
290 | ON M-77 GOSUB 1980 ,2030 ,2240 ,2590 ,2490 ,2560 ,2260 ,2630 ,3360 ,3560 ,3770 |
300 | ON M-88 GOSUB 240 ,240 |
310 | IF F1 AND F7 AND F9 GOSUB 4900 :GOTO 240 |
320 | IF F1 AND F7 GOSUB 5200 |
330 | GOTO 240 |
340 | PRINT "Bild zeigen":F7=0:GLCURSOR (X,-200):RETURN |
350 | F7=0:IF F3 PAUSE "Beeper aus":F3=0:RETURN |
360 | BEEP 1,8,200:PAUSE "Beeper ein":F3=1:RETURN |
370 | F7=0:IF F8 PAUSE "Eingabe mit Tastatur":F8=0:RETURN |
380 | IF F8=0 PAUSE "Eingabe mit Cursortasten":F8=1:RETURN |
390 | PRINT "Bild von Diskette":GOSUB 4880 |
400 | OPEN "X:"+N$+".CAD" FOR INPUT AS #3:INPUT #3,XD,YD |
410 | P=C1:Q=C2:C1=0:C2=0 |
420 | F0=0:PRINT "0 = Originalfarben":PRINT "1 = einfarbig":INPUT F0 |
430 | CLS :IF F0 GOSUB 1120 |
440 | C7=1:INPUT "Vergroesserung: ";C7 |
450 | GOSUB 4420 :XR=XA:YR=YA |
460 | XT=XD*C7+XR:YT=YD*C7+YR |
470 | GOSUB 4600 |
480 | IF F7=0 OR EOF (3) CLOSE #3:M=68:C1=P:C2=Q:X=XR/S:Y=YR/S:CLEAR XR,YR,F7,F4:RETURN |
490 | INPUT #3,M |
500 | ON M-68 GOSUB 560 ,570 ,10 ,10 ,590 ,600 ,610 ,620 ,560 ,10 ,560 ,10 ,10 ,10 ,650 ,630 |
510 | ON M-84 GOSUB 560 ,660 ,680 ,670 ,10 ,10 |
520 | IF F0=0 LET C1=C0 |
530 | IF F1 AND F9 GOSUB 4900 :GOTO 480 |
540 | IF F1 GOSUB 5200 |
550 | GOTO 480 |
560 | INPUT #3,XM,YM,R,A,B,E,T,F6,C0:GOSUB 5140 :GOSUB 3860 :RETURN |
570 | INPUT #3,C0:IF F0RETURN |
580 | C1=C0:GOSUB 3870 :RETURN |
590 | INPUT #3,C2:RETURN |
600 | INPUT #3,X1,Y1,X2,Y2,C0,C2:GOSUB 5180 :GOSUB 3880 :RETURN |
610 | INPUT #3,X1,Y1,X2,Y2,X3,Y3,X4,Y4,C0,C2:GOSUB 5160 :GOSUB 3890 :RETURN |
620 | INPUT #3,X1,Y1,X2,Y2,C0,C2:GOSUB 5180 :GOSUB 3900 :RETURN |
630 | INPUT #3,X1,Y1,C0,C4,C5,C6,T$(0):GOSUB 5190 :C5=C5*C7:C6=C6*C7:IF C5<1LET C5=1 |
640 | GOSUB 3910 :RETURN |
650 | INPUT #3,C3,C0:GOSUB 3930 :RETURN |
660 | INPUT #3,XM,YM,G,H,Z,C0,C2:GOSUB 5150 :G=G*C7:H=H*C7:GOSUB 3940 :F7=1:RETURN |
670 | INPUT #3,X1,Y1,X2,Y2,T,K,C0,C2:GOSUB 5180 :T=T*C7:GOSUB 4020 :F7=1:RETURN |
680 | ERASE C:DIM C(1,40):INPUT #3,I,C(*),C0,C2:FOR J=1 TO I |
690 | LLINE (C(0,J-1)*C7+XR,C(1,J-1)*C7+YR)-(C(0,J)*C7+XR,C(1,J)*C7+YR),C2,C1:NEXT J:RETURN |
700 | A=0:B=360:F6=0 |
710 | W=1:PRINT "Ellipse:","1 = M,a,b":PRINT "","2 = M,P1,P2":PRINT "","3 = F1,F2,Px |
720 | PRINT "","4 = S1,S2 ":CURSOR 0,3:INPUT W |
730 | CLS :IF W<>INT W OR W<1 OR W>4 BEEP 2:GOTO 710 |
740 | ON W GOSUB 810 ,950 ,860 ,1070 |
750 | XT=XM+G:YT=YM:GOSUB 4600 :IF F7=0 RETURN |
760 | XT=XM-G:GOSUB 4600 :IF F7=0 RETURN |
770 | XT=XM:YT=YM+H:GOSUB 4600 :IF F7=0 RETURN |
780 | YT=YM-H:GOSUB 4600 :IF F7=0 RETURN |
790 | T=1:E=H/G:R=G:GOSUB 3860 :X=XM/S:Y=YM/S |
800 | RETURN |
810 | GOSUB 4340 |
820 | PRINT "X-Abschnitt:":INPUT "a = ";G |
830 | PRINT "Y-Abschnitt:":INPUT "b = ";H |
840 | IF G<=0 OR H<=0 BEEP 2:CLS :GOTO 820 |
850 | G=G*S:H=H*S:RETURN |
860 | PRINT "Brennpunkte:":GOSUB 4110 :GOSUB 4180 |
870 | PRINT "Punkt der Ellipsenlinie:":GOSUB 4260 |
880 | XM=(X1+X2)/2:YM=(Y1+Y2)/2 |
890 | IF Y1=Y2 GOTO 920 |
900 | IF X1=X2 GOSUB 920 :P=G:G=H:H=P:RETURN |
910 | BEEP 2:PAUSE "Achsensymmetrie!":CLS :GOTO 860 |
920 | G=(SQR((X3-X1)^2+(Y3-Y1)^2)+SQR((X3-X2)^2+(Y3-Y2)^2))/2 |
930 | H=SQR(G^2-(X1-XM)^2-(Y1-YM)^2) |
940 | RETURN |
950 | GOSUB 4340 |
960 | PRINT "Punkte der Ellipsenlinie":GOSUB 4110 :GOSUB 4180 |
970 | IF ABS (Y2-YM)=ABS (Y1-YM) OR ABS (X2-XM)=ABS (X1-XM) BEEP 2:GOTO 960 |
980 | IF Y2=Y1 GOTO 1030 |
990 | G=SQR(((X1-XM)^2*(Y2-YM)^2-(X2-XM)^2*(Y1-YM)^2)/((Y2-YM)^2-(Y1-YM)^2)) |
1000 | IF Y1=YM LET H=ABS (G*(Y2-YM))/SQR(G^2-(X2-XM)^2):RETURN |
1010 | H=ABS (G*(Y1-YM))/SQR(G^2-(X1-XM)^2) |
1020 | RETURN |
1030 | H=SQR(((X2-XM)^2*(Y1-YM)^2-(X1-XM)^2*(Y2-YM)^2)/((X2-XM)^2-(X1-XM)^2)) |
1040 | IF X1=XM LET G=ABS (H*(X2-XM))/SQR(H^2-(Y2-YM)^2):RETURN |
1050 | G=ABS (H*(X1-XM))/SQR(H^2-(Y1-YM)^2) |
1060 | RETURN |
1070 | PRINT "oberer/unterer Scheitel:":GOSUB 4110 :PRINT "linker/rechter Scheitel:":GOSUB 4180 |
1080 | IF Y1=Y2 OR X1=X2 CLS :BEEP 2:GOTO 1070 |
1090 | XM=X1:YM=Y2 |
1100 | G=ABS (X2-XM):H=ABS (Y1-YM) |
1110 | RETURN |
1120 | F7=1:PRINT "0=Schwarz","4=Gruen":PRINT "1=Lila","5=Blau":PRINT "2=Rot","6=Gelb" |
1130 | PRINT "3=Rosa","7=ohne":CURSOR 22,3:INPUT C1 |
1140 | GOSUB 3870 :CLS :RETURN |
1150 | F7=0:CLS :PRINT "Zeichen-","R (ahmen)":PRINT "hilfen :","G (itter)":PRINT "","S (kala)" |
1160 | W$="R":INPUT W$ |
1170 | CLS :IF W$="R" LLINE (U,V)-(0,0),C2,C1,B:POKE &FB20,0:RETURN |
1180 | IF W$="G" GOSUB 1210 :RETURN |
1190 | IF W$="S" GOSUB 1340 :RETURN |
1200 | BEEP 2:GOTO 1150 |
1210 | F2=0:PRINT "Unterteilung: Einh.":CURSOR 14,0:G=U/5/S:INPUT G |
1220 | G=G*S:IF G<5 OR G>U/2 OR G>V/2 BEEP 2:CLS :GOTO 1210 |
1230 | FOR I=G TO U-1 STEP G |
1240 | IF F2=0 LLINE (I,0)-(I,V),C2,C1 |
1250 | IF F2 LLINE (I,V)-(I,0),C2,C1 |
1260 | F2=NOT F2+2 |
1270 | NEXT I |
1280 | FOR I=G TO V-1 STEP G |
1290 | IF F2=0 LLINE (U,I)-(0,I),C2,C1 |
1300 | IF F2 LLINE (0,I)-(U,I),C2,C1 |
1310 | F2=NOT F2+2 |
1320 | NEXT I |
1330 | RETURN |
1340 | K=0:PRINT "Unterteilung:":PRINT "Striche: alle Einh." |
1350 | PRINT "Zahlen : alle Striche":CURSOR 14,1:G=50/S:INPUT G |
1360 | H=2:CURSOR 14,2:INPUT H |
1370 | G=G*S |
1380 | IF G<5 OR H=0 OR G>U BEEP 2:CLS :GOTO 1340 |
1390 | FOR I=0 TO U-G STEP G |
1400 | LLINE (I,-20-10*(K/H=INT (K/H)))-(I,-15)-(I+G,-15),0,C1 |
1410 | K=K+1:NEXT I |
1420 | LLINE (K*G,-20-10*(K/H=INT (K/H)))-(K*G,-15)-(U,-15),0,C1 |
1430 | FOR I=0 TO K STEP H |
1440 | Z$=STR$ (I*G/S):GLCURSOR (I*G-LEN Z$*6+2,-50):LPRINT "P";Z$ |
1450 | NEXT I |
1460 | RETURN |
1470 | I=1:F7=0:GOSUB 1540 |
1480 | W=ASC INKEY$ :IF W=0 GOTO 1480 |
1490 | IF W=13 RETURN |
1500 | IF W=4 LET I=I-1:IF I=0LET I=1:GOTO 1480 |
1510 | IF W=5 LET I=I+1:IF I=7LET I=6:GOTO 1480 |
1520 | CLS :ON I GOSUB 1540 ,1560 ,1580 ,1600 ,1620 ,1640 |
1530 | GOTO 1480 |
1540 | PRINT "A = Bild zeigen":PRINT "B = Beeper an/aus":PRINT "C = Cursor manuell" |
1550 | PRINT "D = Bild von Diskette":RETURN |
1560 | PRINT "E = Ellipse (achsensym.)":PRINT "F = Farbe aendern" |
1570 | PRINT "G = Gitter/Skala/Rahmen":PRINT "H = Hilfe":RETURN |
1580 | PRINT "I = Liniencode aendern":PRINT "J = Gerade" |
1590 | PRINT "K = Parallelogramm":PRINT "L = Rechteck":RETURN |
1600 | PRINT "M = Polygon":PRINT "N = Ende" |
1610 | PRINT "O = Kreis":PRINT "P = Polare Eingabe":RETURN |
1620 | PRINT "Q = Speicherverfahren":PRINT "R = Relative Eingabe":PRINT "S = Schraffur" |
1630 | PRINT "T = Text":RETURN |
1640 | PRINT "U = Bogen,Sektor":PRINT "V = Ellipse (beliebig)" |
1650 | PRINT "W = Zeichnen mit Cursor":PRINT "X = Bruchlinie":RETURN |
1660 | F7=1:INPUT "Liniencode (0-15): ";C2 |
1670 | RETURN |
1680 | PRINT "Gerade zeichnen:":PRINT "von "; |
1690 | GOSUB 4110 :PRINT "nach "; |
1700 | GOSUB 4180 |
1710 | GOSUB 3880 :X=X2/S:Y=Y2/S |
1720 | F7=1:RETURN |
1730 | PRINT "Parallelogramm:" |
1740 | PRINT "Diagonale 1 :":GOSUB 4110 :GOSUB 4180 |
1750 | PRINT "Diagonale 2 :":GOSUB 4260 |
1760 | IF (Y3-Y1)*(X2-X1)=(Y2-Y1)*(X3-X1) LET M=74:GOSUB 5040 :GOSUB 3880 :RETURN |
1770 | X4=X1+X2-X3:Y4=Y1+Y2-Y3 |
1780 | XT=X4:YT=Y4:GOSUB 4600 :IF F7=0 RETURN |
1790 | GOSUB 3890 :X=X4/S:Y=Y4/S:RETURN |
1800 | PRINT "Rechteck","Diagonale: " |
1810 | GOSUB 4110 :GOSUB 4180 |
1820 | X=X2/S:Y=Y2/S:GOSUB 3900 |
1830 | RETURN |
1840 | W=1:PRINT "Polygon:","1 = M,n,r,<a":PRINT "","2 = M,n,Peck":CURSOR 0,3:INPUT W |
1850 | CLS :IF W<>INT W OR W<=0 OR W>2 BEEP 2:GOTO 1840 |
1860 | W=W-1:GOSUB 1880 |
1870 | E=1:B=A+360:T=360/N:GOTO 2080 |
1880 | N=6:GOSUB 4340 :INPUT "Anzahl Ecken: ";N |
1890 | CLS :IF N<2 BEEP 2:GOTO 1880 |
1900 | IF W GOTO 1960 |
1910 | INPUT "Radius: r = ";R |
1920 | R=R*S:A=0 |
1930 | INPUT "Anfangswinkel: ";A |
1940 | CLS :IF ABS A>360 BEEP 2:GOTO 1930 |
1950 | RETURN |
1960 | CLS :PRINT "Eckpunkt:":GOSUB 4110 :XA=X1:YA=Y1:GOSUB 4480 |
1970 | GOSUB 4410 :RETURN |
1980 | GOSUB 340 :W$="N":PRINT "Zeichnung o.k.? <N/J>" |
1990 | INPUT W$:IF W$<>"J"RETURN |
2000 | IF W$<>"J" RETURN |
2010 | CLOSE :GLCURSOR (0,-200):LPRINT CHR$ 27+"@":CLS :PAUSE "Programmende":CLS |
2020 | END |
2030 | F6=0:A=-90:B=270:E=1:T=1:W=1:PRINT "Kreis:","1 = M,r" |
2040 | PRINT "","2 = M,P1":PRINT "","3 = P1,P2,P3":CURSOR 0,3:INPUT W |
2050 | IF W<>INT W OR W<1 OR W>3 BEEP 2:CLS :GOTO 2030 |
2060 | CLS :ON W GOSUB 2140 ,2180 ,2210 |
2070 | IF W=3 AND O=0 RETURN |
2080 | XT=XM-R:YT=YM:GOSUB 4600 :IF F7=0 RETURN |
2090 | XT=XM+R:GOSUB 4600 :IF F7=0 RETURN |
2100 | XT=XM:YT=YM+R:GOSUB 4600 :IF F7=0 RETURN |
2110 | YT=YM-R:GOSUB 4600 :IF F7=0 RETURN |
2120 | GOSUB 3860 :X=XM/S:Y=YM/S |
2130 | RETURN |
2140 | GOSUB 4340 |
2150 | INPUT "r = ";R |
2160 | CLS :IF R=0 OR R>U/2 OR R>V/2 BEEP 2:GOTO 2150 |
2170 | R=R*S:RETURN |
2180 | GOSUB 4340 :PRINT "Punkt der Kreislinie:":GOSUB 4110 |
2190 | GOSUB 4410 |
2200 | RETURN |
2210 | PRINT "Punkte der Kreislinie:":GOSUB 4110 :GOSUB 4180 :GOSUB 4260 |
2220 | GOSUB 4800 |
2230 | RETURN |
2240 | PRINT "Koordinateneingabe":IF F5=0 PAUSE "polar":F5=1:RETURN |
2250 | IF F5 PAUSE "rechtwinklig":F5=0:RETURN |
2260 | PRINT "Texteingabe:":GOSUB 4420 :X1=XA:Y1=YA |
2270 | C4=0:PRINT "0 = Richtung >":PRINT "1 = Richtung v":PRINT "2 = Richtung < |
2280 | INPUT "3 = Richtung ^";C4 |
2290 | CLS :IF C4<0 OR C4>3 BEEP 2:GOTO 2270 |
2300 | C5=1:INPUT "Groessenfaktor: ";C5 |
2310 | CLS :C5=C5*2:IF C5<>INT C5 OR C5>63 OR C5<=0 BEEP 2:GOTO 2300 |
2320 | PRINT "Zeichenabstand:" |
2330 | W=0:PRINT "0 = Eing. in mm":PRINT "1 = Eing. als Faktor":INPUT W |
2340 | CLS :IF W GOTO 2370 |
2350 | C6=C5*6/S:PRINT " mm":CURSOR 0,0:INPUT C6 |
2360 | C6=C6*S:GOTO 2390 |
2370 | C6=1:PRINT " * Normalabstand":CURSOR 0,0:INPUT C6 |
2380 | C6=C5*6*C6 |
2390 | IF C6<=0 OR C6>999 BEEP 2:CLS :GOTO 2320 |
2400 | CLS :PRINT "Text (max. 80 Zeichen):":INPUT T$(0) |
2410 | J=LEN T$(0):POKE 12348,16 |
2420 | ON C4+1 GOSUB 2450 ,2460 ,2470 ,2480 |
2430 | IF F7=0 RETURN |
2440 | GOSUB 3910 :RETURN |
2450 | XT=XA+J*C6:YT=YA+C5*6:X=XT/S:Y=YA/S:GOSUB 4600 :RETURN |
2460 | YT=YA-J*C6:XT=XA+C5*6:X=XA/S:Y=YT/S:GOSUB 4600 :RETURN |
2470 | XT=XA-J*C6:YT=YA-C5*6:X=XT/S:Y=YA/S:GOSUB 4600 :RETURN |
2480 | YT=YA+J*C6:XT=XA-C5*6:X=XA/S:Y=YT/S:GOSUB 4600 :RETURN |
2490 | PRINT "Relative Koord.eing.:":IF F4 PAUSE "abgeschaltet":XR=0:YR=0:F4=0:RETURN |
2500 | XR=X:YR=Y:PRINT "Bezugspunkt:":IF F5 GOSUB 4620 :XR=XP:YR=YP:GOTO 2530 |
2510 | IF F8 GOSUB 4650 :XR=XC:YR=YC:GOTO 2540 |
2520 | INPUT "Xo = ";XR,"Yo = ";YR |
2530 | XR=XR*S:YR=YR*S |
2540 | F7=0:F4=1:X=XR/S:Y=YR/S |
2550 | RETURN |
2560 | PRINT "Schraffur fuer Rechteck und Kreis(-sektor)":C3=0:INPUT "(1-10) ";C3 |
2570 | CLS :IF C3<0 OR C3>10 BEEP 2:GOTO 2560 |
2580 | GOSUB 3930 :F7=1:RETURN |
2590 | F7=0:IF F1=0 BEEP 2:RETURN |
2600 | IF F9 PAUSE "Speichern mit Abfrage":F9=0:RETURN |
2610 | PAUSE "automatische Speicherung":F9=1:RETURN |
2630 | W=1:PRINT "","1 = Bogen":PRINT "","2 = Sektor":PRINT "","3 = Kreis":INPUT W |
2640 | CLS :IF W<0 OR W>3 OR W<>INT W BEEP 2:GOTO 2630 |
2650 | IF W=3 GOTO 2030 |
2660 | F6=W-1 |
2670 | IF F6=0 PRINT "Bogen:":CURSOR 12,0 |
2680 | IF F6 PRINT "Sektor:":CURSOR 12,0 |
2690 | W=1:PRINT "1 = ellipt.":PRINT "","2 = kreisf.":CURSOR 0,3:INPUT W |
2700 | IF W<>1 AND W<>2 BEEP 2:GOTO 2670 |
2710 | CLS :ON W GOTO 3050 ,2720 |
2720 | K1$=" ":PRINT "kreisfoermiger "; |
2730 | IF F6 PRINT "Sektor:" |
2740 | IF F6=0 PRINT "Bogen:" |
2750 | PRINT K1$;"1 = M,r,<a,<e":PRINT K1$;"2 = M,Pa,<ae":PRINT K1$;"3 = Pa,Pe,Px" |
2760 | W=1:CURSOR 0,3:INPUT W |
2770 | CLS :IF W<1 OR W>3 OR W<>INT W BEEP 2:GOTO 2720 |
2780 | E=1:T=1:ON W GOSUB 2870 ,2960 ,3010 :IF W=3 AND O=0 RETURN |
2790 | IF F6 LET XT=XM:YT=YM:GOSUB 4600 :IF F7=0 RETURN |
2800 | XT=XM+R*COS A:YT=YM+R*SIN A:GOSUB 4600 :IF F7=0 RETURN |
2810 | XT=XM+R*COS B:YT=YM+R*SIN B:GOSUB 4600 :IF F7=0 RETURN |
2820 | IF A<0 AND B>0 LET XT=XM+R:YT=YM:GOSUB 4600 :IF F7=0 RETURN |
2830 | IF A<90 AND B>90 LET XT=XM:YT=YM+R:GOSUB 4600 :IF F7=0 RETURN |
2840 | IF A<180 AND B>180 LET XT=XM-R:YT=YM:GOSUB 4600 :IF F7=0 RETURN |
2850 | IF A<270 AND B>270 LET XT=XM:YT=YM-R:GOSUB 4600 :IF F7=0 RETURN |
2860 | GOTO 3230 |
2870 | INPUT "r = ";R |
2880 | R=R*S |
2890 | IF R<=0 BEEP 2:CLS :GOTO 2870 |
2900 | GOSUB 4340 |
2910 | A=0:B=90:INPUT "Anfangswinkel: ";A |
2920 | CLS :IF ABS A>360 BEEP 2:GOTO 2910 |
2930 | INPUT "Endwinkel: ";B |
2940 | CLS :IF ABS B>360 BEEP 2:GOTO 2930 |
2950 | RETURN |
2960 | GOSUB 4340 :GOSUB 4420 |
2970 | Z=90:INPUT "Oeffnungswinkel: ";Z |
2980 | CLS :IF ABS Z>360 GOTO 2970 |
2990 | X1=XA:Y1=YA:GOSUB 4410 |
3000 | B=A+Z:RETURN |
3010 | GOSUB 4420 :GOSUB 4510 :PRINT "Punkt der Kreislinie:":GOSUB 4110 |
3020 | X2=XA:Y2=YA:X3=XE:Y3=YE:GOSUB 4800 |
3030 | GOSUB 4480 :GOSUB 4570 |
3040 | RETURN |
3050 | K1$=" ":PRINT "elliptischer "; |
3060 | IF F6 PRINT "Sektor:" |
3070 | IF F6=0 PRINT "Bogen:" |
3080 | W=1:PRINT K1$;"1 = M,a,b,<a,<e":PRINT K1$;"2 = M,Pa,Pe":PRINT K1$;"3 = F1,F2,Pa,<ae" |
3090 | CURSOR 0,3:INPUT W |
3100 | CLS :IF W<>INT W OR W<0 OR W>3 BEEP 2::GOTO 3050 |
3110 | T=1:ON W GOSUB 3240 ,3250 ,3280 :E=H/G:R=G |
3120 | IF A/90=INT (A/90) GOTO 3140 |
3130 | A=ATN (TAN A/E)+180*(ABS A>90) |
3140 | IF B/90=INT (B/90) GOTO 3160 |
3150 | B=ATN (TAN B/E)+180*(ABS B>90) |
3160 | IF F6 LET XT=XM:YT=YM:GOSUB 4600 :IF F7=0 RETURN |
3170 | XT=XM+G*COS A:YT=YM+H*SIN A:GOSUB 4600 :IF F7=0 RETURN |
3180 | XT=XM+G*COS B:YT=YM+H*SIN B:GOSUB 4600 :IF F7=0 RETURN |
3190 | IF A<0 AND B>0 LET XT=XM+G:YT=YM:GOSUB 4600 :IF F7=0 RETURN |
3200 | IF A<90 AND B>90 LET XT=XM:YT=YM+H:GOSUB 4600 :IF F7=0 RETURN |
3210 | IF A<180 AND B>180 LET XT=XM-G:YT=YM:GOSUB 4600 :IF F7=0 RETURN |
3220 | IF A<270 AND B>270 LET XT=XM:YT=YM-H:GOSUB 4600 :IF F7=0 RETURN |
3230 | X=XM/S:Y=YM/S:GOSUB 3860 :RETURN |
3240 | GOSUB 2900 :GOSUB 820 :RETURN |
3250 | GOSUB 4340 :GOSUB 4420 :GOSUB 4510 |
3260 | X1=XA:Y1=YA:X2=XE:Y2=YE |
3270 | GOSUB 980 :RETURN |
3280 | PRINT "Brennpunkte:":GOSUB 4110 :GOSUB 4180 |
3290 | IF X1<>X2 AND Y1<>Y2 BEEP 2:PAUSE "Achsensymmetrie !":CLS :GOTO 3280 |
3300 | GOSUB 4420 :X3=XA:Y3=YA |
3310 | Z=90:INPUT "Oeffnungswinkel: ";Z |
3320 | CLS :IF ABS Z>360 GOTO 3310 |
3330 | B=A+Z |
3340 | GOTO 880 |
3360 | W=1:PRINT "gedrehte","1 = M,a,b,<":PRINT "Ellipse :","2 = M,S1,S2" |
3370 | PRINT "","3 = F1,F2,Px":CURSOR 0,3:INPUT W |
3380 | CLS :IF W<>INT W OR W<0 OR W>3 BEEP 2:GOTO 3360 |
3390 | ON W GOSUB 3420 ,3440 ,3490 |
3400 | GOSUB 3940 :F7=1 |
3410 | RETURN |
3420 | Z=45:GOSUB 810 :CLS :INPUT "Drehwinkel: phi = ";Z |
3430 | RETURN |
3440 | GOSUB 1070 :GOSUB 4340 |
3450 | G=SQR((X2-XM)^2+(Y2-YM)^2):GOSUB 4410 :H=R |
3460 | IF X2=XM LET Z=90*SGN (Y2-YM):GOTO 3480 |
3470 | Z=ATN ((Y2-YM)/(X2-XM)) |
3480 | RETURN |
3490 | PRINT "Brennpunkte:":GOSUB 4110 :GOSUB 4180 |
3500 | PRINT "Punkt der Ellipsenlinie:":GOSUB 4260 |
3510 | XM=(X1+X2)/2:YM=(Y1+Y2)/2 |
3520 | GOSUB 920 |
3530 | IF X2=X1 LET Z=90*SGN (Y2-Y1):GOTO 3550 |
3540 | Z=ATN ((Y2-Y1)/(X2-X1)) |
3550 | RETURN |
3560 | PRINT "Zeichnen mit Cursor:":I=0:ERASE C:DIM C(1,40) |
3570 | T=10/S:INPUT "Schrittweite : ";T |
3580 | T=T*S:K=30:INPUT "Winkelschritt: ";K |
3590 | CLS :GOSUB 4420 :INPUT "Anfangswinkel: ";W0 |
3600 | CLS :XT=XA:YT=YA:GLCURSOR (XA,YA):USING "####":C(0,0)=XA:C(1,0)=YA |
3610 | CURSOR 0,0:PRINT "X =";MDF (XT/S);" Y =";MDF (YT/S):PRINT "Richtung Grad":CURSOR 8,1 |
3620 | PRINT MDF W0 |
3630 | W=ASC INKEY$ :IF W=0 GOTO 3630 |
3640 | IF I=0 AND W=4 LET I=1 |
3650 | IF W=4 GOTO 3710 |
3660 | IF W=14 LET W0=W0-K:I=I+1:GOTO 3700 |
3670 | IF W=15 LET W0=W0+K:I=I+1:GOTO 3700 |
3680 | IF W=13 CLS :X=XT/S:Y=YT/S:F7=1:RETURN |
3690 | GOTO 3630 |
3700 | IF ABS W0>360 LET W0=W0-360*SGN W0 |
3710 | XT=XT+T*COS W0:YT=YT+T*SIN W0:GOSUB 4600 |
3720 | IF F7=0 AND I=1 RETURN |
3730 | IF F7=0 CLS :X=(XT-T*COS W0)/S:Y=(YT-T*SIN W0)/S:F7=1:I=I-1:RETURN |
3740 | LLINE -(XT,YT),C2,C1:C(0,I)=XT:C(1,I)=YT |
3750 | IF I=40 LET X=XT/S:Y=YT/S:RETURN |
3760 | GOTO 3610 |
3770 | PRINT "Bruchlinie:":PRINT "von "; |
3780 | GOSUB 4110 :PRINT "nach "; |
3790 | GOSUB 4180 |
3800 | T=5/S:INPUT "Schrittweite: ";T |
3810 | T=T*S |
3820 | K=90:INPUT "Streuwinkel : ";K |
3830 | CLS :K=ABS K:IF K>100 BEEP 2:GOTO 3820 |
3840 | GOSUB 4020 :F7=1:X=X2/S:Y=Y2/S |
3850 | RETURN |
3860 | CIRCLE (XM,YM),R,C1,A,B,E,T,F6:RETURN |
3870 | COLOR C1,7:RETURN |
3880 | LLINE (X1,Y1)-(X2,Y2),C2,C1:RETURN |
3890 | LLINE (X4,Y4)-(X1,Y1)-(X3,Y3)-(X2,Y2)-(X4,Y4),C2,C1:RETURN |
3900 | LLINE (X1,Y1)-(X2,Y2),C2,C1,B:BEEP 1,1,1:RETURN |
3910 | GLCURSOR (X1,Y1):CROTATE C4:CSIZE C5:LPRINT CHR$ 27+"c"+STR$ C6 |
3920 | LPRINT "P";T$(0):RETURN |
3930 | PAINT C3,C1:RETURN |
3940 | XT=G*COS Z+XM:YT=G*SIN Z+YM:GOSUB 4600 :IF F7=0 COLOR 7,7 |
3950 | GLCURSOR (XT,YT) |
3960 | FOR I=0 TO 360 STEP 10 |
3970 | XT=XM+G*COS I*COS Z-H*SIN I*SIN Z:YT=YM+H*SIN I*COS Z+G*COS I*SIN Z:GOSUB 4600 |
3980 | IF F7 LLINE -(XT,YT),C2:COLOR C1,7 |
3990 | IF F7=0 CLS :COLOR 7,7 |
4000 | NEXT I |
4010 | COLOR C1,7:RETURN |
4020 | XT=X1:YT=Y1:GLCURSOR (XT,YT):RANDOM |
4030 | R0=SQR((XT-X2)^2+(YT-Y2)^2) |
4040 | IF R0<=T LLINE -(X2,Y2),C2,C1:RETURN |
4050 | IF XT=X2 LET W0=90*SGN (Y2<YT):GOTO 4070 |
4060 | W0=ATN ((Y2-YT)/(X2-XT))+180*(X2<XT) |
4070 | W0=W0+(RND (K*2+1)-K-1):XT=XT+T*COS W0:YT=YT+T*SIN W0 |
4080 | GOSUB 4600 :CLS |
4090 | IF F7 LLINE -(XT,YT),C2,C1 |
4100 | GOTO 4030 |
4110 | X1=X-XR/S:Y1=Y-YR/S:PRINT "Punkt 1 :" |
4120 | IF F5 GOSUB 4620 :X1=XP:Y1=YP:GOTO 4150 |
4130 | IF F8 GOSUB 4650 :X1=XC:Y1=YC:GOTO 4170 |
4140 | INPUT "X1 = ";X1,"Y1 = ";Y1 |
4150 | X1=XR+X1*S:Y1=YR+Y1*S |
4160 | CLS :XT=X1:YT=Y1:GOSUB 4600 :IF F7=0GOTO 4110 |
4170 | RETURN |
4180 | X2=X-XR/S:Y2=Y-YR/S:PRINT "Punkt 2 :" |
4190 | IF F5 GOSUB 4620 :X2=XP:Y2=YP:GOTO 4220 |
4200 | IF F8 GOSUB 4650 :X2=XC:Y2=YC:GOTO 4250 |
4210 | INPUT "X2 = ";X2,"Y2 = ";Y2 |
4220 | X2=XR+X2*S:Y2=YR+Y2*S |
4230 | CLS :XT=X2:YT=Y2:GOSUB 4600 :IF F7=0GOTO 4180 |
4240 | IF X2=X1 AND Y2=Y1 BEEP 2:GOTO 4180 |
4250 | RETURN |
4260 | X3=X-XR/S:Y3=Y-YR/S:PRINT "Punkt 3 : |
4270 | IF F5 GOSUB 4620 :X3=XP:Y3=YP:GOTO 4300 |
4280 | IF F8 GOSUB 4650 :X3=XC:Y3=YC:GOTO 4330 |
4290 | INPUT "X3 = ";X3,"Y3 = ";Y3 |
4300 | X3=X3*S+XR:Y3=Y3*S+YR |
4310 | CLS :XT=X3:YT=Y3:GOSUB 4600 :IF F7=0GOTO 4260 |
4320 | IF X3=X2AND Y3=Y2OR (X3=X1AND Y3=Y1)BEEP 2:GOTO 4260 |
4330 | RETURN |
4340 | PRINT "Mittelpunkt: |
4350 | IF F5 GOSUB 4620 :XM=XP:YM=YP:GOTO 4380 |
4360 | IF F8 GOSUB 4650 :XM=XC:YM=YC:GOTO 4400 |
4370 | XM=X-XR/S:YM=Y-YR/S:INPUT "Xm = ";XM,"Ym = ";YM |
4380 | XM=XM*S+XR:YM=YM*S+YR |
4390 | IF F6=0 OR F6=2 LET XT=XM:YT=YM:GOSUB 4600 :IF F7=0 CLS :GOTO 4340 |
4400 | CLS :RETURN |
4410 | R=SQR((X1-XM)^2+(Y1-YM)^2):RETURN |
4420 | XA=X-XR/S:YA=Y-YR/S:PRINT "Anfangspunkt: |
4430 | IF F5 GOSUB 4620 :XA=XP:YA=YP:GOTO 4460 |
4440 | IF F8 GOSUB 4650 :XA=XC:YA=YC:GOTO 4480 |
4450 | INPUT "Xa = ";XA,"Ya = ";YA |
4460 | XA=XA*S+XR:YA=YA*S+YR |
4470 | XT=XA:YT=YA:GOSUB 4600 :IF F7=0CLS :GOTO 4420 |
4480 | IF XA=XM LET A=90*SGN (YA-YM):GOTO 4500 |
4490 | A=ATN ((YA-YM)/(XA-XM))+180*(XA<XM) |
4500 | CLS :RETURN |
4510 | XE=X-XR/S:YE=Y-YR/S:PRINT "Endpunkt: |
4520 | IF F5 GOSUB 4620 :XE=XP:YE=YP:GOTO 4550 |
4530 | IF F8 GOSUB 4650 :XE=XC:YE=YC:GOTO 4570 |
4540 | INPUT "Xe = ";XE,"Ye = ";YE |
4550 | XE=XE*S+XR:YE=YE*S+YR |
4560 | XT=XE:YT=YE:GOSUB 4600 :IF F7=0 CLS :GOTO 4510 |
4570 | IF XE=XM LET B=90*SGN (YE-YM):GOTO 4585 |
4580 | B=ATN ((YE-YM)/(XE-XM))+180*(XE<XM) |
4585 | IF A>B LET B=B+360 |
4590 | CLS :RETURN |
4600 | IF XT<0 OR XT>U OR YT<0 OR YT>V PAUSE "Bildrand ueberschritten!":F7=0:RETURN |
4610 | F7=1:RETURN |
4620 | R0=R/S:INPUT "Betrag: ";R0,"Winkel: ";W0 |
4630 | XP=R0*COS W0:YP=R0*SIN W0 |
4640 | RETURN |
4650 | GPRINT :XC=X*S:YC=Y*S |
4660 | CURSOR 0,3:GLCURSOR (XC,YC) |
4670 | PRINT "X = ","Y = ":CURSOR 4,3:PRINT LEFT$ (STR$ (XC/S),5):CURSOR 16,3:PRINT LEFT$(STR$ (YC/S),5) |
4680 | W=ASC INKEY$ :IF W=0 GOTO 4680 |
4690 | IF W=14 LET XC=XC+(10-9*(PEEK 12348=144))*S:GOTO 4730 |
4700 | IF W=15 LET XC=XC-(10-9*(PEEK 12348=144))*S:GOTO 4730 |
4710 | IF W=4 LET YC=YC+(10-9*(PEEK 12348=144))*S:GOTO 4750 |
4720 | IF W=5 LET YC=YC-(10-9*(PEEK 12348=144))*S:GOTO 4750 |
4730 | IF XC>U BEEP 2:XC=U:GOTO 4660 |
4740 | IF XC<0 BEEP 2:XC=0:GOTO 4660 |
4750 | IF YC>V BEEP 2:YC=V:GOTO 4660 |
4760 | IF YC<0 BEEP 2:YC=0:GOTO 4660 |
4770 | IF W=13 POKE 12348,16:X=XC/S:Y=YC/S:CLS :RETURN |
4780 | IF W=22 POKE 12348,(144-128*(PEEK 12348=144)) |
4790 | GOTO 4660 |
4800 | O=(Y3-Y1)*(X2-X1)-(Y2-Y1)*(X3-X1) |
4810 | IF O=0 LET M=37:GOSUB 5040 :GOSUB 3880 :RETURN |
4820 | K=X3^2-X1^2+Y3^2-Y1^2:J=X2^2-X1^2+Y2^2-Y1^2 |
4830 | YM=(K*(X2-X1)-J*(X3-X1))/2/O |
4840 | IF X1=X2 LET XM=(K-2*YM*(Y3-Y1))/2/(X3-X1):GOTO 4860 |
4850 | XM=(J-2*YM*(Y2-Y1))/2/(X2-X1) |
4860 | GOSUB 4410 |
4870 | RETURN |
4880 | WAIT :PRINT "CE-140F o.k. ? <ENTER>":WAIT 0:CLS |
4890 | PRINT "Filename:":INPUT N$:CLS :RETURN |
4900 | ON M-68 GOTO 4940 ,4950 ,4930 ,4930 ,4960 ,4970 ,4980 ,4970 ,4940 ,4930 ,4940 |
4910 | ON M-79 GOTO 4930 ,4930 ,4930 ,5000 ,4990 ,4940 ,5010 ,5030 ,5020 ,4930 ,4930 |
4920 | ON M-89 GOTO 4930 |
4930 | RETURN |
4940 | PRINT #2,M,XM,YM,R,A,B,E,T,F6,C1:RETURN |
4950 | PRINT #2,M,C1:RETURN |
4960 | PRINT #2,M,C2:RETURN |
4970 | PRINT #2,M,X1,Y1,X2,Y2,C1,C2:RETURN |
4980 | PRINT #2,M,X1,Y1,X2,Y2,X3,Y3,X4,Y4,C1,C2:RETURN |
4990 | PRINT #2,M,X1,Y1,C1,C4,C5,C6,T$(0):RETURN |
5000 | PRINT #2,M,C3,C1:RETURN |
5010 | PRINT #2,M,XM,YM,G,H,Z,C1,C2:RETURN |
5020 | PRINT #2,M,X1,Y1,X2,Y2,T,K,C1,C2:RETURN |
5030 | PRINT #2,M,I,C(*),C1,C2:RETURN |
5040 | P=X1:IF X2<P LET P=X2 |
5050 | IF X3<P LET P=X3 |
5060 | Q=Y1:IF Y2<Q LET Q=Y2 |
5070 | IF Y3<Q LET Q=Y3 |
5080 | X=X1:IF X2>X LET X=X2 |
5090 | IF X3>X LET X=X3 |
5100 | Y=Y1:IF Y2>Y LET Y=Y2 |
5110 | IF Y3>Y LET Y=Y3 |
5120 | X1=P:Y1=Q:X2=X:Y2=Y:X=X/S:Y=Y/S |
5130 | RETURN |
5140 | R=R*C7 |
5150 | XM=XM*C7+XR:YM=YM*C7+YR:RETURN |
5160 | X4=X4*C7+XR:Y4=Y4*C7+YR |
5170 | X3=X3*C7+XR:Y3=Y3*C7+YR |
5180 | X2=X2*C7+XR:Y2=Y2*C7+YR |
5190 | X1=X1*C7+XR:Y1=Y1*C7+YR:RETURN |
5200 | CLS :IF M=69 OR (M>73 AND M<78) OR M=79 OR (M>82 AND M<89) GOSUB 340 :F7=1 |
5210 | W$="J":INPUT "Speichern ? (J/N) ";W$ |
5220 | IF W$="J" GOSUB 4900 |
5230 | RETURN |
Dokumentation ansehen
Programmspeicher-Image laden
![]() |
Falls diese Seite ohne Navigationsleiste angezeigt wird, aktivieren Sie Javascript oder klicken Sie hier!