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 - download

⟦d17107ddf⟧ TextFile

    Length: 10752 (0x2a00)
    Types: TextFile
    Names: »B46«

Derivation

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

TextFile

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»