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

⟦c97a001ee⟧

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

Derivation

└─⟦98735d749⟧ Bits:30007443 8" floppy ( TEXT ) vedr. matematik i skibsindustrien
    └─ ⟦this⟧ »OPMODUL« 

Text

0100 TRUE=1
0110 FALSE=0
0120 DIM SPLIT$(66),BL$(66),FIL$(20)
0130 DIM B$(133),SYM$(66),S$(1),SIDE$(22,66),LINE$(133),SV$(2),FIL1$(20)
0140 FOR I=1 TO 66
0150 BL$(I)=" "
0160 NEXT I
0170 FIL$="DDE:MODUL"
0180 REPEAT 
0190 INPUT "OPRETTELSE, ÆNDRING ELLER STOP O/Æ/S ",S$
0200 UNTIL S$="O" OR S$="Æ" OR S$="o" OR S$="æ" OR S$="S" OR S$="s"
0205 IF S$="S" OR S$="s" THEN STOP 
0210 IF S$="Æ" OR S$="æ" THEN 
0215 REPEAT 
0220 INPUT "MODULNR ",SV$
0221 EXEC CHECK1
0222 UNTIL OKAY=TRUE
0225 EXEC CONVERT(NR)
0230 FIL1$=FIL$+SV$
0240 OPEN FIL1$,W
0245 IF STATUS(FIL1$)<>0 THEN GO TO 0215
0250 FOR L=1 TO 18
0260 GET FIL1$:SIDE$(L)
0270 IF LEN(SIDE$(L))>0 THEN LAST=L
0280 NEXT L
0284 CLOSE FIL1$
0286 OPEN FIL1$,W
0290 EXEC SKRIV
0300 ELSE 
0310 I=0
0320 LAST=-1
0330 CLEAR 
0340 REPEAT 
0350 I=I+1
0360 CURSOR 2,I
0370 INPUT "           ",LINE$
0380 IF LEN(LINE$)=0 THEN LAST=I-1
0390 IF LAST=-1 THEN SIDE$(I)=LINE$+BL$
0400 UNTIL I=18 OR LAST<>-1
0405 IF LAST=-1 THEN LAST=18
0410 ENDIF 
0412 IF LAST=0 THEN STOP 
0415 I0=1
0420 REPEAT 
0430 CURSOR 1,23
0440 INPUT "T,TL,S,SL,R,E,F ",SV$
0445 EXEC CHECK
0450 IF OKAY=TRUE THEN 
0460 I=I0-1
0470 EXEC FINDPOS
0472 I0=I
0475 IF I0=>LAST THEN I0=1
0480 IF J>0 THEN 
0490 CASE SV$ OF 
0500 WHEN "TL","tl","Tl","tL"
0510 IF LAST<18 THEN 
0520 CURSOR 1,23
0530 PRINT BL$
0535 REPEAT 
0540 CURSOR 1,23
0550 INPUT "           ",LINE$
0555 UNTIL LEN(LINE$)>0
0560 I1=I
0570 EXEC INDSÆT
0580 ENDIF 
0590 WHEN "T","t"
0600 J1=J
0610 I1=I
0620 CURSOR 1,23
0630 PRINT BL$
0635 REPEAT 
0640 CURSOR 1,23
0650 INPUT "           ",LINE$
0655 UNTIL LEN(LINE$)>0
0660 EXEC INSERT
0670 WHEN "S","s"
0680 EXEC SLUTPOS
0690 EXEC DELETE
0700 WHEN "SL","sl","Sl","sL"
0710 I1=I
0720 EXEC SLET
0730 WHEN "R","r"
0740 EXEC SLUTPOS
0750 CURSOR 1,23
0760 PRINT BL$
0765 REPEAT 
0770 CURSOR 1,23
0780 INPUT "           ",LINE$
0785 UNTIL LEN(LINE$)>0
0790 IF I1=I THEN 
0800 IF LEN(LINE$)<=J-J1+1 THEN 
0810 SIDE$(I1,J1:LEN(LINE$))=LINE$
0820 J1=J1+LEN(LINE$)
0830 IF J1<=J THEN EXEC DELETE
0840 ELSE 
0850 SIDE$(I1,J1:J-J1+1)=LINE$(1:J-J1+1)
0860 LINE$=LINE$(J-J1+2,LEN(LINE$))
0870 J1=J+1
0880 EXEC INSERT
0890 ENDIF 
0900 ELSE 
0910 IF LEN(LINE$)<=66-J1 THEN 
0920 SIDE$(I1,J1:LEN(LINE$))=LINE$
0930 J1=J1+LEN(LINE$)
0932 IF J1>66 THEN 
0934 J1=1
0936 I1=I1+1
0938 ENDIF 
0940 EXEC DELETE
0950 ELSE 
0960 P=67
0965 IF J1>1 THEN LINE$=SIDE$(I1,1,J1-1)+LINE$
0970 EXEC FLÆK(LINE$)
0980 SIDE$(I1)=SPLIT$+BL$
0990 I1=I1+1
1000 J1=1
1010 IF I1=I THEN 
1020 IF LEN(LINE$)<=J-J1 THEN 
1030 IF LEN(LINE$)>0 THEN SIDE$(I1,J1:LEN(LINE$))=LINE$
1040 J1=J1+LEN(LINE$)
1050 EXEC DELETE
1060 ELSE 
1070 SIDE$(I1,J1:J-J1+1)=LINE$(1:J-J1+1)
1080 LINE$=LINE$(J-J1+2,LEN(LINE$))
1090 J1=J+1
1100 EXEC INSERT
1110 ENDIF 
1120 ELSE 
1130 SIDE$(I1)=LINE$
1140 J1=LEN(LINE$)+1
1150 EXEC DELETE
1160 ENDIF 
1170 ENDIF 
1180 ENDIF 
1190 WHEN "E","e"
1200 LINE$=SIDE$(I)
1210 CURSOR 1,23
1220 PRINT BL$
1225 REPEAT 
1230 CURSOR 1,23
1240 EDIT "           ",LINE$
1245 UNTIL LEN(LINE$)>0
1250 SIDE$(I)=LINE$
1260 ENDCASE 
1270 EXEC SKRIV
1280 ENDIF 
1290 ENDIF 
1300 UNTIL SV$="F" OR SV$="f"
1301 IF LAST>18 THEN 
1302 CURSOR 1,22
1305 PRINT "SIDEN ER FOR ";LAST-18;"LINIER FOR LANG"
1306 GO TO 0420
1307 ENDIF 
1310 IF (S$="O") OR (S$="o") THEN 
1315 REPEAT 
1320 INPUT "MODULNR ",SV$
1322 EXEC CHECK1
1325 UNTIL OKAY=TRUE
1327 EXEC CONVERT(NR)
1330 FIL1$=FIL$+SV$
1340 CREATE FIL1$,6
1345 IF STATUS(FIL1$)<>0 THEN GO TO 1315
1350 OPEN FIL1$,W
1360 ENDIF 
1370 FOR L=1 TO LAST
1380 PUT FIL1$:SIDE$(L)
1390 NEXT L
1392 FOR L=LAST+1 TO 22
1394 PUT FIL1$:BL$
1396 NEXT L
1400 CLOSE FIL1$
1405 GO TO 0170
1410 PROC FINDPOS
1420 REPEAT 
1430 I=I+1
1440 CURSOR 1,I
1450 INPUT "           ",LINE$
1460 UNTIL I=22 OR LEN(LINE$)>0
1470 J=LEN(LINE$)
1475 IF J>66 THEN J=66
1480 ENDPROC 
1490 PROC SKRIV
1500 CLEAR 
1510 FOR X=1 TO 22
1520 CURSOR 1,X
1530 PRINT "            ";SIDE$(X)
1540 NEXT X
1550 ENDPROC 
1560 PROC INDSÆT
1570 LAST=LAST+1
1575 IF I1>LAST THEN LAST=I1
1580 FOR L=LAST TO I1+1 STEP -1
1590 SIDE$(L)=SIDE$(L-1)
1600 NEXT L
1610 SIDE$(I1)=LINE$+BL$
1620 ENDPROC 
1630 PROC SLET
1640 FOR L=I1 TO LAST-1
1650 SIDE$(L)=SIDE$(L+1)
1660 NEXT L
1670 SIDE$(LAST)=""
1680 LAST=LAST-1
1690 ENDPROC 
1700 PROC SLUTPOS
1710 I1=I
1720 J1=J
1730 CURSOR J+10,I
1740 INPUT " ",LINE$
1750 IF LEN(LINE$)=0 THEN 
1752 EXEC FINDPOS
1754 ELSE 
1756 J=LEN(LINE$)+J1-1
1757 IF J>66 THEN J=66
1758 ENDIF 
1760 ENDPROC 
1770 PROC FLÆK(LIN)
1775 SPLIT$=""
1780 FOUND=FALSE
1781 Q=LEN(LIN$)
1782 WHILE Q>0
1783 IF LIN$(Q)=" " THEN 
1784 LIN$(Q)=""
1785 Q=Q-1
1786 ELSE 
1787 Q=0
1788 ENDIF 
1789 ENDWHILE 
1790 IF P>LEN(LIN$) THEN 
1795 FOUND=TRUE
1800 P=LEN(LIN$)+1
1810 ELSE 
1820 IF P<66 THEN P=P+1
1830 IF LIN$(P)<>" " THEN 
1850 REPEAT 
1860 P=P-1
1870 IF LIN$(P)=" " THEN FOUND=TRUE
1880 UNTIL FOUND=TRUE OR P=1
1885 ELSE 
1887 FOUND=TRUE
1890 ENDIF 
1900 ENDIF 
1901 IF FOUND THEN 
1902 IF P=1 THEN 
1903 SPLIT$=""
1904 IF P<LEN(LIN$) THEN LIN$=LIN$(P+1,LEN(LIN$))
1905 ELSE 
1920 SPLIT$=LIN$(1,P-1)
1930 IF P<LEN(LIN$) THEN 
1940 LIN$=LIN$(P+1,LEN(LIN$))
1990 ELSE 
2000 LIN$=""
2010 ENDIF 
2015 ENDIF 
2020 ENDIF 
2030 ENDPROC 
2040 PROC INSERT
2060 B$=""
2070 IF J1>1 THEN B$=SIDE$(I1,1,J1-1)
2080 B$=B$+LINE$
2085 IF J1<67 THEN B$=B$+SIDE$(I1,J1,66)
2090 P=67
2100 EXEC FLÆK(B$)
2110 SIDE$(I1)=SPLIT$+BL$
2120 I1=I1+1
2130 J1=1
2140 LINE$=B$
2250 WHILE SIDE$(I1,1)<>" " AND LEN(LINE$)>0 AND LEN(SIDE$(I1))>0
2260 B$=SIDE$(I1)
2270 IF LINE$(LEN(LINE$))="-" THEN 
2280 LINE$(LEN(LINE$))=""
2290 ELSE 
2300 IF LEN(LINE$)<66 THEN LINE$=LINE$+" "
2310 ENDIF 
2320 SIDE$(I1,1,LEN(LINE$))=LINE$
2330 P=67-LEN(LINE$)
2340 EXEC FLÆK(B$)
2350 IF LEN(SPLIT$)>0 THEN SIDE$(I1,LEN(LINE$)+1,66)=SPLIT$+BL$
2360 LINE$=B$
2370 I1=I1+1
2380 ENDWHILE 
2390 IF LEN(LINE$)>0 THEN 
2400 EXEC INDSÆT
2410 ENDIF 
2420 ENDPROC 
2500 PROC DELETE
2520 J=J+1
2540 IF J>66 THEN 
2560 J=1
2580 I=I+1
2600 ENDIF 
2620 P=67-J1
2640 IF I=LAST+1 THEN 
2650 IF J1>1 THEN 
2660 SIDE$(I1,J1,66)=BL$
2665 ELSE 
2670 I1=I1-1
2675 ENDIF 
2680 FOR Q=I1+1 TO LAST
2700 SIDE$(Q)=BL$
2720 NEXT Q
2740 LAST=I1
2760 ELSE 
2780 LINE$=SIDE$(I,J,66)
2800 EXEC FLÆK(LINE$)
2820 REPEAT 
2825 HYPHEN=0
2829 IF LEN(SPLIT$)>0 THEN 
2830 IF SPLIT$(LEN(SPLIT$))="-" THEN 
2831 HYPHEN=LEN(SPLIT$)+J1-1+100*I1
2832 SPLIT$(LEN(SPLIT$))=""
2834 ELSE 
2836 SPLIT$=SPLIT$+" "
2838 ENDIF 
2839 ENDIF 
2840 SIDE$(I1,J1,66)=SPLIT$+BL$
2860 IF J1+LEN(SPLIT$)<66 AND LEN(LINE$)=0 THEN 
2880 J1=J1+LEN(SPLIT$)
2900 P=67-J1
2920 IF I<22 THEN 
2940 IF SIDE$(I+1,1)<>" " THEN 
2960 LINE$=SIDE$(I+1)
2970 I=I+1
2980 EXEC FLÆK(LINE$)
2990 IF LEN(SPLIT$)>0 THEN 
3000 SIDE$(I1,J1,66)=SPLIT$+BL$
3001 IF LEN(LINE$)>0 THEN I=I-1
3002 SPLIT$=LINE$
3003 LINE$=""
3005 HYPHEN=0
3006 ELSE 
3007 SIDE$(I1+1)=LINE$
3008 LINE$=""
3009 I1=I1+1
3010 ENDIF 
3020 ELSE 
3040 LINE$=""
3050 SPLIT$=""
3060 ENDIF 
3080 ELSE 
3100 LINE$=""
3105 SPLIT$=""
3120 ENDIF 
3140 ELSE 
3141 B$=LINE$
3142 LINE$=SIDE$(I+1)
3143 SIDE$(I1+1)=B$
3144 J1=LEN(B$);P=67-J1
3145 EXEC FLÆK(LINE$)
3146 ENDIF 
3150 IF HYPHEN>0 THEN SIDE$(HYPHEN DIV 100,HYPHEN MOD 100)="-"
3160 J1=1
3170 J=1
3180 I1=I1+1
3200 I=I+1
3210 IF I>22 THEN I=22
3240 UNTIL (LEN(SPLIT$)=0 AND LEN(LINE$)=0) OR (J=1 AND SIDE$(I,1)=" ")
3242 J=I1
3245 WHILE J<I
3250 EXEC SLET
3252 J=J+1
3255 ENDWHILE 
3260 ENDIF 
4000 PROC CHECK1
4010 NR=0
4020 I=1
4030 IF LEN(SV$)>0 AND LEN(SV$)<3 THEN 
4040 OKAY=TRUE
4050 ELSE 
4060 OKAY=FALSE
4070 ENDIF 
4080 WHILE I<=LEN(SV$)
4090 IF SV$(I)<"0" OR SV$(I)>"9" THEN 
4100 OKAY=FALSE
4110 I=LEN(SV$)+1
4120 ELSE 
4130 NR=NR*10+ORD(SV$(I))-48
4140 I=I+1
4150 ENDIF 
4160 ENDWHILE 
4170 ENDPROC 
4180 PROC CONVERT(NO)
4190 SV$=CHR(NO DIV 10+48)+CHR(NO MOD 10+48)
4200 ENDPROC 
5000 ENDPROC 
6000 PROC CHECK
6010 OKAY=FALSE
6015 CURSOR 20,23
6020 CASE SV$ OF 
6030 WHEN "T","t"
6040 OKAY=TRUE
6050 PRINT "Tilføjelse"
6060 WHEN "TL","tl","Tl","tL"
6070 OKAY=TRUE
6080 PRINT "Tilføj linie"
6090 WHEN "s","S"
6100 OKAY=TRUE
6110 PRINT "Sletning"
6120 WHEN "SL","sl","Sl","sL"
6125 OKAY=TRUE
6130 PRINT "Slet linie"
6140 WHEN "R","r"
6150 OKAY=TRUE
6160 PRINT "Retning"
6170 WHEN "e","E"
6180 OKAY=TRUE
6190 PRINT "Editering"
6200 ENDCASE 
6210 ENDPROC