|
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 - download
Length: 10752 (0x2a00) Types: TextFile Names: »B46«
└─⟦6dbcc9c03⟧ Bits:30000463 DOMUS disk image └─⟦this⟧
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»