|
|
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: 12800 (0x3200)
Types: TextFile
Names: »SMRU1«
└─⟦d3919da1e⟧ Bits:30001784 SG0004 Floppy
└─⟦this⟧ »/SMRU1«
«ff»
0001 DIM SVAR$(1),KOM$(1),SKIB$(1),PARTI$(4),TYPE$(18),X(20),Y(20),G(20),E(20),B(20),SLAGM$(31,33)
0002 RANDOMIZE
0003 DEF FNZ(Z)=INT(Z*RND(0)+1)
0004 INPUT "<12><6><110>&ØNSKES REGLERNE UDSKREVET ",SVAR$
0005 IF SVAR$="J" THEN EXEC REGLER
0006 EXEC START
0007 EXEC DISPLAY
0008 REPEAT
0009 EXEC AFVIKL
0010 UNTIL W9=0 OR B9=0
0011 END «so» RUMKRIG 3.3.81
0012 PROC START
0013 LET TYPE$="ABCD> <60>123WXYZ*#789"; N=18; B9=N/2; W9=N/2; W=INT(RND(0)*2); SLAGM$(1)="0000000000000000000000000000000"
0014 FOR I=1 TO 31
0015 LET SLAGM$(I)=SLAGM$(1)
0016 NEXT I
0017 FOR I=1 TO INT(N/2)
0018 REPEAT
0019 LET X(I)=R(14-I); G(I)=1; Y(I)=R(14-I); E(I)=500; B(I)=0
0020 UNTIL SLAGM$(X(I)+1,Y(I)+2)="0"
0021 LET Æ9=X(I); Ø9=Y(I); MÆRKE=1
0022 EXEC SMARK
0023 IF I>4 THEN LET E(I)=300
0024 IF I>6 THEN LET B(I)=3
0025 NEXT I
0026 FOR I=INT(N/2)+1 TO N
0027 REPEAT
0028 LET X(I)=R(I/1)+22; G(I)=1; Y(I)=R(I/1.5)+I; E(I)=500; B(I)=0
0029 UNTIL SLAGM$(X(I)+1,Y(I)+2)=""
0030 LET Æ9=X(I); Ø9=Y(I); MÆRKE=1
0031 EXEC SMARK
0032 IF I>INT(N/2)+4 THEN LET E(I)=300
0033 IF I>INT(N/2)+6 THEN LET B(I)=3
0034 NEXT I
0035 ENDPROC«so».....START.....
0036 PROC DISPLAY
0037 EXEC RAMME
0038 FOR I=1 TO N
0039 LET NY=I; SKTR=0
0040 IF G(I)<>0 THEN EXEC TEGN
0041 NEXT I
0042 ENDPROC«so».....DISPLAY.....
0043 PROC AFVIKL
0044 REPEAT
0045 IF W=1 THEN
0046 LET PARTI$="HVID"; P=1; Q=INT(N/2)
0047 ELSE
0048 LET PARTI$="SORT"; P=INT(N/2)+1; Q=N
0049 ENDIF
0050 LET Æ=1; Ø=20
0051 EXEC CUR
0052 PRINT "<10><13><31>";PARTI$;
0053 INPUT "! HVILKET FARTØJ : ",KOM$
0054 LET B1=0
0055 FOR I=P TO Q
0056 IF TYPE$(I)=KOM$ AND G(I)=1 THEN LET A=I; B1=1
0057 NEXT I
0058 UNTIL B1=1
0059 INPUT "KOMMANDO : ",KOM$
0060 IF KOM$="F" THEN EXEC FLYTTE
0061 IF KOM$="R" THEN
0062 EXEC REGLER
0063 LET W=NOT W
0064 EXEC DISPLAY
0065 ENDIF
0066 IF KOM$="L" THEN EXEC LASER
0067 IF KOM$="S" THEN EXEC STATUS
0068 IF KOM$="B" THEN EXEC BOMBE
0069 IF W9=0 OR B9=0 THEN EXEC SEJR
0070 LET W=NOT W
0071 ENDPROC«so».....AFVIKL.....
0072 PROC FLYTTE
0073 FOR D1=1 TO 2
0074 IF D1=1 THEN
0075 EXEC FLYT1
0076 ELSE
0077 IF W9*B9<>0 THEN
0078 LET Æ=1; Ø=20
0079 EXEC CUR
0080 PRINT "<10><13><31>";
0081 INPUT "ØNSKER DU AT FLYTTE ET ANDET FARTØJ (JA/NEJ) : ",SVAR$
0082 IF SVAR$="J" THEN EXEC FLYT2
0083 ENDIF
0084 ENDIF
0085 NEXT D1
0086 ENDPROC«so».....FLYTTE.....
0087 PROC FLYT1
0088 REPEAT
0089 LET VIDERE=0
0090 LET Æ=1; Ø=21
0091 EXEC CUR
0092 INPUT "VEKTORER (X Y) : ",S1,S2
0093 LET R1=SQR(S1^2+S2^2); B1=6
0094 IF A<P+6 THEN LET B1=10
0095 IF A<P+4 THEN LET B1=8
0096 IF R1>B1 THEN
0097 LET Æ=1; Ø=22
0098 EXEC CUR
0099 PRINT "<10><13><31>UDENFOR RÆKKEVIDDE!"
0100 ELSE
0101 IF B1=10 THEN LET B1=20
0102 IF E(A)-R1*(18-B1)<=0 THEN
0103 PRINT "ENERGIEN ER KUN ";E(A);" TERA-JOULES!"
0104 ELSE
0105 LET VIDERE=1
0106 ENDIF
0107 ENDIF
0108 UNTIL VIDERE=1
0109 LET GL=A
0110 EXEC VISKUD
0111 LET X(A)=X(A)+S1; Y(A)=Y(A)+S2
0112 IF X(A)<0 OR X(A)>30 OR Y(A)<0 OR Y(A)>30 THEN
0113 LET Æ=50; Ø=20
0114 EXEC CUR
0115 PRINT TYPE$(A);" ER TABT I DET YDRE RUM!"
0116 INPUT " TRYK RETURN ",SVAR$
0117 LET G(A)=0; W9=W9-(W=1); B9=B9=(W=0)
0118 ELSE
0119 LET NY=A; SKTR=1
0120 EXEC TEGN
0121 LET E(A)=E(A)-R1*(21-B1)
0122 ENDIF
0123 ENDPROC«so».....FLYT1.....
0124 PROC FLYT2
0125 REPEAT
0126 LET B1=0
0127 LET Æ=1; Ø=20
0128 EXEC CUR
0129 PRINT "<10><13><31>";
0130 INPUT "HVILKET FARTØJ : ",SKIB$
0131 FOR I=P TO Q
0132 IF TYPE$(I)=SKIB$ AND G(I)=1 THEN LET B1=I; I=Q
0133 NEXT I
0134 UNTIL B1<>0
0135 IF B1=A THEN
0136 PRINT "DETTE FARTØJ ER LIGE BLEVET FLYTTET!"
0137 INPUT "TRYK RETURN ",SVAR$
0138 ELSE
0139 LET A=B1
0140 EXEC FLYT1
0141 ENDIF
0142 ENDPROC«so».....FLYT2.....
0143 PROC LASER
0144 IF A<P+6 THEN
0145 REPEAT
0146 REPEAT
0147 LET Æ=1; Ø=20
0148 EXEC CUR
0149 PRINT "<10><13><31>";
0150 LET C=0
0151 INPUT "HVILKET FARTØJ ER MÅLET : ",SKIB$
0152 FOR I=1 TO N
0153 IF TYPE$(I)=SKIB$ AND G(I)=1 THEN LET C=I; I=N
0154 NEXT I
0155 UNTIL C>0
0156 UNTIL G(C)<>0
0157 LET R1=SQR((X(A)-X(C))^2+(Y(A)-Y(C))^2)
0158 IF R1>12 THEN
0159 PRINT "UDENFOR RÆKKEVIDDE!"
0160 ELSE
0161 PRINT "AFSTAND ";R1;". ";
0162 INPUT "LASER ENERGI : ",P8
0163 IF E(A)-P8<0 THEN
0164 PRINT "ENERGI TIL RÅDIGHED ER KUN ";E(A);" TERA-JOULES!"
0165 ELSE
0166 EXEC LASERRES
0167 ENDIF
0168 ENDIF
0169 ELSE
0170 PRINT "DER ER IKKE LASERE PÅ JAGERE!"
0171 ENDIF
0172 INPUT "TRYK RETURN! ",SVAR$
0173 ENDPROC«so».....LASER.....
0174 PROC LASERRES
0175 LET P7=(P8/((R1*.7)+.05))*(200/(E(C)+1))
0176 LET E(A)=E(A)-P8; FTAB=1
0177 IF R(P7)<17 THEN
0178 LET FTAB=0
0179 PRINT "LASERSTRÅLEN AFBØJET!"
0180 LET L=R(5*P8/((R1*.8)+.05))+INT(100/((R1*.5)+1))
0181 PRINT "ENERGITAB FOR MÅLET : ";L;" TERA-JOULES!"
0182 LET E(C)=E(C)-L
0183 IF E(C)<=0 THEN LET FTAB=1
0184 ENDIF
0185 LET UD=C
0186 IF FTAB=1 THEN EXEC TABB
0187 ENDPROC«so»......LASERRES.....
0188 PROC STATUS
0189 PRINT "<12> ";PARTI$;" FLÅDE STATUS."
0190 PRINT " ";;"--------------------------<10><13>"
0191 PRINT "FARTØJ","POSITION","ENERGI","BOMBER"
0192 PRINT "------","--------","------","------<10><13>"
0193 FOR I=P TO Q
0194 IF I=P THEN PRINT "SLAGSKIB"
0195 IF I=P+4 THEN PRINT "KRYDSER"
0196 IF I=P+6 THEN PRINT "JAGER"
0197 IF G(I)>0 THEN
0198 PRINT TYPE$(I),X(I),Y(I),E(I),B(I)
0199 ELSE
0200 PRINT TYPE$(I);" ØDELAGT!"
0201 ENDIF
0202 NEXT I
0203 INPUT "<10><10><13>TRYK RETURN ",SVAR$
0204 IF W9<>0 AND B9<>0 THEN
0205 EXEC DISPLAY
0206 ENDIF
0207 ENDPROC«so».....STATUS.....
0208 PROC BOMBE
0209 IF B(A)>0 THEN
0210 LET Æ=1; Ø=20
0211 EXEC CUR
0212 PRINT "<10><13><31>";
0213 INPUT "MÅLOMRÅDE (X Y) : ",S1,S2
0214 LET R1=SQR((X(A)-S1)^2+(Y(A)-S2)^2)
0215 IF R1=0 THEN LET R1=1E-10
0216 LET S1=S1-X(A); S2=S2-Y(A)
0217 PRINT "ANSLÅET TID TIL MÅLET ER ";R1/2;" SEK."
0218 INPUT " TAST FYR FOR AT AFFYRE BOMBEN : ",KOM$
0219 IF KOM$="F" THEN EXEC BFLUGT
0220 ELSE
0221 PRINT "DER ER INGEN BOMBER PÅ FARTØJET!"
0222 INPUT " TRYK RETURN ",SVAR$
0223 ENDIF
0224 ENDPROC«so».....BOMBE.....
0225 PROC BFLUGT
0226 PRINT "TRYK PÅ D, NÅR BOMBEN SKAL DETONERE!"
0227 LET I=1
0228 REPEAT
0229 LET I=I+1
0230 REM P.G.A. FORSKEL IMELLEM RCBASIC/COMAL80 KAN DENNE SÆTN. IKKE SKRIVES
0231 REM CALL"GET",SVAR$
0232 UNTIL TAST=ORD("D")
0233 LET R2=I/43
0234 LET S1=INT(S1*(R2/R1)); S2=INT(S2*(R2/R1))
0235 LET S1=S1+X(A); S2=S2+Y(A); B(A)=B(A)-1
0236 LET Æ=1; Ø=21
0237 EXEC CUR
0238 PRINT "<10><13><31>EKSPLOSIONENS CENTRUM ER :";S1;S2;CHR(7)
0239 LET F=0
0240 FOR I=1 TO N
0241 IF G(I)<>0 THEN
0242 LET B1=SQR((X(I)-S1)^2+(Y(I)-S2)^2)
0243 IF B1<=2.25 THEN
0244 LET F=1
0245 IF R(10*B1)>4.5 THEN
0246 LET Æ=50; Ø=20
0247 EXEC CUR
0248 PRINT "FARTØJ ";TYPE$(I);" ER I BRAND!"
0249 LET L=R(225/(B1+.05))
0250 LET Æ=50; Ø=21
0251 EXEC CUR
0252 PRINT "ENERGITAB PÅ ";L;" TERA-JOULES!"
0253 INPUT " TRYK RETURN ",SVAR$
0254 LET E(I)=E(I)-L
0255 LET UD=I
0256 IF E(I)<0 THEN EXEC TABB
0257 ELSE
0258 LET UD=I
0259 EXEC TABB
0260 ENDIF
0261 ENDIF
0262 ENDIF
0263 NEXT I
0264 IF F=0 THEN
0265 PRINT "INGEN FARTØJER INDENFOR EKSPLOSIONSOMRÅDET!"
0266 INPUT "TRYK RETURN ",SVAR$
0267 ENDIF
0268 ENDPROC«so».....BFLIGT.....
2000 PROC TABB
2010 LET Æ=1; Ø=1
2020 EXEC CUR
2030 PRINT "<10><13><31>";
2040 FOR TTID=1 TO 300
2050 NEXT TTID
2060 EXEC CUR
2070 LET Æ=50; Ø=20
2080 EXEC CUR
2090 PRINT "FARTØJ ";TYPE$(UD);" ER ØDELAGT!"
2100 LET Æ=50; Ø=21
2110 EXEC CUR
2120 PRINT CHR(30)
2130 LET G(UD)=0
2140 LET GL=UD
2150 EXEC VISKUD
2160 IF UD>INT(N/2) THEN LET B9=B9-1
2170 IF UD<INT(N/2) THEN LET W9=W9-1
2180 INPUT "TRYK RETURN ",SVAR$
2190 ENDPROCå«so».....TABB......
2200 PROC SEJR
2210 LET PARTI$="HVID"; P=1; Q=INT(N/2)
2220 IF W9=0 THEN LET PARTI$="SORT"; P=INT(N/2); Q=N
2230 PRINT "<12>SEJR TIL ";PARTI$;"!"
2240 PRINT "<7><7><7><7><7><7><7><7><7><7>";
2250 INPUT "VIL DU SE DIN STATUS ",SVAR$
2260 IF SAVR$="J" THEN EXEC STATUS
2270 ENDPROCå.....SEJR.....
2280 PROC SMARK
2290 FOR PLADSER=1 TO 3
2300 LET SLAGM$(Æ9+1,Ø9+PLADSER)=CHR(48+MÆRKE)
2310 NEXT PLADSER
2320 ENDPROC.
2330 PROC RAMME
2340 LET Æ=1; Ø=1
2350 PRINT CHR(12)
2360 EXEC CUR
2370 PRINT " 0 2 4 6 8 10 12 14";
2380 PRINT " 16 18 20 22 24 26 28 30"
2390 FOR J=0 TO 15
2400 LET Æ=1; Ø=J+2
2410 EXEC CUR
2420 PRINT J*2
2430 LET Æ=65; Ø=J+2
2440 EXEC CUR
2450 PRINT J*2
2460 NEXT J
2470 PRINT " 0 2 4 6 8 10 12 14";
2480 PRINT " 16 18 20 22 24 26 28 30"
2490 ENDPROC«so».....RAMME.....
2500 PROC VISKUD
2510 LET Æ=X(GL)*2+5; Ø=Y(GL)/2+2
2520 EXEC CUR
2530 PRINT " "
2540 LET Æ9=X(GL); Ø9=Y(GL); MÆRKE=0
2550 EXEC SMARK
2560 FOR PL=1 TO N
2570 LET Æ9=X(PL); Ø9=Y(PL); MÆRKE=1
2580 IF G(PL)=1 THEN EXEC SMARK
2590 NEXT PL
2600 ENDPROC«so».....VISKUD.....
2610 PROC TEGN
2620 IF SKTR=1 THEN
2630 REPEAT
2640 IF SLAGM$(X(NY)+1,Y(NY)+2)="1" THEN
2650 IF X(NY)<15 THEN
2660 LET X(NY)=X(NY)+1
2670 ELSE
2680 LET X(NY)=X(NY)-1
2690 ENDIF
2700 ENDIF
2710 UNTIL SLAGM$(X(NY)+1,Y(NY)+2)="0"
2720 LET Æ9=X(NY); Ø9=Y(NY); MÆRKE=1
2730 EXEC SMARK
2740 ENDIF
2750 LET Æ=X(NY)*2+5; Ø=Y(NY)/2+2
2760 EXEC CUR
2770 PRINT TYPE$(NY)
2780 ENDPROC«so».....TEGN.....
2790 PROC CUR
2800 PRINT CHR(6);CHR(Æ+95-(Æ>32)*64-(Æ>64)*64);CHR(Ø+95);
2810 ENDPROC«so».....CUR.....
2820 PROC REGLER
2830 PRINT "<12>DU KOMMANDERER EN FLÅDE AF FARTØJER!<10><13>"
2840 PRINT "MULIGE KOMMANDOER ER : FLYT LASER STATUS BOMBE REGLER"
2850 PRINT " ---- ----- ------ ----- ------"
2860 PRINT "KOMMANDOER ANGIVES VED AT TASTE DET FØRSTE BOGSTAV (F/L/S/B/R)"
2870 PRINT "DU KAN FLYTTE 2 FARTØJER ELLER ANGRIBE FRA 1. BOGSTAV.<10><13>"
2880 PRINT "SORT OG HVID SKIFTES TIL AT FLYTTE ELLER ANGRIBE.<10><13>"
2890 PRINT "FARTØJER","MAX. BEVÆGELSE","ENERGILASER"," BOMBER","LASER"
2900 PRINT "--------","--------------","-----------"," ------","-----"
2910 PRINT "SLAGSKIB","10 ENHEDER","500 TERA-JOULES"," INGEN","JA"
2920 PRINT "(A,B,C,D,W,X,Y,Z)"
2930 PRINT "KRYDSER","10 ENHEDER","300 TERA-JOULES","INGEN","JA"
2940 PRINT "(<60>,>,*,#)"
2950 PRINT "JAGER","6 ENHEDER","300 TERA-JOULES"," 3 STK. ","INGEN"
2960 PRINT "(1,2,3,7,8,9)<10><13>"
2970 PRINT "ENERGIFORBRUG VED BEVÆGELSER ER: JASER > SLAGSKIB >KRYDSER<10><13>"
2980 PRINT "LASER-RÆKKEVIDDE ER 12 ENHEDER. BOMBER UBEGRÆNSER!"
2990 INPUT "TRYK RETURN ",SVAR$
3000 ENDPROCå.....REGLER.....
«nul»