|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen RC3600/RC7000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen RC3600/RC7000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 13824 (0x3600) Types: TextFile Names: »B18«
└─⟦6dbcc9c03⟧ Bits:30000463 DOMUS disk image └─⟦this⟧ »/B18«
0010 ON ESC CHAIN "MENUE" 0020 REM RUMKRIG, FGK 28/12/80. 0030 REM EFTER COMPUTING TODAY, OKT 1980. 0040 DIM SVAR$(3),KOM$(1),SKIB$(1),PARTI$(4),TYPE$(18) 0050 DIM X(20),Y(20),G(20),E(20),B(20),SLAGM$(31,33) 0060 RANDOMIZE 0070 DEF FNR(Z5)=INT(Z5*RND(0)) 0080 REPEAT 0090 REPEAT 0100 PRINT CHR(12); "WOULD YOU LIKE TO SEE THE RULES (YES/NO) : "; 0110 INPUT SVAR$ 0120 IF SVAR$="Y" OR SVAR$="YES" OR SVAR$="Y" THEN SVAR$="YES" 0130 IF SVAR$="N" OR SVAR$="NO" OR SVAR$="N" THEN SVAR$="NO" 0140 UNTIL SVAR$="YES" OR SVAR$="NO" 0150 IF SVAR$="YES" THEN EXEC REGLER 0160 PRINT CHR(12) 0170 EXEC START 0180 EXEC DISPLAY 0190 REPEAT 0200 EXEC AFVIKLING 0210 UNTIL W9=0 OR B9=0 0220 REPEAT 0230 INPUT "NEW ROUND (YES/NO) : ",SVAR$ 0240 IF SVAR$="Y" OR SVAR$="Y" OR SVAR$="YES" THEN SVAR$="YES" 0250 IF SVAR$="N" OR SVAR$="N" OR SVAR$="NO" THEN SVAR$="NO" 0260 UNTIL SVAR$="YES" OR SVAR$="NO" 0270 UNTIL SVAR$="NO" 0280 END RUMKRIG 0290 REM //----------// 0300 PROC START 0310 TYPE$="ABCD><123WXYZ*#789"; TRUE=1; FALSE=0 0320 N=18; B9,W9=N/2; W=INT(RND(0)*2) 0330 SLAGM$(1)="000000000000000000000000000000000" 0340 FOR I=1 TO 31 0350 SLAGM$(I)=SLAGM$(1) 0360 NEXT I 0370 FOR I=1 TO INT(N/2) 0380 REPEAT 0390 X(I)=R(10-I+4); G(I)=1 0400 Y(I)=R(10-I+4); E(I)=500; B(I)=0 0410 UNTIL SLAGM$(X(I)+1,Y(I)+2 : 1)="0" 0420 EXEC SMARK(X(I),Y(I),1) 0430 IF I>4 THEN E(I)=300 0440 IF I>6 THEN B(I)=3 0450 NEXT I 0460 FOR I=INT(N/2)+1 TO N 0470 REPEAT 0480 X(I)=R(I/2)+22; G(I)=1 0490 Y(I)=R(I/1.5)+I; E(I)=500; B(I)=0 0500 UNTIL SLAGM$(X(I)+1,Y(I)+2 : 1)="0" 0510 EXEC SMARK(X(I),Y(I),1) 0520 IF I>INT(N/2)+4 THEN E(I)=300 0530 IF I>INT(N/2)+6 THEN B(I)=3 0540 NEXT I 0550 ENDPROC START 0560 REM //----------// 0570 PROC DISPLAY 0580 EXEC RAMME 0590 FOR I=1 TO N 0600 IF G(I)<>0 THEN EXEC TEGN(I,FALSE) 0610 NEXT I 0620 ENDPROC DISPLAY 0630 REM //----------// 0640 PROC AFVIKLING 0650 REPEAT 0660 IF W=1 THEN 0670 PARTI$="WHITE"; P=1; Q=INT(N/2) 0680 ELSE 0690 PARTI$="BLACK"; P=INT(N/2)+1; Q=N 0700 ENDIF 0710 EXEC CUR(1,20) 0720 PRINT CHR(31); PARTI$; 0730 INPUT "! WHICH SPACECRAFT : ",KOM$ 0740 B1=0 0750 FOR I=P TO Q 0760 IF TYPE$(I : 1)=KOM$ AND G(I)=1 THEN A=I; B1=1 0770 NEXT I 0780 UNTIL B1=1 0790 INPUT "COMMAND : ",KOM$ 0800 IF KOM$="M" OR KOM$="M" THEN EXEC FLYTTE 0810 IF KOM$="R" OR KOM$="R" THEN 0820 EXEC REGLER 0830 W=1-(W=1) 0840 EXEC DISPLAY 0850 ENDIF 0860 IF KOM$="L" OR KOM$="L" THEN EXEC LASER 0870 IF KOM$="S" OR KOM$="S" THEN EXEC STATUS 0880 IF KOM$="B" OR KOM$="B" THEN EXEC BOMBE 0890 IF W9=0 OR B9=0 THEN EXEC SEJR 0900 W=1-(W=1) 0910 ENDPROC AFVIKLING 0920 REM //----------// 0930 PROC FLYTTE 0940 FOR D1=1 TO 2 0950 IF D1=1 THEN 0960 EXEC FLYT1 0970 ELSE 0980 IF W9*B9<>0 THEN 0990 REPEAT 1000 EXEC CUR(1,20) 1010 PRINT CHR(31); 1020 INPUT "DO YOU WISH TO MOVE ANOTHER SPACECRAFT (YES/NO) : ",SVAR$ 1030 IF SVAR$="Y" OR SVAR$="Y" OR SVAR$="YES" THEN SVAR$="YES" 1040 IF SVAR$="N" OR SVAR$="N" OR SVAR$="NO" THEN SVAR$="NO" 1050 UNTIL SVAR$="YES" OR SVAR$="NO" 1060 IF SVAR$="YES" THEN EXEC FLYT2 1070 ENDIF 1080 ENDIF 1090 NEXT D1 1100 ENDPROC FLYTTE 1110 REM //----------// 1120 PROC FLYT1 1130 REPEAT 1140 VIDERE=FALSE 1150 EXEC CUR(1,21) 1160 INPUT "VECTORS (X Y) : ",S1,S2 1170 R1=SQR(S1*S1+S2*S2); B1=6 1180 IF A<P+6 THEN B1=10 1190 IF A<P+4 THEN B1=8 1200 IF R1>B1 THEN 1210 EXEC CUR(1,22) 1220 PRINT CHR(31); 1230 PRINT "OUT OF REACH!" 1240 ELSE 1250 IF B1=10 THEN B1=20 1260 IF E(A)-R1*(18-B1)<=0 THEN 1270 PRINT "THE ENERGY IS ONLY"; E(A); "TERA-JOULES!" 1280 ELSE 1290 VIDERE=TRUE 1300 ENDIF 1310 ENDIF 1320 UNTIL VIDERE=TRUE 1330 EXEC VISKUD(A) 1340 X(A)=X(A)+S1; Y(A)=Y(A)+S2 1350 IF X(A)<0 OR X(A)>30 OR Y(A)<0 OR Y(A)>30 THEN 1360 EXEC CUR(50,20) 1370 PRINT TYPE$(A : 1); " IS LOST IN OUTER SPACE!" 1380 EXEC PAUSE 1390 G(A)=0; W9=W9-(W=1); B9=B9-(W=0) 1400 ELSE 1410 EXEC TEGN(A,TRUE) 1420 E(A)=E(A)-R1*(21-B1) 1430 ENDIF 1440 ENDPROC FLYT1 1450 REM //----------// 1460 PROC FLYT2 1470 REPEAT 1480 B1=0 1490 EXEC CUR(1,20) 1500 PRINT CHR(31); 1510 INPUT "WHICH SPACECRAFT : ",SKIB$ 1520 FOR I=P TO Q 1530 IF TYPE$(I : 1)=SKIB$ AND G(I)=1 THEN B1=I; I=Q 1540 NEXT I 1550 UNTIL B1<>0 1560 IF B1=A THEN 1570 PRINT "THIS SPACECRAFT HAS JUST BEEN MOVED!" 1580 EXEC PAUSE 1590 ELSE 1600 A=B1 1610 EXEC FLYT1 1620 ENDIF 1630 ENDPROC FLYT2 1640 REM //----------// 1650 PROC LASER 1660 IF A<P+6 THEN 1670 REPEAT 1680 REPEAT 1690 EXEC CUR(1,20) 1700 PRINT CHR(31); 1710 C=0 1720 INPUT "WHICH SPACECRAFT IS THE TARGET : ",SKIB$ 1730 FOR I=1 TO N 1740 IF TYPE$(I : 1)=SKIB$ AND G(I)=1 THEN C=I; I=N 1750 NEXT I 1760 UNTIL C>0 1770 UNTIL G(C)<>0 1780 R1=SQR((X(A)-X(C))*(X(A)-X(C))+(Y(A)-Y(C))*(Y(A)-Y(C))) 1790 IF R1>12 THEN 1800 PRINT "OUT OF REACH!" 1810 ELSE 1820 PRINT "DISTANCE"; R1; ". "; 1830 INPUT "LASER-ENERGY : ",P8 1840 IF E(A)-P8<0 THEN 1850 PRINT "THE AVAILABLE ENERGY IS ONLY"; E(A); "TERA-JOULES!" 1860 ELSE 1870 EXEC LASERRESULTAT 1880 ENDIF 1890 ENDIF 1900 ELSE 1910 PRINT "NO LASER ON FIGHTERS!" 1920 ENDIF 1930 EXEC PAUSE 1940 ENDPROC LASER 1950 REM //----------// 1960 PROC LASERRESULTAT 1970 P7=(P8/((R1*.7)+.05))*(200/(E(C)+1)) 1980 E(A)=E(A)-P8; FTAB=TRUE 1990 IF R(P7)<17 THEN 2000 FTAB=FALSE 2010 PRINT "LASERBEAM DEFLECTED!" 2020 L=R(5*P8/((R1*.8)+.05))+INT(100/((R1*.5)+1)) 2030 PRINT "ENERGYLOSS FOR THE TARGET:"; L; "TERAJOULES!" 2040 E(C)=E(C)-L 2050 IF E(C)<=0 THEN FTAB=TRUE 2060 ENDIF 2070 IF FTAB=TRUE THEN EXEC TAB(C) 2080 ENDPROC LASERRESULTAT 2090 REM //----------// 2100 PROC STATUS 2110 PRINT CHR(12) 2120 PRINT " "; PARTI$; " FLEET STATUS." 2130 PRINT " "; "_______________________" 2140 PRINT 2150 PRINT "SPACECRAFT","POSITION","ENERGY","BOMBS" 2160 PRINT "__________","________","______","_____" 2170 PRINT 2180 FOR I=P TO Q 2190 IF I=P THEN PRINT "BATTLESHIP" 2200 IF I=P+4 THEN PRINT "CRUISER" 2210 IF I=P+6 THEN PRINT "FIGHTER" 2220 IF G(I)>0 THEN 2230 PRINT TYPE$(I : 1),X(I); Y(I),E(I),B(I) 2240 ELSE 2250 PRINT TYPE$(I : 1); " DESTROYED!" 2260 ENDIF 2270 NEXT I 2280 PRINT 2290 PRINT 2300 EXEC PAUSE 2310 IF W9<>0 AND B9<>0 THEN 2320 EXEC DISPLAY 2330 ENDIF 2340 ENDPROC STATUS 2350 REM //----------// 2360 PROC BOMBE 2370 IF B(A)>0 THEN 2380 EXEC CUR(1,20) 2390 PRINT CHR(31); 2400 INPUT "TARGET AREA (X Y) : ",S1,S2 2410 R1=SQR((X(A)-S1)*(X(A)-S1)+(Y(A)-S2)*(Y(A)-S2)) 2420 IF R1=0 THEN R1=1E-10 2430 S1=S1-X(A); S2=S2-Y(A) 2440 PRINT "ESTIMATED TIME TILL THE TARGET IS"; R1/2; "SEK." 2450 INPUT "TYPE FIRE TO FIRE THE BOMB : ",KOM$ 2460 IF KOM$="F" OR KOM$="F" THEN EXEC BFLUGT 2470 ELSE 2480 PRINT "NO BOMBS ON THE SPACECRAFT!" 2490 EXEC PAUSE 2500 ENDIF 2510 ENDPROC BOMBE 2520 REM //----------// 2530 PROC BFLUGT 2540 PRINT "TYPE D-KEY, TO DETONATE THE BOMB!" 2550 I=1 2560 REPEAT 2570 I=I+1 2580 IN 16,TAST 2590 UNTIL TAST=ORD("D") OR TAST=ORD("D") 2600 R2=I/43 2610 S1=INT(S1*(R2/R1)); S2=INT(S2*(R2/R1)) 2620 S1=S1+X(A); S2=S2+Y(A); B(A)=B(A)-1 2630 EXEC CUR(1,21) 2640 PRINT CHR(31); 2650 PRINT "THE CENTER OF THE EXPLOSION IS :"; S1; S2; CHR(7) 2660 F=0 2670 FOR I=1 TO N 2680 IF G(I)<>0 THEN 2690 B1=SQR((X(I)-S1)*(X(I)-S1)+(Y(I)-S2)*(Y(I)-S2)) 2700 IF B1<=2.25 THEN 2710 F=1 2720 IF R(10*B1)>4.5 THEN 2730 EXEC CUR(50,20) 2740 PRINT "SPACECRAFT "; TYPE$(I : 1); " IS IN FIRE!" 2750 L=R(225/(B1+.05)) 2760 EXEC CUR(50,21) 2770 PRINT "ENERGYLOSS ON"; L; "TERAJOULES!" 2780 EXEC PAUSE 2790 E(I)=E(I)-L 2800 IF E(I)<0 THEN EXEC TAB(I) 2810 ELSE 2820 EXEC TAB(I) 2830 ENDIF 2840 ENDIF 2850 ENDIF 2860 NEXT I 2870 IF F=0 THEN 2880 PRINT "NO SPACECRAFTS INSIDE THE REACH OF EXPLOSION !!!!" 2890 EXEC PAUSE 2900 ENDIF 2910 ENDPROC BFLUGT 2920 REM //----------// 2930 PROC TAB(UD) 2940 EXEC CUR(1,1) 2950 PRINT CHR(130) 2960 FOR TTID=1 TO 300 2970 NEXT TTID 2980 EXEC CUR(1,1) 2990 PRINT CHR(128) 3000 EXEC CUR(50,20) 3010 PRINT "SPACECRAFT "; TYPE$(UD : 1); " IS DESTROYED !" 3020 EXEC CUR(50,21) 3030 PRINT CHR(30) 3040 G(UD)=0 3050 EXEC VISKUD(UD) 3060 IF UD>INT(N/2) THEN B9=B9-1 3070 IF UD<=INT(N/2) THEN W9=W9-1 3080 EXEC PAUSE 3090 ENDPROC TAB 3100 REM //----------// 3110 PROC SEJR 3120 PRINT CHR(12) 3130 PARTI$="WHITE"; P=1; Q=INT(N/2) 3140 IF W9=0 THEN PARTI$="BLACK"; P=INT(N/2)+1; Q=N 3150 PRINT " VICTORY FOR "; PARTI$; "!" 3160 FOR I=1 TO 10 3170 PRINT CHR(7); 3180 NEXT I 3190 PRINT 3200 REPEAT 3210 INPUT "DO YOU WISH TO SEE YOUR STATUS (YES/NO) : ",SVAR$ 3220 IF SVAR$="Y" OR SVAR$="Y" OR SVAR$="YES" THEN SVAR$="YES" 3230 IF SVAR$="N" OR SVAR$="N" OR SVAR$="NO" THEN SVAR$="NO" 3240 UNTIL SVAR$="YES" OR SVAR$="NO" 3250 IF SVAR$="YES" THEN EXEC STATUS 3260 ENDPROC SEJR 3270 REM //----------// 3280 PROC PAUSE 3290 EXEC CUR(60,23) 3300 PRINT CHR(134); 3310 PRINT "PRESS RETURN "; CHR(128); 3320 INPUT SVAR$ 3330 EXEC CUR(60,24) 3340 PRINT CHR(128); " " 3350 ENDPROC PAUSE 3360 REM //-----------// 3370 PROC SMARK(Æ9,Ø9,MÆRKE) 3380 FOR PLADSER=1 TO 3 3390 SLAGM$(Æ9+1,Ø9+PLADSER : 1)=CHR(48+MÆRKE) 3400 NEXT PLADSER 3410 ENDPROC SMARK 3420 PROC RAMME 3430 PRINT CHR(12) 3440 EXEC CUR(1,1) 3450 PRINT " 0 2 4 6 8 10 12 14"; 3460 PRINT " 16 18 20 22 24 26 28 30" 3470 FOR J=0 TO 15 3480 EXEC CUR(1,J+2) 3490 PRINT 2*J 3500 EXEC CUR(65,J+2) 3510 PRINT 2*J 3520 NEXT J 3530 PRINT " 0 2 4 6 8 10 12 14"; 3540 PRINT " 16 18 20 22 24 26 28 30" 3550 ENDPROC RAMME 3560 REM //----------// 3570 PROC VISKUD(GL) 3580 EXEC CUR(X(GL)*2+5,Y(GL)/2+2) 3590 PRINT " " 3600 EXEC SMARK(X(GL),Y(GL),0) 3610 FOR PL=1 TO N 3620 IF G(PL)=1 THEN EXEC SMARK(X(PL),Y(PL),1) 3630 NEXT PL 3640 ENDPROC VISKUD 3650 REM //-----------// 3660 PROC TEGN(NY,SKTR) 3670 IF SKTR=TRUE THEN 3680 REPEAT 3690 IF SLAGM$(X(NY)+1,Y(NY)+2 : 1)="1" THEN 3700 IF X(NY)<15 THEN 3710 X(NY)=X(NY)+1 3720 ELSE 3730 X(NY)=X(NY)-1 3740 ENDIF 3750 ENDIF 3760 UNTIL SLAGM$(X(NY)+1,Y(NY)+2 : 1)="0" 3770 EXEC SMARK(X(NY),Y(NY),1) 3780 ENDIF 3790 EXEC CUR(X(NY)*2+5,Y(NY)/2+2) 3800 PRINT TYPE$(NY : 1) 3810 ENDPROC TEGN 3820 REM //----------// 3830 PROC CUR(Æ,Ø) 3840 PRINT CHR(6); CHR(Æ+95-(Æ>32)*64-(Æ>64)*64); CHR(Ø+95); 3850 ENDPROC CUR 3860 REM //----------// 3870 PROC REGLER 3880 PRINT CHR(12) 3890 PRINT "YOU ARE THE COMMANDER OF A FLEET OF SPACECRAFTS !" 3900 PRINT 3910 PRINT "POSSIBLE COMMANDS ARE : MOVE LASER STATUS BOMB RULES" 3920 PRINT " ---- ----- ------ ---- -----" 3930 PRINT "COMMANDS ARE GIVEN BY TYPING THE FIRST LETTER (M/L/S/B/R) " 3940 PRINT "YOU CAN MOVE 2 SPACECRAFTS OR ATTACK FROM 1 SPACECRAFT" 3950 PRINT 3960 PRINT "BLACK AND WHITE TAKE TURNS TO EITHER MOVE OR ATTACK." 3970 PRINT 3980 PRINT "SPACECRAFTS","MAX. MOVEMENT","ENERGY-STORAGE"," BOMBS ","LASER" 3990 PRINT "-----------","-------------","--------------"," ----- ","-----" 4000 PRINT "BATTLESHIP "," 8 UNITS ","500 TERA-JOULES"," NONE ","YES" 4010 PRINT "(A,B,C,D,W,X,Y,Z)" 4020 PRINT "KRYDSER ","10 UNITS ","300 TERA-JOULES"," NONE ","YES" 4030 PRINT "(<,>,*,#)" 4040 PRINT "FIGHTER "," 6 UNITS ","300 TERA-JOULES"," 3 PCS","NONE" 4050 PRINT "(1,2,3,7,8,9)" 4060 PRINT 4070 PRINT "ENERGY CONSUMPSTION FOR MOVEMENT IS: FIGHTER>BATTLESHIP>CRUISER" 4080 PRINT 4090 PRINT "REACH OF LASER IS 12 UNITS. REACH OF BOMBS IS UNLIMMITED !" 4100 EXEC PAUSE 4110 ENDPROC REGLER 4120 REM //----------// ▶03◀«nul»