|
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: »OPMODUL«
└─⟦98735d749⟧ Bits:30007443 8" floppy ( TEXT ) vedr. matematik i skibsindustrien └─ ⟦this⟧ »OPMODUL«
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