|
|
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: 10752 (0x2a00)
Types: TextFile
Names: »B46«
└─⟦6dbcc9c03⟧ Bits:30000463 DOMUS disk image
└─⟦this⟧ »/B46«
EM DENNE UDFORMNING ER LAVET AF:
0050 REM // F G KNUDSEN
0060 REM // KOLLERUPVEJ 17
0070 REM // 8900 RANDERS TLF.: 06 43 49 04
0080 REM //----------//
0090 REM VERSION 1.1, 9/1/81.
0100 REM //----------//
0110 DIM INFIX$(20),POST$(20),STAK$(20),H$(3),SVAR$(1)
0120 DIM TALSTAK(10),NAVN$(6),ABSTED(2),TAL(3)
0130 REM //----------//
0140 REM PROGRAM TALTUR
0150 EXEC FORKLARING
0160 REPEAT
0170 EXEC START
0180 REPEAT
0190 EXEC TALSÆT
0200 EXEC MODTAGSVAR
0210 IF DIVNUL=FALSE THEN EXEC BEDØMMELSE
0220 UNTIL FÆRDIG=TRUE
0230 EXEC CUR(8,24)
0240 INPUT "IGEN (JA/NEJ) : ",SVAR$
0250 UNTIL SVAR$="N" OR SVAR$="N"
0255 CHAIN "LOGON"
0260 END PROGRAM TALTUR
0280 REM //-----------//
0290 PROC START
0300 TRUE=1; FALSE=0
0310 ABSTED(1),ABSTED(2)=0; FÆRDIG=FALSE; SPILLER=1
0320 RANDOMIZE
0330 NAVN$=CHR(130)+"A"+CHR(128)+CHR(130)+"B"+CHR(128)
0340 PRINT CHR(12)
0350 EXEC VEJNET
0360 ENDPROC START
0370 REM //----------//
0380 PROC VEJNET
0390 PRINT CHR(12)
0400 PRINT "START 1 2 3 4 5 6 7 8 9 10"
0410 PRINT " "; NAVN$(4 : 3); NAVN$(1 : 3);
0420 PRINT "O---*---*---*---*---*---*---*---*---O"
0430 PRINT "KRI- X>>13 I VO-"
0440 PRINT "STRUP 20 >>X 12 I RUP"
0450 PRINT " O---*---*---*---*---*---*---*---*---*"
0460 PRINT " I RAN-"
0470 PRINT " I 25 30 DERS"
0480 PRINT " *---*---*---*---*---*---*---*---*---O"
0490 PRINT " L I"
0500 PRINT "LEM 40 36 I"
0510 PRINT " O---*---*---*---*---*---*---*---*---*"
0520 PRINT " I GIM-"
0530 PRINT " I 50 MING"
0540 PRINT " *---*---*---*---*---*---*---*---*---O"
0550 PRINT "TJÆR- X>>54 I"
0560 PRINT "BY 60 >>X I"
0570 PRINT " O---*---*---*---*---*---*---*---*---*"
0580 PRINT " I"
0590 PRINT " I 70"
0600 PRINT " *---*---*---*---*---*---*---*---*---O"
0610 PRINT " DRONNINGBORG"
0620 EXEC CUR(60,3)
0630 PRINT "TAL 1 (1-3):"
0640 EXEC CUR(60,5)
0650 PRINT "TAL 2 (0-4):"
0660 EXEC CUR(60,7)
0670 PRINT "TAL 3 (1-8):"
0680 ENDPROC VEJNET
0690 REM //----------/
0700 PROC TALSÆT
0710 TAL(1)=INT(RND(0)*3+1); TAL(2)=INT(RND(0)*5)
0720 TAL(3)=INT(RND(0)*8+1)
0730 FOR NR=1 TO 3
0740 EXEC CUR(72,(2*NR+1))
0750 PRINT TAL(NR)
0760 NEXT NR
0770 ENDPROC TALSÆT
0780 REM //-----------//
0790 PROC MODTAGSVAR
0800 SVAROK=FALSE
0810 REPEAT
0820 EXEC CUR(60,11)
0830 PRINT NAVN$(SPILLER*3-1 : 1); ", DIT"
0840 EXEC CUR(60,12)
0850 PRINT CHR(30);
0860 INPUT "STYKKE : ",INFIX$
0870 FOR LINNR=13 TO 22
0880 EXEC CUR(60,LINNR)
0890 PRINT CHR(30)
0900 NEXT LINNR
0910 EXEC TESTSVAR
0920 IF SVAROK=TRUE THEN EXEC OVERSÆT
0930 IF SVAROK=FALSE THEN
0940 EXEC CUR(60,13)
0950 PRINT "FEJL I INPUT!"
0960 ENDIF
0970 UNTIL SVAROK=TRUE
0980 EXEC TALVÆRDI
0990 ENDPROC MODTAGSVAR
1000 REM //----------//
1010 PROC TESTSVAR
1020 LÆNGDE=LEN(INFIX$); VENSTRE,HØJRE=0
1030 IF LÆNGDE>0 THEN
1040 I=0
1050 REPEAT
1060 I=I+1
1070 IF INFIX$(I : 1)=" " THEN
1080 INFIX$(I : LÆNGDE-I)=INFIX$(I+1 : LÆNGDE-I)
1090 INFIX$=INFIX$(1 : LÆNGDE-1)
1100 LÆNGDE=LÆNGDE-1
1110 ELSE
1120 IF INFIX$(I : 1)="(" THEN VENSTRE=VENSTRE+1
1130 IF INFIX$(I : 1)=")" THEN HØJRE=HØJRE+1
1140 ENDIF
1150 UNTIL I=>LÆNGDE
1160 ENDIF
1170 IF VENSTRE=HØJRE AND LEN(INFIX$)-2*HØJRE=5 THEN
1180 SVAROK=TRUE; N=0
1190 FOR I=1 TO LEN(INFIX$)
1200 IF INFIX$(I : 1)<":" AND INFIX$(I : 1)>"/" THEN
1210 N=N+1
1220 IF N>3 THEN
1230 SVAROK=FALSE
1240 ELSE
1250 IF ORD(INFIX$(I : 1))-48<>TAL(N) THEN SVAROK=FALSE
1260 ENDIF
1270 ENDIF
1280 NEXT I
1290 ENDIF
1300 INFIX$=INFIX$+" "
1310 ENDPROC TESTSVAR
1320 REM //----------//
1330 PROC OVERSÆT
1340 K,N=0; I=1; POST$=""; STAK$=""
1350 WHILE INFIX$(I : 1)<>" " DO
1360 H$=INFIX$(I : 1)
1370 EXEC LEV
1380 IF LEVEL<>-1 THEN
1390 IF LEVEL=6 THEN
1400 K=K+1; POST$(K : 1)=INFIX$(I : 1)
1410 ELSE IKKE KONSTANT
1420 IF LEVEL=1 THEN
1430 N=N+1; STAK$(N : 1)=INFIX$(I : 1)
1440 ELSE IKKE VENSTREPARANTES
1450 IF LEVEL=0 THEN
1460 EXEC HØJREPARANTES
1470 ELSE
1480 EXEC ANDET
1490 ENDIF
1500 ENDIF
1510 ENDIF
1520 ENDIF
1530 I=I+1
1540 ENDWHILE
1550 EXEC FÆRDIGAFSTAK
1560 ENDPROC OVERSÆT
1570 REM //----------//
1580 PROC LEV
1590 LEVEL=-1
1600 IF H$=")" THEN LEVEL=0
1610 IF H$="(" THEN LEVEL=1
1620 IF H$="+" OR H$="-" THEN LEVEL=3
1630 IF H$="*" OR H$="/" THEN LEVEL=4
1640 IF H$="^" THEN LEVEL=5
1650 IF H$<":" AND H$>"/" THEN LEVEL=6
1660 IF LEVEL=-1 THEN SVAROK=FALSE
1670 ENDPROC LEV
1680 REM //----------//
1690 PROC HØJREPARANTES
1700 WHILE STAK$(N : 1)<>"(" DO
1710 K=K+1; POST$(K : 1)=STAK$(N : 1); N=N-1
1720 ENDWHILE
1730 N=N-1
1740 ENDPROC HØJREPARANTES
1750 REM //----------//
1760 PROC ANDET
1770 UD=FALSE
1780 WHILE N<>0 AND UD=FALSE DO
1790 INLEVEL=LEVEL; H$=STAK$(N : 1)
1800 EXEC LEV
1810 IF INLEVEL<=LEVEL THEN
1820 K=K+1; POST$(K : 1)=STAK$(N : 1); N=N-1
1830 ELSE
1840 UD=TRUE
1850 ENDIF
1860 ENDWHILE
1870 N=N+1; STAK$(N : 1)=INFIX$(I : 1)
1880 ENDPROC ANDET
1890 REM //----------//
1900 PROC FÆRDIGAFSTAK
1910 WHILE N<>0 DO
1920 K=K+1; POST$(K : 1)=STAK$(N : 1); N=N-1
1930 ENDWHILE
1940 ENDPROC FÆRDIGAFSTAK
1950 REM //----------//
1960 PROC TALVÆRDI
1970 I,N=0; DIVNUL=FALSE
1980 REPEAT
1990 I=I+1; H$=POST$(I : 1)
2000 IF H$<":" AND H$>"/" THEN
2010 N=N+1; TALSTAK(N)=ORD(H$)-48
2020 ELSE
2030 IF H$="+" THEN TALSTAK(N-1)=TALSTAK(N-1)+TALSTAK(N)
2040 IF H$="-" THEN TALSTAK(N-1)=TALSTAK(N-1)-TALSTAK(N)
2050 IF H$="*" THEN TALSTAK(N-1)=TALSTAK(N-1)*TALSTAK(N)
2060 IF H$="/" THEN
2070 IF TALSTAK(N)<>0 THEN
2080 TALSTAK(N-1)=TALSTAK(N-1)/TALSTAK(N)
2090 ELSE
2100 DIVNUL=TRUE
2110 ENDIF
2120 ENDIF
2130 IF H$="^" THEN TALSTAK(N-1)=TALSTAK(N-1)^TALSTAK(N)
2140 N=N-1
2150 ENDIF
2160 UNTIL I=LEN(POST$) OR DIVNUL=TRUE
2170 IF DIVNUL=FALSE THEN
2180 INDTAL=INT(TALSTAK(1)+.5)
2190 EXEC CUR(60,15)
2200 PRINT CHR(30); "TALVÆRDI :",INDTAL
2210 ELSE
2220 EXEC CUR(60,18)
2230 PRINT "DU DIVIDERER MED 0!"
2240 SPILLER=3-SPILLER
2250 EXEC VINDER
2260 ENDIF
2270 ENDPROC TALVÆRDI
2280 REM //----------//
2290 PROC BEDØMMELSE
2300 FRA=ABSTED(SPILLER); MÅL=ABSTED(SPILLER)+INDTAL
2310 IF MÅL=70 OR MÅL=60 THEN
2320 MÅL=70
2330 EXEC VINDER
2340 ELSE
2350 IF MÅL MOD 10=0 THEN MÅL=MÅL+10
2360 ENDIF
2370 IF MÅL=4 THEN MÅL=13
2380 IF MÅL=25 THEN MÅL=36
2390 IF MÅL=41 THEN MÅL=54
2400 ABSTED(SPILLER)=MÅL
2410 IF ABSTED(3-SPILLER)=MÅL AND MÅL MOD 10>0 THEN
2420 EXEC FLYT((MÅL),(INT(MÅL/10)*10),(3-SPILLER))
2430 ABSTED(3-SPILLER)=INT(MÅL/10)*10
2440 EXEC CUR(60,21)
2450 PRINT NAVN$((3-SPILLER)*3-1 : 1); ", TILBAGE TIL :"; INT(MÅL/10)*10
2460 ENDIF
2470 IF MÅL<1 OR MÅL>70 THEN
2480 EXEC CUR(60,18)
2490 PRINT NAVN$(SPILLER*3-1 : 1); " UDEN FOR VEJEN!"
2500 SPILLER=3-SPILLER
2510 EXEC VINDER
2520 ELSE
2530 EXEC CUR(60,18)
2540 PRINT "DU RYKKER TIL:"; MÅL
2550 EXEC FLYT((FRA),(MÅL),(SPILLER))
2560 SPILLER=3-SPILLER
2570 ENDIF
2580 ENDPROC BEDØMMELSE
2590 REM //----------//
2600 PROC FLYT(F1,F2,F3)
2610 EXEC STED((F1),(F3))
2620 EXEC CUR(PLADS,LINIE)
2630 PRINT H$
2640 EXEC STED((F2),(F3))
2650 EXEC CUR(PLADS,LINIE)
2660 PRINT NAVN$(F3*F3 : 3)
2670 ENDPROC FLYT
2680 REM //----------//
2690 PROC STED(G1,G2)
2700 LINIE=INT((G1-1)/10+1)*3+3*(G1=0)
2710 PLADS=((G1-1) MOD 10)*4+7+4*(G1=0)
2720 IF ((G1-1) DIV 10) MOD 2=1 THEN PLADS=50-PLADS
2730 IF G1 MOD 10=0 THEN
2740 PLADS=PLADS+G2*3-1
2750 IF G1 MOD 20=0 THEN PLADS=PLADS-(G2*3-1)*2
2760 H$=" "
2770 ELSE
2780 H$="-*-"
2790 IF PLADS=7 AND LINIE=3 THEN H$=" O-"
2800 ENDIF
2810 ENDPROC STED
2820 REM //----------//
2830 PROC VINDER
2840 EXEC CUR(60,19)
2850 PRINT NAVN$(SPILLER*3-1 : 1); " HAR VUNDET!"
2860 FÆRDIG=TRUE
2870 ENDPROC VINDER
2880 REM //----------//
2890 PROC CUR(Æ,Ø)
2900 PRINT CHR(6); CHR(95+Æ-(Æ>32)*64-(Æ>64)*64); CHR(95+Ø);
2910 ENDPROC CUR
2920 REM //----------//
2930 PROC FORKLARING
2940 PRINT CHR(12)
2950 PRINT
2960 PRINT
2970 PRINT " T A L T U R"
2980 PRINT
2990 PRINT " DETTE PROGRAM ER ET TRÆNINGSPROGRAM TIL REGNING."
3000 PRINT " TO PERSONER, A OG B, SPILLER MOD HINANDEN, OG DET GÆLDER OM"
3010 PRINT " FØRST AT NÅ TIL DRONNINGBORG."
3020 PRINT " I ØVERSTE HØJRE HJØRNE AF SKÆRMEN KOMMER TRE TAL. VED HJÆLP AF"
3030 PRINT " DISSE SKAL DER OPSTILLES ET ARITMETISK UDTRYK, SOM RC700 SÅ UD-"
3040 PRINT " REGNER, OG MAN RYKKER SÅ DET ANTAL PLADSER FREM, SOM UDTRYKKET"
3050 PRINT " GIVER SOM RESULTAT."
3060 PRINT " MAN KAN BRUGE ALLE REGNINGSARTER INCL. POTENSOPLØFTNING OG DER"
3070 PRINT " KAN OGSÅ BRUGES PARENTESER. TALLENE SKAL ANVENDES I DEN RÆKKE-"
3080 PRINT " FØLGE, SOM DE STÅR I. "
3090 PRINT " MAN SKAL RAMME DRONNINGBORG PRÆCIST (70), OG DET ER FORBUDT AT DIVI-"
3100 PRINT " DERE MED NUL. UNDERVEJS ER DER GENVEJE, SOM KAN BENYTTES, HVIS MAN"
3110 PRINT " RAMMER GENVEJENS START. MAN KAN OGSÅ SLÅ MODSTANDEREN TILBAGE."
3120 PRINT
3130 INPUT " GOD FORNØJELSE!! (TRYK PÅ RETURN FOR START) ",SVAR$
3140 ENDPROC
▶03◀«nul»