|
DataMuseum.dkPresents historical artifacts from the history of: MIKADOS |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about MIKADOS Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 10112 (0x2780) Notes: Mikados TextFile, Mikados_K Names: »DEMO3«
└─⟦cb138137f⟧ Bits:30005281 Grafikpakke til COMAL & DMP-7 └─ ⟦this⟧ »DEMO3«
0100 REM *************************************************** 0110 REM *PROCEDURERNE I DENNE FIL ER DE NØDVENDIGE GRUND- * 0120 REM *ELEMENTER TIL STYRING AF PLOTTEREN, OG ER DEFOR * 0130 REM *DIREKTE AFHÆNGIG AF DEN ANVENDTE PLOTTER. * 0140 REM *PROCEDURERNE HER KAN KUN ANVENDES TIL STYRING AF * 0150 REM * * 0160 REM * HI PLØT * 0170 REM *MODEL DMP-3,DMP-4,DMP-6,DMP-7 * 0180 REM *FRA HOUSTON INSTRUMENT * 0190 REM * * 0200 REM *DDE 1982* 0210 REM *************************************************** 0220 REM LIN ANVENDES I PROCEDUREN LINKRV. 0230 REM XT,YT ANVENDES I PROCEDUREN LOGKRV. 0240 DIM LIN$(3),XT$(3),YT$(3) 0250 REM ROU AFRUNDER ET REELT TAL TIL HELTAL 0260 REM OG ANVENDES I PROCEDURERNE STIPREL OG AKSE. 0270 DEF ROU(Z)=INT(Z+0.5) 0280 PI=3.1415926 0290 PROC PLOTINIT 0300 REM ÅBNER PLOTTEREN OG LØFTER PENNEN, 0310 REM FLYTTER PENNEN TIL (0,0) = HOME. 0320 PRINT "I;: I;: U H" 0330 ENDPROC ;PLOTINIT. 0340 PROC PLOTSLUT 0350 REM AFBRYDER PLOTTEREN. 0360 PRINT "@" 0370 ENDPROC ;PLOTSLUT. 0380 PROC PLOTTEST 0390 REM KØRER PLOTTERENS SELVTEST PROGRAM. 0400 PRINT "T" 0410 ENDPROC ;PLOTTEST. 0420 PROC NULPKT 0430 REM FASTSÆTTER NULPUNKTET. 0440 PRINT "O" 0450 ENDPROC ;NULPKT. 0460 PROC PENNED 0470 REM SÆTTER PENNEN NED PÅ PAPIRET. 0480 PRINT "D" 0490 ENDPROC ;PENNED. 0500 PROC PENOP 0510 REM HÆVER PENNEN OP FRA PAPIRET. 0520 PRINT "U" 0530 ENDPROC ;PENOP. 0540 PROC FLYTABS(X,Y) 0550 REM FLYTTER PENNEN ABSOLUT TIL KOORDINATERNE (X,Y). 0560 X=INT(X);Y=INT(Y) 0570 PRINT "U A";X;",";Y 0580 ENDPROC ;FLYTABS. 0590 PROC TEGNABS(LINTYP,X,Y) 0600 REM TEGNER LINIE ABSOLUT TIL KOORDINATERNE (X,Y) 0610 REM MED DEN ANGIVNE LINIETYPE. 0620 X=INT(X);Y=INT(Y) 0630 PRINT "D A L"+CHR(48+LINTYP);X;",";Y 0640 ENDPROC ;TEGNABS. 0650 PROC FLYTREL(X,Y) 0660 REM FLYTTER PENNEN RELATIVT TIL KOORDINATERNE (X,Y). 0670 X=INT(X);Y=INT(Y) 0680 PRINT "U R";X;",";Y 0690 ENDPROC ;FLYTREL. 0700 PROC TEGNREL(X,Y) 0710 REM TEGNER LINIE RELATIVT TIL KOORDINATERNE (X,Y). 0720 X=INT(X);Y=INT(Y) 0730 PRINT "D R L0";X;",";Y 0740 ENDPROC ;FLYTREL. 0750 PROC FLYTPOL(VINKEL,LÆNGDE) 0760 REM FLYTTER PENNEN DEN ANGIVNE LÆNGDE OG MED DEN 0770 REM ANFGIVNE VINKEL I FORHOLD TIL VANDRET. 0780 X=INT(LÆNGDE*COS(VINKEL/180*PI)) 0790 Y=INT(LÆNGDE*SIN(VINKEL/180*PI)) 0800 PRINT "U R";X;",";Y 0810 ENDPROC ;FLYTPOL. 0820 PROC TEGNPOL(VINKEL,LÆNGDE) 0830 REM TEGNER EN LINIE MED DEN ANGIVNE LÆNGDE OG MED 0840 REM DE ANGIVNE VINKEL I FORHOLD TIL VANDRET. 0850 X=INT(LÆNGDE*COS(VINKEL/180*PI)) 0860 Y=INT(LÆNGDE*SIN(VINKEL/180*PI)) 0870 PRINT "D R";X;",";Y 0880 ENDPROC ;TEGNPOL. 0890 PROC SYMBOL(HØJDE,FIGUR) 0900 REM TEGNER ET AF FIGURERNE:PLUS(0),KORS(1),FIRKANT(2),OTTEKANT(3), 0910 REM TREKANT(4),TIMEGLAS(5), MED EN AF HØJDERNE 0,1,2,3,4,5. 0920 PRINT "M"+CHR(48+HØJDE)+CHR(48+FIGUR)+" U" 0930 ENDPROC ;SYMBOL. 0940 PROC TEKST(VINKEL,HØJDE,TEXT) 0950 REM UDSKRIVER EN TEKST MED DEN ANGIVNE HØJDE 0960 REM OG VINKEL I FORHOLD TIL VANDRET. 0970 V=1+((360-VINKEL) DIV 90) MOD 4 0980 PRINT "S"+CHR(48+V)+CHR(48+HØJDE);" ";TEXT$;"_" 0990 ENDPROC ;TEKST. 1000 PROC TAL(VINKEL,HØJDE,NR) 1010 REM UDSKRIVER ET TAL MED DEN ANGIVNE HØJDE OG VINKEL I 1020 REM FORHOLD TIL VANDRET. 1030 V=1+((360-VINKEL) DIV 90) MOD 4 1040 PRINT "S"+CHR(48+V)+CHR(48+HØJDE); 1050 IF NR<=-1 OR NR=0 OR 1<=NR THEN 1060 PRINT NR;"_" 1070 ELSE 1080 PRINT USING " #.## _":NR 1090 ENDIF 1100 ENDPROC ;TAL. 1440 PROC AKSE(VI,HØ,SK,SE,MIN,MAX,TYP,TEX) 1450 REM ********************************************************** 1460 REM *AKSE TEGNER EN AKSE MED VINKLEN VI I FORHOLD TIL VANDRET* 1470 REM *FRA MIN TIL MAX. SÆTTER TEKSTEN TEX MED BOGSTAVHØJDEN HØ* 1480 REM *PÅ AKSEN. SKALERINGEN BESTEMMES AF SK ANGIVET I ANTAL * 1490 REM *STEPS PR. ENHED. ANTALLET AF DELSTREGER PR. ENHED BE- * 1500 REM *STEMMES AF 1/SE. * 1510 REM ********************************************************** 1520 KX=COS(VI/180*PI);KY=SIN(VI/180*PI);HB=(18*2**(HØ-1)) 1530 IF SGN(MIN)<>SGN(MAX) THEN 1540 MI=MIN;MX=MAX 1550 ELSE 1560 IF SGN(MIN)=1 THEN 1570 MI=0;MX=MAX-MIN 1580 ELSE 1590 MX=0;MI=MIN-MAX 1600 ENDIF 1610 ENDIF 1620 XMAX=(MX*SK+100)*KX;YMAX=(MX*SK+100)*KY;XMIN=MI*SK*KX;YMIN=MI*SK*KY 1630 EXEC FLYTABS(XMIN,YMIN) 1640 EXEC TEGNABS(0,XMAX,YMAX) 1650 EXEC TEGNREL((KY*20),(-KX*20)) 1660 EXEC TEGNREL((KX-KY)*20,(KX+KY)*20) 1670 EXEC TEGNREL((-KX-KY)*20,(KX-KY)*20) 1680 EXEC TEGNREL((KY*20),(-KX*20)) 1690 IF 0<=KY AND KY<=1 THEN 1700 EXEC FLYTREL((KY*30),(-KX*30-HB*(SGN(KX-KY)+1)/2)) 1710 ELSE 1720 EXEC FLYTREL((-KY*30),(KX*30-HB*(SGN(-KX+KY)+1)/2)) 1730 ENDIF 1740 EXEC TEKST(0,HØ,TEX$) 1750 IF TYP$<>"" THEN 1760 SI=(MAX DIV SE)*SE 1770 FOR I=(SI+MI-MIN)*SK TO MI*SK STEP -SE*SK 1780 EXEC FLYTABS((KX*I-KY*10),(KY*I+KX*10)) 1790 EXEC TEGNREL((KY*20),(-KX*20)) 1800 IF 0<=KY AND KY<=1 THEN 1810 EXEC FLYTREL((KY*20),(-KX*20-HB*(SGN(KX)+1)/2)) 1820 ELSE 1830 EXEC FLYTREL((-KY)*40,(KX)*40+HB*(SGN(KX)-1)/2) 1840 ENDIF 1850 IF TYP$="LIN" THEN 1860 SII=SI 1870 ELSE 1880 SII=10**SI 1890 ENDIF 1900 IF ABS(SII)<=9999 THEN 1910 SJ=ROU(SII*100)/100 1920 ELSE 1930 IF 9999<ABS(SII) AND ABS(SII)<=999999 THEN 1940 SJ=ROU(SII) 1950 ELSE 1960 SJ=SII 1970 ENDIF 1980 ENDIF 1990 IF SJ<>0 THEN EXEC TAL(0,HØ,SJ) 2000 SI=SI-SE 2010 NEXT I 2020 ENDIF 2030 ENDPROC ;AKSE. 2040 PROC KOSYS(XI,XX,YI,YX,XC,YC,X0,Y0,XTP,YTP,AK,XTX,YTX) 2050 REM ****************************************************** 2060 REM *KOSYS FORETAGER EN AUTOSKALERING OG EN AUTONULPUNKTS* 2070 REM *BESTEMMELSE, HVIS XC OG/ELLER YC ER MINDRE END ELLER* 2080 REM *LIG MED NUL. SKALERINGEN XC,YC BESTEMMES DA AF XI,XX* 2090 REM *OG YI,YX. ELLERS ANVENDES DE UDEFRA ANGIVNE SKALE- * 2100 REM *RINGER XC,YC OG DE UDEFRA ANGIVNE NULPUNKTER XØ,YØ. * 2110 REM *DESUDEN VIL KOORD, HVIS AK ER LIG MED EEN, UDTEGNE * 2120 REM *KOORDINATAKSERNE, SÆTTE TEKSTERNE XTX OG YTX PÅ * 2130 REM *AKSERNE OG ENDELIG UDSKRIVE EN SKALA, SOM VIL VÆRE * 2140 REM *LINIÆR, HVIS XTP(YTP) ER LIG "LIN" OG EKSPONENTIAL, * 2150 REM *HVIS XTP(YTP) ER FORSKELLIG FRA "LIN". * 2160 REM ****************************************************** 2170 PROC XYDBST(XYC,XYD) 2180 XYD=INT(200/XYC) 2190 IF 200<=XYC AND XYC<400 THEN XYD=0.5 2200 IF 400<=XYC AND XYC<1800 THEN XYD=0.25 2210 IF 1800<=XYC THEN XYD=0.1 2220 ENDPROC ;XYDBST. 2230 SL=3500;SB=2300 2240 IF XC<=0 OR YC<=0 THEN 2250 XC,YC=INT(SB/(YX-YI)) 2260 IF XC=>SL/(XX-XI) THEN XC,YC=INT(SL/(XX-XI)) 2270 XO=-XI*XC;YO=-YI*YC;XF=-20;YF=90 2280 IF 0<=XO AND XO<=SL THEN 2290 XPO=XO 2300 ELSE 2310 IF XO<0 THEN 2320 XPO=0 2330 ELSE 2340 XPO=SL 2350 ENDIF 2360 ENDIF 2370 IF 0<=YO AND YO<=SB THEN 2380 YPO=YO 2390 ELSE 2400 IF YO<0 THEN 2410 YPO=0 2420 ELSE 2430 YPO=SB 2440 ENDIF 2450 ENDIF 2460 ELSE 2470 XC=XC*10;YC=YC*10;XPO,XO=X0*10;YPO,YO=Y0*10;XF=-420;YF=-160 2480 ENDIF 2490 IF AK=1 THEN 2500 EXEC FLYTABS((XPO+XF),(YPO+YF)) 2510 EXEC NULPKT 2520 EXEC XYDBST(XC,XD) 2530 EXEC AKSE(0,1,XC,XD,XI,XX,XTP$,XTX$) 2540 EXEC XYDBST(YC,YD) 2550 EXEC AKSE(90,1,YC,YD,YI,YX,YTP$,YTX$) 2560 ENDIF 2570 X0=XO-XPO;Y0=YO-YPO 2580 ENDPROC ;KOSYS. 2590 PROC LINKRV(XIN,XAX,XSKA,YSKA,XNUL,YNUL,LITY,AKSR,XTE,YTE) 2600 REM ********************************************************* 2610 REM *LINKRV PLOTTER EN KURVE AF FUNKTIONEN ANGIVET I PROCE- * 2620 REM *DUREN FUNK FRA XIN TIL XAX. HVIS XSKA OG/ELLER YSKA ER * 2630 REM *MINDRE END NUL FORETAGES EN AUTOMATISK BESTEMMELSE AF * 2640 REM *SKALERINGEN OG NULPUNKTET. ELLERS BENYTTES EN SKALERING* 2650 REM *BESTEMT AF XSKA,YSKA, OG ET NULPUNKT BESTEMT AF XNUL, * 2660 REM *YNUL. KURVEN PLOTTES MED DEN AF LITY VALGTE LINIETYPE. * 2670 REM *HVIS AKSR ER LIG MED EEN UDTEGNES DESUDEN KOORDINAT- * 2680 REM *AKSER MED TEKSTERNE XTE OG YTE PÅSAT, OG PLOTTERENS * 2690 REM *NULPUTNKT FASTSÆTTES. * 2700 REM ********************************************************* 2710 LIN$="LIN";XS=XSKA;YS=YSKA;XØ=XNUL;YØ=YNUL;YMI=9.2E18;YMX=-9.2E18 2720 FOR XK=XIN TO XAX STEP (XAX-XIN)/100 2730 EXEC FUNK(XK,FXK) 2740 IF FXK<=YMI THEN YMI=FXK 2750 IF FXK=>YMX THEN YMX=FXK 2760 NEXT XK 2770 EXEC KOSYS(XIN,XAX,YMI,YMX,XS,YS,XØ,YØ,LIN$,LIN$,AKSR,XTE$,YTE$) 2780 EXEC FUNK(XIN,FXK) 2790 EXEC FLYTABS((XIN*XS+XØ),(FXK*YS+YØ)) 2800 FOR XK=XIN TO XAX STEP 10/XS 2810 EXEC FUNK(XK,FXK) 2820 EXEC TEGNABS(LITY,(XK*XS+XØ),(FXK*YS+YØ)) 2830 NEXT XK 2840 EXEC PENOP 2850 ENDPROC ;LINKRV. 3000 DIM NAVN$(30),TYPE$(4),XTEKST$(10),YTEKST$(10) 3010 NAVN$="DDE PLOTTER DEMO-3" 3020 OUTPUT P1 3030 EXEC PLOTINIT 3040 EXEC FLYTABS(0,2400) 3050 EXEC TEKST(0,2,NAVN$) 3080 PROC FUNK(X,FX) 3090 FX=X*X*X+X*X-X+TT 3100 ENDPROC ;FUNK. 3110 XTEKST$="X";YTEKST$="F(X)" 3120 NAVN$="F(x) = x**3 + x**2 - x + 1" 3130 TT=1 3140 EXEC LINKRV(-2,1.5,0,0,0,0,0,1,XTEKST$,YTEKST$) 3150 EXEC FLYTREL(0,-100) 3160 EXEC TEGNREL(50,50) 3170 EXEC FLYTREL(15,15) 3180 EXEC TEKST(0,2,NAVN$) 3210 TT=1 3220 EXEC PLOTINIT 3230 EXEC LINKRV(-2,1.5,40,10,270,200,0,1,XTEKST$,YTEKST$) 3270 EXEC PLOTINIT 3280 FOR TT=-1 TO 2 STEP 1 3290 EXEC LINKRV(-2,1.5,20,20,300,75,(TT+2),(TT+2),XTEKST$,YTEKST$) 3300 NEXT TT 3310 NAVN$="DEMO-3 SLUT" 3320 EXEC PLOTINIT 3330 EXEC TEKST(0,1,NAVN$) 3340 EXEC PLOTSLUT 3350 STOP