|
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: 11776 (0x2e00) Types: TextFile Names: ».5«
└─⟦45bd0f8dd⟧ Bits:30000464 DOMUS disk image └─⟦this⟧ »/.5« └─⟦a2e222af0⟧ Bits:30001626 DOMUS disk image └─⟦this⟧ »/.5«
Mh(1) ER DET Q▶16◀`i▶16◀i(2) IS THE CAPITAL CAIRO ?iVh3h(18) DOES THE NAME START WITH EITHER A <B> OR AN <I> (Y/N) ?▶1b◀`i▶1c◀i(1) IS IT BHUTAN ?▶16◀`i▶16◀i(2) IS THE LAST LETTER <Q> OR <K> (YES^/NO)«so»i `i(1) IS IT OMAN ?▶16◀`i▶16◀i(2) IS THE CAPITAL ABEBA ?Uh1h(1) IS IT DAHOMEY ?▶16◀`i▶16◀i0 1 2 3 4 5 6 7 8 9 ...............................FINISH```````````````````````````````````````````` 0010 ON ESC EXEC SLUTTE 0020 REM //----------------------------------------------// 0030 REM // PROGRAM : OTHELLO // 0040 REM // SKREVET AF : ERIK T. NIELSEN I RC700 COMAL // 0050 REM // STED : RISMØLLESKOLEN, RANDERS, DEN 8.5.80 // 0060 REM // DENNE VERSION ER AF : 22.12.80 // 0070 REM //----------------------------------------------// 0080 RANDOMIZE // START OF OTHELLO // 0090 EXEC START 0100 EXEC SPIL 0110 EXEC SLUT 0120 EXEC SLUTTE 0130 STOP // END OF OTHELLO // 0140 REM //----------------------------------------------// 0150 PROC START 0160 DIM BRÆT(10,10),X(8),Y(8),KRYDS$(1),T$(3) 0170 DIM VERTI(10),HORIZ(10),PLACERING$(2) 0180 FOR I=1 TO 8 0190 READ X(I),Y(I) 0200 NEXT I 0210 DATA 1,-1,1,0,1,1,0,-1,-1,-1,-1,0,-1,1,0,1 0220 PRINT CHR(12) 0230 EXEC CURSOR(1,21,32) 0240 REPEAT 0250 PRINT CHR(26); CHR(30); 0260 INPUT " YOUR CHOICE : X OR O : ",KRYDS$ 0270 IF KRYDS$="X" THEN KRYDS$="X" 0280 IF KRYDS$="O" THEN KRYDS$="O" 0290 UNTIL KRYDS$="X" OR KRYDS$="O" 0300 PRINT "IF YOU WAIVE YOUR CLAIM, THEN TYPE : RE" 0310 PRINT "IF YOU GIVE UP / QUIT, THEN TYPE : QT" 0320 R=1; RCVÆRDI=1+(KRYDS$="X"); MDVÆRDI=3-RCVÆRDI; T$=" XO" 0330 TRUE=1; FALSE=0; TOM,NUL=0 0340 BRC,BMD=2; PLACEREDE=4; AFSTÅET=0; BRÆT(5,5),BRÆT(6,6)=MDVÆRDI 0350 VERTI(5),VERTI(6),HORIZ(5),HORIZ(6)=2; BRÆT(5,6),BRÆT(6,5)=RCVÆRDI 0360 EXEC KANT 0370 FOR I=5 TO 6 0380 FOR J=5 TO 6 0390 EXEC BRIKPRINT(I,J) 0400 NEXT J 0410 NEXT I 0420 ENDPROC START 0430 REM //----------// 0440 PROC SPIL 0450 REPEAT 0460 EXEC MDBRIKPLACERING 0470 IF PLACERING$<>"QT" THEN EXEC RCBRIKPLACERING 0480 UNTIL PLACEREDE=64 OR AFSTÅET=2 OR BMD=0 OR BRC=0 OR PLACERING$="QT" 0490 ENDPROC SPIL 0500 REM //----------// 0510 PROC MDBRIKPLACERING 0520 REPEAT 0530 REPEAT 0540 PRINT CHR(29); CHR(30); 0550 INPUT "INSERT POSITION : ",PLACERING$ 0560 EXEC CURSOR(1,2,32) 0570 FOR SLET=1 TO 15 0580 PRINT " " 0590 NEXT SLET 0600 EXEC CURSOR(1,2,32) 0610 IF PLACERING$="RE" THEN AFSTÅET=AFSTÅET+1 0620 REM VERT (CIFFER -48) TIL J. 0630 REM HORZ (BOGSTAV-96) TIL I. 0640 IF ORD(PLACERING$(2 : 1))<58 THEN 0650 J=ORD(PLACERING$(2 : 1))-48; I=ORD(PLACERING$(1 : 1))-96 0660 ELSE 0670 J=ORD(PLACERING$(1 : 1))-48; I=ORD(PLACERING$(2 : 1))-96 0680 ENDIF 0690 PLACERE=(FALSE=(PLACERING$="RE" OR PLACERING$="QT")) 0700 UNTIL TRUE=(I>0 AND I<9 AND J>0 AND J<9) OR PLACERE=FALSE 0710 IF PLACERE=FALSE THEN EXIT 0720 I=I+1; J=J+1; OKAY=FALSE 0730 IF BRÆT(I,J)<>TOM THEN 0740 PRINT "OCCUPIED FIELD !" 0750 ELSE 0760 EXEC OMLIGGENDE(I,J,RCVÆRDI) 0770 IF MULIG=FALSE THEN 0780 PRINT "????" 0790 ELSE 0800 EXEC OPTÆL(I,J,0,RCVÆRDI,MDVÆRDI) 0810 IF VENDBARE=FALSE THEN 0820 PRINT "NO ONE CAN BE TURNED !" 0830 ELSE *NOGEN KAN VENDES** 0840 EXEC CURSOR(1,14,7) 0850 PRINT "YOU GOT"; VENDBARE; 0860 IF VENDBARE=1 THEN 0870 PRINT "PIECE" 0880 ELSE 0890 PRINT "PIECES." 0900 ENDIF 0910 AFSTÅET=0; OKAY=TRUE; BMD=BMD+VENDBARE+1; BRC=BRC-VENDBARE 0920 PLACEREDE=PLACEREDE+1; VERTI(I)=VERTI(I)+1; HORIZ(J)=HORIZ(J)+1 0930 EXEC OPTÆL(I,J,1,RCVÆRDI,MDVÆRDI) 0940 ENDIF 0950 ENDIF 0960 ENDIF 0970 UNTIL OKAY=TRUE 0980 ENDPROC MDBRIKPLACERING 0990 REM //----------// 1000 PROC RCBRIKPLACERING 1010 IF AFSTÅET=2 OR PLACERING$="QT" THEN EXIT 1020 I,J=1 1030 REPEAT ** FIND THE TESTFIELDS LOWER LIMITS ** 1040 I=I+(VERTI(I)=0); J=J+(HORIZ(J)=0) 1050 UNTIL VERTI(I)<>0 AND HORIZ(J)<>0 1060 VI=I-1; VJ=J-1; I,J=10 1070 REPEAT ** FIND THE TESTFIELDS UPPER LIMITS ** 1080 I=I-(VERTI(I)=0); J=J-(HORIZ(J)=0) 1090 UNTIL VERTI(I)<>0 AND HORIZ(J)<>0 1100 WI=I+1; WJ=J+1; VI=VI+(VI=1); VJ=VJ+(VJ=1) 1110 WI=WI-(WI=10); WJ=WJ-(WJ=10); MAX=-1 1120 FOR I=VI TO WI 1130 FOR J=VJ TO WJ 1140 IF BRÆT(I,J)=TOM THEN 1150 EXEC OMLIGGENDE(I,J,MDVÆRDI) 1160 IF MULIG=TRUE THEN 1170 EXEC OPTÆL(I,J,0,MDVÆRDI,RCVÆRDI)«ff» 1180 IF VENDBARE>0 THEN 1190 IF 0=((I-2)*(I-9)) THEN VENDBARE=VENDBARE+2 1200 IF 0=((J-2)*(J-9)) THEN VENDBARE=VENDBARE+2 1210 IF VENDBARE=>MAX THEN 1220 IF VENDBARE=MAX THEN R=RND(0) 1230 IF R<.5 OR VENDBARE>MAX THEN MAX=VENDBARE; MI=I; MJ=J 1240 ENDIF ** BETTER POSITION ** 1250 ENDIF ** PIECES CAN BE TURNED ** 1260 ENDIF ** POSSIBLE POSITION OF PIECE ** 1270 ENDIF ** ATTEMPTFIELD = ZERO ** 1280 NEXT J 1290 NEXT I 1300 IF MAX<0 THEN 1310 EXEC CURSOR(1,10,7) 1320 PRINT "RC700 WAIVES IT'S CLAIM !" 1330 PRINT "YOUR TURN" 1340 AFSTÅET=AFSTÅET+1 1350 ELSE ** PIECES CAN BE TURNED ** 1360 EXEC CURSOR(1,10,7) 1370 PRINT "RC700 : ",CHR(MI+95); CHR(MJ+47) 1380 EXEC OPTÆL(MI,MJ,1,MDVÆRDI,RCVÆRDI) 1390 PLACEREDE=PLACEREDE+1; BRC=BRC+VENDBARE+1; BMD=BMD-VENDBARE 1400 VERTI(MI)=VERTI(MI)+1; HORIZ(MJ)=HORIZ(MJ)+1; AFSTÅET=0 1410 EXEC CURSOR(1,15,7) 1420 PRINT "RC700 GOT"; VENDBARE; 1430 IF VENDBARE=1 THEN 1440 PRINT "PIECE." 1450 ELSE 1460 PRINT "PIECES." 1470 ENDIF 1480 REM 1490 ENDIF 1500 ENDPROC RCBRIKPLACERING 1510 REM //----------// 1520 PROC SLUT 1530 EXEC CURSOR(1,21,31) 1540 EXEC CURSOR(1,19,7) 1550 PRINT "YOU HAVE"; BMD; "PIECES." 1560 PRINT "RC700 HAS"; BRC; "PIECES." 1570 PRINT 1580 IF BRC=BMD THEN PRINT "TIE !" 1590 IF BRC>BMD THEN PRINT " I GOT YOU !" 1600 IF BRC<BMD THEN PRINT " THERE YOU GO ! (LUCKY ?)" 1610 ENDPROC SLUT 1620 REM //----------// 1630 PROC OPTÆL(IP,JP,VEND,MODSTBRIK,EGENBRIK) 1640 VENDBARE=0 1650 FOR RETNING=1 TO 8 1660 KX=X(RETNING); KY=Y(RETNING); N=IP+KX; M=JP+KY; DELVEND=0 1670 IF BRÆT(N,M)=MODSTBRIK THEN 1680 REPEAT ** SEEK YOUR OWN PIECE OR EMPTY BEHIND ADVERSERY. ** 1690 DELVEND=DELVEND+1; N=N+KX; M=M+KY 1700 UNTIL BRÆT(N,M)=0 OR BRÆT(N,M)=EGENBRIK 1710 IF BRÆT(N,M)=EGENBRIK THEN 1720 VENDBARE=VENDBARE+DELVEND 1730 IF VEND=1 THEN 1740 N=IP-KX; M=JP-KY 1750 FOR P=0 TO DELVEND 1760 N=N+KX; M=M+KY; BRÆT(N,M)=EGENBRIK 1770 EXEC BRIKPRINT(N,M) 1780 NEXT P 1790 ENDIF ** ONE ROW TURNED ** 1800 ENDIF ** OWN PIECE BEHIND ADVERSERY. ** 1810 ENDIF ** ADVERSERY NEXT TO RC-PIECE ** 1820 NEXT RETNING 1830 ENDPROC OPTÆL 1840 REM //----------// 1850 PROC OMLIGGENDE(Æ,Ø,TEST) 1860 FOR Z=1 TO 8 1870 IF BRÆT(Æ+X(Z),Ø+Y(Z))=TEST THEN EXIT 1880 NEXT Z 1890 MULIG=(Z<9) 1900 ENDPROC OMLIGGENDE 1910 REM //----------// 1920 PROC BRIKPRINT(C,D) 1930 EXEC CURSOR(C*4+30,D*2,ORD(T$(BRÆT(C,D)+1 : 1))) 1940 ENDPROC BRIKPRINT 1950 REM //----------// 1960 PROC CURSOR(UD,NE,TS) 1970 PRINT CHR(6); CHR(95+UD-(UD>32)*64-(UD>64)*64); CHR(NE+95); CHR(TS) 1980 ENDPROC CURSOR 1990 REM //----------// 2000 PROC KANT 2010 PRINT CHR(29) 2020 EXEC BOGSTAVER 2030 FOR I=1 TO 8 2040 PRINT TAB(32); CHR(132); ",,N,,,N,,,N,,,N,,,N,,,N,,,N,,,N,,,N,,"; 2050 PRINT CHR(128) 2060 PRINT TAB(33); CHR(48+I); CHR(132); "J"; 2070 FOR J=1 TO 8 2080 PRINT " J"; 2090 NEXT J 2100 PRINT CHR(128); CHR(48+I) 2110 NEXT I 2120 PRINT TAB(32); CHR(132); ",,N,,,N,,,N,,,N,,,N,,,N,,,N,,,N,,,N,,"; 2130 PRINT CHR(128) 2140 EXEC BOGSTAVER 2150 ENDPROC KANT 2160 REM //----------// 2170 PROC BOGSTAVER 2180 PRINT TAB(34); 2190 FOR I=1 TO 8 2200 PRINT CHR(132); "J"; CHR(128); CHR(96+I); 2210 NEXT I 2220 PRINT CHR(132); "J"; CHR(128) 2230 ENDPROC BOGSTAVER 2240 PROC SLUTTE 2250 ON ESC EXEC SLUTTE 2260 CHAIN "MENUE" 2270 ENDPROC «ff» "J"; CHR(128) 2230 ENDPROC BOGSTAVER 2240 PROC SLUTTE 0010 ON ESC CHAIN "MENUE" 0020 RANDOMIZE 0030 REM (* THIS PROGRAM CAN PLAY MASTERMIND *) 0040 REM (* PROGRAMMER: OLE PLANNTHIN *) 0050 REM (* WRITTEN 08.10.80 *) 0060 DIM OPLÆG(6),FORS(6),ANVOPL(6),ANVFOR(6) 0070 DIM SVAR$(3),G$(6) 0080 REPEAT 0090 PRINT CHR(12) 0100 PRINT "THIS PROGRAM CAN PLAY MASTERMIND!" 0110 PRINT " " «ff» «nul»