10 INPUT"NUMBER OF PLAYERS";N 20 GOSUB 700 30 FOR I=1 TO N 40 PRINT"PLAYER";I; 50 INPUT"NAME IS";A$(I) 60 NEXT I 70 GOSUB 2000 80 INPUT"Action";I$ 90 Z$=MID$(I$,1,1) 100 IF Z$="A" THEN GOSUB 600 110 IF Z$="G" THEN GOSUB 400 120 IF Z$="P" THEN PRINT:FOR I=1 TO N:PRINT"PLAYER";I;"IS ";A$(I):NEXT 130 IF Z$="D" THEN GOSUB 800 140 IF Z$="C" THEN FOR I=1 TO 25:PRINT:NEXT 150 IF Z$="U" THEN GOSUB 200 180 GOTO 80 190 REM 200 REM PROCESS UPDATE 210 I=FIRST:YES=ASC("Y") 220 K=B(I,1):IF I=0 GOTO 300 230 A=B(I,4):B=B(I,5):C=B(I,6):P=B(I,3) 240 IF A(A,P)=YES OR A(B,P)=YES OR A(C,P)=YES THEN R=P:GOSUB 2400 250 I=K:GOTO 220 300 I=FIRST 310 IF I=0 THEN RETURN 320 A=B(I,4):B=B(I,5):C=B(I,6):P=B(I,3) 330 T=0:FOR J=1 TO N 340 IF A(A,J)=YES OR A(B,J)=YES OR A(C,J)=YES THEN GOSUB 360 350 NEXT J:I=B(I,1):GOTO 310 390 RETURN 400 REM PROCESS GUESS 410 INPUT"WHO'S GUESS";J$ 420 FOR J=1 TO N:IF MID$(A$(J),1,DN(J$))=J$ GOTO 440 430 NEXT J:PRINT"NO SUCH NAME":RETURN 440 INPUT"PERSON,WEAPON,ROOM";A$,B$,C$ 450 RESTORE:FOR A= TO 6:READ X$:IF MID$(X$,1,LEN(A$))=A$ GOTO 470 460 NEXT A:PRINT"NO SUCH PERSON":RETURN 470 FOR B=A+1 TO 12:READ X$:IF MID$(X$,1,LEN(B$))=B$ GOTO 490 480 NEXT B:PRINT"NO SUCH WEAPON":RETURN 490 FOR C=B+1 TO 21:READ X$:IF MID$(X$,1,LEN(C$))=C$ GOTO 510 500 NEXT C:PVINT"NO SUCH ROOM":RETURN 510 INPUT"WHO HAD IT";K$ 520 FOR K=1 TO N:IF MID$(A$(K),1,LEN(K$))=K$ GOTO 540 530 NEXT K:PRINT"NO SUCH PLAYER":RETURN 540 J=J+1:IF J>N THEN J=1 550 IF J<>K THEN A(A,J)=NO:A(B,J)=NO:A(C,J)=NO:GOTO 540 560 P=K:GOSUB 2200 570 RETURN 600 REM PROCESS ASSIGN 610 INPUT"WHO,WHAT";J$,I$ 620 FOR J=1 TO N:IF MID$(A$(J),1,LEN(J$))=J$ GOTO 640 630 NEXT J:PRINT"NO SUCH PLAYER":RETURN 640 RESTORE:FOR I=1 TO 21:READ X$:IF MID$(X$,1,LEN(I$))=I$ GOTO 660 650 NEXT I:PRINT"NO SUCH IDEM":RETURN 660 A(I,J)=ASC("Y") 670 RETURN 700 REM INIT MATRIX 710 DIM A(21,N) 730 FOR I=1 TO 21 740 FOR J=1 TO N 750 A(I,J)=ASC(".") 760 NEXT J:NEXT I 770 T=13:IF N>4 THEN T=10:IF N=5 THEN T=12 780 NO=ASC("N") 790 RETURN 800 REM SET UP HEADER 820 PRINT TAB(T);" "; 830 FOR J=1 TO N 840 PRINT CHR$(J+48);" "; 850 NEXT J:PRINT 860 REM SET UP DISPLAY 870 RESTORE 880 FOR I=1 TO 21 890 IF I=7 OR I=13 THEN PRINT 900 READ A$:A$=MID$(A$,1,T):PRINT A$; 910 PRINT TAB(T);" "; 920 FOR J=1 TO N 930 X=A(I,J) 940 ID=I:P=J:GOSUB 2600:IF RC=1 THEN X=ASC("M") 950 PRINT CHR$(X);" ";:NEXT J 960 PRINT:NEXT I 970 RETURN 1000 DATA MUSTARD,PLUM,GREEN,PEACOCK,SCARLET,WHITE 1010 DATA KNIFE,CANDLESTICK,REVOLVER,ROPE,LEAD PIPE,WRENCH 1020 DATA HALL,LOUNGE,DINING ROOM,KITCHEN,BALL ROOM,CONSERVATORY 1030 DATA BILLIARD ROOM,LIBRARY,STUDY 2000 REM INITIALIZE 2010 DIM B(50,6) 2020 FOR I2=1 TO 50 2030 B(I2,1)=I2+1 2040 NEXT I2 2050 B(50,1)=0 2060 FC=1 2070 FIRST=0 2080 LAST=0 2090 RETURN 2100 REM 2200 REM ADD A RECORD 2210 B(FC,3)=P 2220 B(FC,4)=A 2230 B(FC,5)=B 2240 B(FC,6)=C 2250 B(FC,2)=LAST 2260 IF LAST<>0 THEN B(LAST,1)=FC 2270 LAST=FC 2280 FC=B(LAST,1) 2290 B(LAST,1)=0 2300 IF FIRST=0 THEN FIRST=LAST 2310 RETURN 2400 REM DELETE REC R 2410 IF B(R,1)<>0 THEN B(B(R,1),2)=B(R,2) 2420 IF B(R,2)<>0 THEN B(B(R,2),1)=B(R,1) 2430 IF R=FIRST THEN FIRST=B(R,1) 2440 IF R=LAST THEN LAST=B(R,2) 2450 B(R,1)=FC 2460 FC=R 2470 RETURN 2500 REM 2600 REM VERIFY IDEM 2610 RC=0 2620 I2=FIRST 2630 IF I2=0 THEN RETURN 2640 IFB(I2,3)=PAND(B(I2,4)=IDORB(I2,5)=ID ORB(I2,6)=ID)THENRC=1 2650 IF RC=1 THEN RETURN 2660 I2=B(I2,1) 2670 GOTO 2630