DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC3600/RC7000

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

See our Wiki for more about RegneCentralen RC3600/RC7000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦6f1af97eb⟧ TextFile

    Length: 13824 (0x3600)
    Types: TextFile
    Names: »B18«

Derivation

└─⟦6dbcc9c03⟧ Bits:30000463 DOMUS disk image
    └─⟦this⟧ »/B18« 

TextFile

 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»