10 REM PROGRAM MODIFIED FOR MODEL 102 20 REM BY FRANK KIENAST 30 REM NOVEMBER, 1986 40 REM COMPUSERVE USER [73327,3073] 105 CLEAR 4000 110 DIM A$(200) 210 CLS 230 PRINT" 1 LOAD A FILE" 240 PRINT" 2 CREATE A NEW FILE" 250 PRINT" 3 INTERACTIVE SESSION" 260 PRINT" 4 LIST KNOWN OBJECTS" 270 PRINT" 5 SAVE THE PRESENT FILE" 280 PRINT" 6 STOP" 290 PRINT 320 PRINT"ENTER CHOICE:"; 325 N5$=INKEY$:IF N5$="" THEN 325 330 IF N5$<"1" OR N5$>"6" THEN 325 340 LET N5=VAL(N5$) 355 IF A$(0)="" AND N5>2 AND N5<>6 THEN 325 380 ON N5 GOTO 390,510,650,1220,1320,1420 390 REM Routine to read in file 400 CLS:PRINT@120,"FILENAME"; 405 INPUT F$ 410 IF RIGHT$(F$,3)<>".DO" THEN F$=F$+".DO" 420 OPEN F$ FOR INPUT AS 1 430 REM Read in data 440 INPUT#1, Z$ 450 INPUT#1,A$(0) 460 FOR I=1 TO VAL(A$(0))-1 470 INPUT#1,A$(I) 480 NEXT I 490 CLOSE#1 500 GOTO 210 510 REM Routine to create a new file 520 A$(0)="4" 530 CLS:PRINT:INPUT"CATEGORY";Z$ 550 PRINT:PRINT"ENTER AN INITIAL QUESTION" 555 INPUT Y$ 570 A$(1)="/Q"+Y$+"/Y2/N3/" 580 INPUT"ANSWER FOR YES RESPONSE";Y$ 600 A$(2)="/A"+Y$ 610 INPUT"ANSWER FOR A NO RESPONSE";Y$ 630 A$(3)="/A"+Y$ 640 GOTO 210 650 REM Main interactive routine 660 CLS:PRINT@120,"ARE YOU THINKING OF A ";Z$;"?" 680 A$=INKEY$:IF A$="" THEN 680 690 IF A$<>"Y" THEN 210 710 LET K=1 720 GOSUB 980 730 IF LEN(A$(K))=0 THEN 1420 740 REM If another question, ask it 745 CLS 750 IF LEFT$(A$(K),2)="/Q" THEN 720 760 CLS:PRINT@120,"IS IT A ";RIGHT$(A$(K),LEN(A$(K))-2);"?" 770 A$=INKEY$:IF A$="" THEN 770 780 IF A$<>"Y" AND A$<>"N" THEN 770 790 IF A$="Y" THEN 650 800 CLS:PRINT@120,"THE ";Z$;" YOU WERE THINKING" 805 PRINT"OF WAS A"; 810 INPUT V$ 820 CLS:PRINT:PRINT"PLEASE ENTER A QUESTION THAT WOULD" 825 PRINT"DISTINGUISH A ";V$ 830 PRINT "FROM A ";RIGHT$(A$(K),LEN(A$(K))-2) 840 INPUT X$ 850 PRINT"FOR A ";V$ 855 PRINT"THE ANSWER WOULD BE?" 860 A$=INKEY$:IF A$="" THEN 860 870 IF A$<>"Y" AND A$<>"N" THEN 860 890 REM Save new question and response 900 IF A$="Y" THEN B$="N" 910 IF A$="N" THEN B$="Y" 920 Z1=VAL(A$(0)) 930 A$(0)=STR$(Z1+2):A$(0)=RIGHT$(A$(0),LEN(A$(0))-1) 940 A$(Z1)=A$(K) 944 T1$=STR$(Z1+1):T1$=RIGHT$(T1$,LEN(T1$)-1) 946 T2$=STR$(Z1):T2$=RIGHT$(T2$,LEN(T2$)-1) 950 A$(Z1+1)="/A"+V$ 960 A$(K)="/Q"+X$+"/"+A$+T1$+"/"+B$+T2$+"/" 970 GOTO 650 980 REM Subroutine to print questions 990 Q$=A$(K) 1000 Y$="" 1010 FOR Z=3 TO LEN(Q$) 1020 IF MID$(Q$,Z,1)="/" THEN 1050 1030 Y$=Y$+MID$(Q$,Z,1) 1040 NEXT Z 1050 CLS:PRINT@120,Y$;"?" 1060 C$=INKEY$:IF C$=""THEN 1060 1070 IF C$<>"Y" AND C$<>"N" THEN 1060 1090 REM Search for next question 1100 T$="/"+C$ 1110 FOR X=3 TO LEN(Q$) 1120 IF MID$(Q$,X,2)=T$ THEN 1150 1130 NEXT X 1140 STOP 1150 FOR Y=X+1 TO LEN(Q$) 1160 IF MID$(Q$,Y,1)="/" THEN 1200 1170 NEXT Y 1180 STOP 1190 REM Set K=proper subscript for next question 1200 K=VAL(MID$(Q$,X+2,Y-X-2)) 1210 RETURN 1220 REM Routine to list known 1260 Y$=Z$+"S ALREADY KNOWN:" 1270 CLS:PRINT Y$ 1275 PP=2 1280 FOR I=1 TO VAL(A$(0))-1 1282 IF PP=0 OR PP/14<>INT(PP/14) THEN 1290 1284 ZZ$=INKEY$:IF ZZ$="" THEN 1284 1286 PP=0 1290 IF LEFT$(A$(I),2)="/A" THEN PRINT RIGHT$(A$(I),LEN(A$(I))-2),:PP=PP+1 1300 NEXT I 1305 ZZ$=INKEY$:IF ZZ$="" THEN 1305 1310 GOTO 210 1320 REM Routine to save file 1330 CLS:PRINT@120,"OUTPUT FILENAME"; 1340 INPUT G$ 1345 IF RIGHT$(G$,3)<>".DO" THEN G$=G$+".DO" 1350 OPEN G$ FOR OUTPUT AS 1 1360 PRINT#1,Z$ 1370 FOR I=0 TO VAL(A$(0))-1 1380 PRINT#1,A$(I) 1390 NEXT I 1400 CLOSE#1 1410 GOTO 210 1420 MENU 9999 END