DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦939f2c24c⟧

    Length: 10112 (0x2780)
    Notes: Mikados TextFile, Mikados_K
    Names: »DEMO4«

Derivation

└─⟦cb138137f⟧ Bits:30005281 Grafikpakke til COMAL & DMP-7
    └─ ⟦this⟧ »DEMO4« 

Text

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.
3320 PROC PARKRV(TST,TSL,DT,XSKA,YSKA,XNUL,YNUL,LITY,AKSR,XTE,YTE)
3330 REM *********************************************************
3340 REM *PARKRV FORETAGER EN AFBILDNING AF PARAMETERFREMSTILLIN-*
3350 REM *GEN ANGIVET I PROCEDUREN PARM MED PARAMETEREN T LØBENDE*
3360 REM *FRA TST TIL TSL MED ET STEP PÅ DT. HVIS XSKA OG/ELLER  *
3370 REM *YSKA ER MINDRE END NUL FORETAGES EN AUTOMATISK BESTEM- *
3380 REM *MELSE AF SKALERINGEN OG NULPUNKTET. ELLERS BENNYTTES EN*
3390 REM *SKALERING BESTEMT AF XSKA,YSKA, OG ET NULPUNKT BESTEMT *
3400 REM *AF XNUL,YNUL. KURVEN TEGNES MED DEN AF LITY VALGTE LI- *
3410 REM *NIETYPE. HVIS AKSR ER LIG MED EEN UDTEGNES DESUDEN     *
3420 REM *KOORDINATAKSER MED TEKSTERNE XTE,YTE PÅSAT, OG PLOTTE- *
3430 REM *RENS NULPUNKT FASTSÆTTES.                              *
3440 REM *********************************************************
3450 LIN$="LIN";XS=XSKA;YS=YSKA;XØ=XNUL;YØ=YNUL
3460 XMI,YMI=9.2E18;XMX,YMX=-9.2E18
3470 FOR TK=TST TO TSL STEP DT
3480 EXEC PARM(TK,XK,YK)
3490 IF XK<=XMI THEN XMI=XK
3500 IF XK=>XMX THEN XMX=XK
3510 IF YK<=YMI THEN YMI=YK
3520 IF YK=>YMX THEN YMX=YK
3530 NEXT TK
3540 EXEC KOSYS(XMI,XMX,YMI,YMX,XS,YS,XØ,YØ,LIN$,LIN$,AKSR,XTE$,YTE$)
3550 EXEC PARM(T,XK,YK)
3560 EXEC FLYTABS((XK*XS+XØ),(YK*YS+YØ))
3570 FOR TK=TST TO TSL STEP DT
3580 EXEC PARM(TK,XK,YK)
3590 EXEC TEGNABS(LITY,(XK*XS+XØ),(YK*YS+YØ))
3600 NEXT TK
3610 EXEC PENOP
3620 ENDPROC ;PARKRV.
4000 DIM NAVN$(20),XTEKST$(1),YTEKST$(1)
4010 OUTPUT P1
4020 EXEC PLOTINIT
4030 NAVN$="DDE PLOTTER DEMO-4"
4040 EXEC FLYTABS(0,2300)
4050 EXEC TEKST(0,4,NAVN$)
4060 PROC PARM(T,X,Y)
4070 X=5*R*COS(T/180*PI)
4080 Y=2*R*SIN(T/180*PI)
4090 ENDPROC ;PARM.
4100 XTEKST$="X";YTEKST$="Y"
4110 FOR R=5 TO 1 STEP -1
4120 EXEC PARKRV(0,360,4,3,3,110,130,0,(R-4),XTEKST$,YTEKST$)
4130 NEXT R
4140 STOP