home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 27
/
64er_Magazin_Sonderheft_27_19xx_Markt__Technik_de_Disk_2_of_2_Side_B.d64
/
plottomat
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
7KB
|
366 lines
900 rem *******************************
910 rem * *
920 rem * plottomat *
930 rem * *
940 rem * 1987 by stefan sablatnoeg *
950 rem * *
960 rem *******************************
970 :
980 :
990 :
1000 :
1010 rem
1020 rem titelausgabe
1030 rem
1040 :
1050 clr
1060 poke53280,15:poke53281,15:print"[144]"
1070 print"[147] plottomat"
1080 print" ---------"
1090 print" plotprogramm fuer ped"
1100 print" 5.9.-12.9.87"
1110 print" by stefan sablatnoeg"
1120 fori=1to2000:next
1130 :
1140 rem
1150 rem eingabe und deklaration
1160 rem einiger variablen
1170 rem
1180 :
1190 input"[147]wie viele objekte";ob
1200 dimn$(ob),p(ob),l(ob),a$(10,ob),b$(20),fo(ob+1)
1210 fori=1toob
1220 print"[147]name des "i". plotfiles";:inputn$(i)
1230 next
1240 fort=1toob
1250 print"[147]0 - schwarz 1 - blau 2 - gruen 3 - rot[144]"
1260 print"farbe des "t". objektes (0-3)";:inputfo(t)
1270 next
1280 print"[147]0 - schwarz 1 - blau 2 - gruen 3 - rot[144]"
1290 input"farbe der schrift (0-3)";fs
1300 print"[147]0 - schwarz 1 - blau 2 - gruen 3 - rot[144]"
1310 input"farbe des rahmens um die beschriftung";fr
1320 rem abfragen zum design
1330 print"[147]rahmen um grafik zeichnen ?"
1340 poke198,0:wait198,1:getg$:ifg$="j"thenra=1:goto1360
1350 ifg$<>"n"then1330
1360 print"[147]punktnummern einzeichnen ?"
1370 poke198,0:wait198,1:getg$:ifg$="j"thennu=1:goto1392
1380 ifg$<>"n"then1360
1392 print"[147]objektblock zeichnen ?"
1394 poke198,0:wait198,1:getg$:ifg$="j"thenbl=1:goto1460
1396 ifg$<>"n"then1392
1398 :
1400 rem
1410 rem eingaben abgeschlossen
1420 rem
1430 rem daten files lesen
1440 rem
1450 :
1460 print"[147]---> bitte legen sie die diskette mit"
1470 print" den/m plotfile(s) ein und machen"
1480 print" sie den plotter fertig.......taste"
1500 poke198,0:wait198,1:poke198,0
1510 open15,8,15
1520 print"[147]reading ";
1530 fork=1toob
1540 open1,8,2,n$(k)+",s,r"
1550 gosub4450
1560 ife<>0then1050
1570 input#1,p(k):input#1,l(k)
1580 gosub4450
1590 ife<>0then1050
1600 p(k)=p(k)+1:l(k)=l(k)+1
1610 p=p+p(k):l=l+l(k)
1620 close1
1630 next
1640 rem
1650 rem groesse bestimmt nun felder
1660 rem dimensionieren
1670 rem und daten einlesen
1680 rem
1690 dim x(p+1),y(p+1),n%(p+1),l1%(l+1),l2%(l+1)
1700 yi=999999:xi=999999
1710 il=1:ip=0:pa=0:fork=1toob
1720 open1,8,2,n$(k)+",s,r"
1730 gosub4450
1740 ife<>0then1050
1750 input#1,ph:input#1,lh
1760 gosub4450
1770 ife<>0then1050
1780 forj=0toph
1790 input#1,n%(ip),x,y
1800 gosub4450
1810 ife<>0then1050
1820 print".";
1830 ifn%(ip)=-1thenx=-1:y=-1:goto1860
1840 ifx<xithenxi=x
1850 ify<yithenyi=y
1860 x(ip)=x:y(ip)=y
1870 ip=ip+1
1880 nextj
1890 forj=0tolh
1900 input#1,p1,p2
1910 gosub4450
1920 ife<>0then1050
1930 ifp1=-1orp2=-1thenl1%(il)=p1:l2%(il)=p2:goto1960
1940 print".";
1950 l1%(il)=p1+pa:l2%(il)=p2+pa
1960 il=il+1
1970 nextj
1980 forj=0to10
1990 input#1,a$(j,k)
2000 gosub4450
2010 ife<>0then1050
2020 nextj
2030 close1
2040 pa=ip
2050 nextk
2060 close15
2070 :
2080 :
2090 rem
2100 rem ende des einlesens
2110 rem
2120 rem groesse des objekts optimieren
2130 rem
2140 :
2150 :
2160 print:print"[147]thinking "
2170 fori=0top
2180 ifx(i)=-1then2200
2190 x(i)=x(i)-xi:y(i)=y(i)-yi
2200 next
2210 fori=0top
2220 ifx(i)>xmthenxm=x(i)
2230 ify(i)>ymthenym=y(i)
2240 next
2250 tu=0
2260 ifxm>ym then2320
2270 h=xm:xm=ym:ym=h
2280 fori=0top
2290 h=x(i):x(i)=y(i):y(i)=h
2300 next
2310 tu=1
2320 f1=998/xm:f2=479/ym
2330 f=f1:iff2<f1thenf=f2
2340 fori=0top
2350 ifx(i)=-1then2380
2360 x(i)=int(x(i)*f):y(i)=int(y(i)*f):iftu=1thenx(i)=xm*f-x(i)
2370 h=x(i):x(i)=y(i):y(i)=h
2380 next
2390 iff=f2then2460
2400 add=(479-ym*f)/2
2410 fori=0top
2420 ifx(i)<>-1thenx(i)=x(i)+add
2430 next
2440 :
2450 :
2460 rem
2470 rem ende der anpassung
2480 rem
2490 rem plotten des objektes
2500 rem
2510 :
2520 :
2530 print:print"[147]plotting";
2540 open1,6,1:open2,6,2:open3,6,3:open4,6,4:open7,6
2550 print#3,1:print#7:print#4,0
2560 print#2,fo(1)
2570 rem
2580 fori=1tol
2590 ifl1%(i)=-1orl2%(i)=-1then2660
2600 ifi=1then2620
2610 if(l2%(i)=l2%(i-1))or((r=1)and(l2%(i)=l1%(i-1)))then3800
2620 r=0
2630 print#1,"m";x(l1%(i)),-y(l1%(i))
2640 print#1,"d";x(l2%(i)),-y(l2%(i))
2650 print".";
2660 lk=0:fort=1toob
2670 lk=lk+l(t)
2680 ifi=lkthenprint#2,fo(t+1)
2690 next
2700 next
2710 :
2720 :
2730 rem
2740 rem objekt geplottet
2750 rem
2760 rem punktnummern einzeichnen
2770 rem
2780 :
2790 :
2800 if nu=0then3080
2810 iftu=0then2920
2820 print#4,0:print#3,0:print#2,fs:fori=0top-1:xp=x(i):yp=-y(i)
2830 ifn%(i)=-1then2890
2840 ifyp<-xm*f+2thenyp=-xm*f+2
2850 ifyp>-10thenyp=-10
2860 nr$=str$(n%(i)):nr$=right$(nr$,len(nr$)-1)
2870 ifxp>455thenxp=479-6*len(nr$)
2880 print#1,"m";xp;yp:print#7,nr$;
2890 next:goto3080
2900 rem
2910 rem
2920 print#4,1:print#3,0:print#2,fs:fori=0top-1:xp=x(i):yp=-y(i)
2930 ifn%(i)=-1then3000
2940 ifyp<-xm*f+2thenyp=-xm*f+2
2950 ifyp>-10thenyp=-10
2960 nh$=str$(n%(i)):nh$=right$(nh$,len(nh$)-1)
2970 nr$="":forj=1tolen(nh$):nr$=mid$(nh$,j,1)+" "+nr$:next
2980 ifxp>431thenxp=479-6*len(nr$)
2990 print#1,"m";xp;yp:print#7,nr$;
3000 next
3010 :
3020 :
3030 rem
3040 rem rahmen wenn gewuenscht
3050 rem
3060 :
3070 :
3080 ifra<>1then3130
3090 print#2,fr
3100 print#1,"m";0;0:print#1,"d";0;-xm*f
3110 print#1,"d";479,-xm*f:print#1,"d";479;0
3120 print#1,"d";0;0
3130 print#1,"m";0;-xm*f
3140 :
3150 :
3160 rem
3170 rem objektblock auswaehlen und plotten
3180 rem
3190 :
3200 :
3210 ifbl=0thenprint#7:print#7:print#7:print#7:goto3640
3215 iftu=0then3900:rem objekt wurde nicht gedreht
3220 rem ab hier objektblock fuer gedrehtes objekt
3230 fork=1toob
3240 print#2,fs
3250 print#3,1
3260 print#7
3270 print#3,0
3280 print#7," augenpunkt : x :";a$(1,k)
3290 print#7," : y :";a$(3,k)
3300 print#7," : z :";a$(5,k)
3310 print#7," blickpunkt : x :";a$(2,k)
3320 print#7," : y :";a$(4,k)
3330 print#7," : z :";a$(6,k)
3340 print#7," zoomfaktor :";a$(8,k)
3350 print#7," blickwinkel :";a$(9,k)
3360 print#7," bildgroesse :";a$(7,k);
3370 print#3,3
3380 print#7:print#7," objekt:"
3390 print#2,fo(k)
3400 print#7," "left$(n$(k),9):print#7," "mid$(n$(k),10,6);
3410 print#2,fr
3420 print#1,"m";0;0:print#1,"d";0;330:print#1,"d";479;330
3430 print#1,"d";479;0:print#1,"d";0;0
3440 print#1,"m";0;300:print#1,"d";479;300
3450 print#1,"m";479;269:print#1,"d";0;269
3460 print#1,"m";0;259:print#1,"d";479;259
3470 print#1,"m";479;249:print#1,"d";0;249
3480 print#1,"m";0;239:print#1,"d";479;239
3490 print#1,"m";479;160:print#1,"d";0;160
3500 print#3,0
3510 fori=1to16:print#7:next
3520 rem
3530 nextk
3540 print#3,1:print#7:print#7:print#7:print#7:print#7
3550 :
3560 :
3570 rem
3580 rem ende des gedrehten objektblocks
3590 rem
3600 rem gleiches objekt nochmal ????
3610 rem
3620 :
3630 :
3640 print"[147]das selbe objekt"
3650 print"nochmal plotten ? (j/n)":poke198,0:wait198,1:getg$:ifg$="j"thenag=1
3660 ifg$<>"n"andg$<>"j"then3640
3670 close1:close2:close3:close4:close7
3680 ifag=1thenag=0:goto2530
3690 print"[147]ein anderes objekt"
3700 print"plotten ? (j/n)":poke198,0:wait198,1:getg$:ifg$="j"then1050
3710 ifg$<>"n"then3690
3720 end
3730 rem ********************
3740 rem *ende des programms*
3750 rem ********************
3760 rem
3770 :
3780 :
3790 rem linie durchziehen
3800 r=1
3810 print#1,"d";x(l1%(i)),-y(l1%(i))
3820 goto2660
3830 :
3840 :
3850 rem
3860 rem objektblock fuer nicht gedrehtes objekt
3870 rem
3880 :
3890 :
3900 fork=1toob
3910 print#2,fs
3920 print#4,1
3930 print#3,0
3940 rem
3950 print#7:print#7:print#7
3960 b$(1)="augenpunkt : x :"+a$(1,k)
3970 b$(7)="blickpunkt : x :"+a$(2,k)
3980 b$(3)=" : y :"+a$(3,k)
3990 b$(9)=" : y :"+a$(4,k)
4000 b$(5)=" : z :"+a$(5,k)
4010 b$(11)=" : z :"+a$(6,k)
4020 b$(17)="bildgroesse :"+a$(7,k)
4030 b$(13)="zoomfaktor :"+a$(8,k)
4040 b$(15)="blickwinkel :"+a$(9,k)
4050 fori=1to18
4060 iflen(b$(i))<30thenb$(i)=b$(i)+" ":goto4060
4070 next
4080 forj=1to30
4090 fori=18to1step-1
4100 print#7,mid$(b$(i),j,1);
4110 next
4120 print#7
4130 next
4140 print#2,fr
4150 print#1,"m";0;320
4160 print#1,"d";479;320:print#1,"d";479;0:print#1,"d";0;0:print#1,"d";0;320
4170 print#1,"m";16;320:print#1,"d";16;0
4180 print#1,"m";28;320:print#1,"d";28;0
4190 print#1,"m";40;320:print#1,"d";40;0
4200 print#1,"m";76;320:print#1,"d";76;0
4210 print#1,"m";112;320:print#1,"d";112;0
4220 print#1,"m";112;250:print#1,"d";479;250
4230 print#1,"m";0;250
4240 print#2,fs
4250 print#4,0
4260 print#3,3
4270 print#7," objekt:"
4280 print#2,fo(k)
4290 print#7," ";left$(n$(k),7):print#7," ";mid$(n$(k),8,7)
4300 rem
4310 print#3,0
4320 print#7
4330 print#3,1
4340 next
4350 print#7:print#7:print#7:print#7
4360 rem
4370 rem objektblock fuer nicht gedrehtes objekt ist fertig ->ruecksprung
4380 rem
4390 goto3640
4400 :
4410 :
4420 rem
4430 rem fehlerkanal der floppy
4440 rem
4450 input#15,e,e$,e1,e2
4460 ife=0thenreturn
4470 print"[147]disk fehler:"
4480 print"";e;e$;e1;e2"[146]"
4490 print"bitte problem beheben und nochmal anfangen -->taste"
4500 poke198,0:wait198,1:poke198,0
4510 return