100 ' PROGRAM THINKER.BAS BY JAMES PHILON 04/85
110 ' CODE IS IN MICROSOFT BASIC, CAN EASILY BE
120 ' ADAPTED TO OTHER DIALECTS AND LANGUAGES.
130 '
140 ' ***DIMENSION THE ARRAYS***
150 U% = 64
160 DIM X$(U%),Y$(U%),YA$(U%)
170 DIM Z%(12)
180 '
190 ' ***INITIALIZE THE WORD ARRAYS***
200 FOR X%=1 TO U%:READ X$(X%):NEXT X%
210 FOR X%=1 TO U%:READ Y$(X%):NEXT X%
220 FOR X%=1 TO U%:READ YA$(X%):NEXT X%
230 FD$="":IF A2%=1 THEN 1230
240 '
250 ' ***OFFER GETTING STARTED HELP***
260 INPUT "   DO YOU WANT HELP (Y/N) ";W$
270 IF W$="" THEN W$="N"
280 IF ASC(LEFT$(W$,1))<91 THEN 300 ELSE PRINT "   CAPS ONLY,PLEASE"
290 GOTO 260
300 IF LEFT$(W$,1)<>"Y" THEN 1220
310 PRINT CHR$(26)
320 PRINT "HERE IS THE THINKER PROCESS:":PRINT
330 PRINT "1-IT ACCEPTS A VERB, A GENERAL NOUN, ANOTHER"
340 PRINT "VERB AND AN OBJECTIVE NOUN."
350 PRINT "2-IT TAKES THESE WORDS AND RETURNS 3 ABSTRACTLY"
360 PRINT "RELATED (TO INPUT) VERBAL EXPRESSIONS."
370 PRINT "3-YOU THEN MAY DISCOVER THINGS BY INTERPRETING"
380 PRINT "THIS OUTPUT. YOU SUPPLY A FEW HELPING WORDS SUCH"
390 PRINT "AS 'FOR', 'WITH', 'BY', 'TO' AND 'ABOUT' AFTER THE"
400 PRINT "VERBS ENDING WITH HYPHENS AND AFTER OTHER VERBS"
410 PRINT "WHEN DESIRED.  YOU RELATE THE CONCEPTS TO WHAT"
420 PRINT "YOU HAD IN MIND WHEN MAKING YOUR INPUT."
430 PRINT "INTERPRETING THE OUTPUT LINE BY LINE SHOULD BE"
440 PRINT "EASIER IF YOU PUT SOME THOUGHT INTO DETERMINING"
450 PRINT "THE WORDING OF YOUR INPUT.  SIMILAR THINKING ON"
460 PRINT "YOUR PART APPLIED TO INTERPRETING THE OUTPUT"
470 PRINT "IN A BACKWARDS DIRECTION MAY THEN PROVE EFFECTIVE."
480 PRINT "WITH PRACTICE AND FAMILIARITY 'THINKER' CAN BE"
490 PRINT "A POWERFUL TOOL FOR SOLVING PROBLEMS."
500 PRINT
510 INPUT "   MORE..(PRESS RETURN)";W$
520 PRINT CHR$(26)
530 PRINT:PRINT
540 PRINT "4-ONCE YOU ARE PRACTICED WITH THINKER AS IT IS,"
550 PRINT "YOU MAY CHANGE THE WORD LISTS TO GET VOCABULARY"
560 PRINT "THAT IS LESS GENERAL AND MORE ORIENTED TO CERTAIN"
570 PRINT "KINDS OF PROBLEMS.  WHEN YOU DEVELOP A WORD GROUP"
580 PRINT "THAT WORKS, YOU CAN SAVE IT FOR LATER USE.  TWO"
590 PRINT "EXAMPLES, ONE BUSINESS AND ONE SCIENTIFIC, ARE"
600 PRINT "INCLUDED ON THIS DISK.."
610 PRINT "(I HAVE CONSTRUCTED OTHER WORD SETS FOR A VARIETY"
620 PRINT "OF APPLICATIONS.  I HAVE ALSO DEVELOPED METHODS"
630 PRINT "FOR MODELLING LEVELS OF INTELLIGENCE, BIASED"
640 PRINT "MENTALITY, PLAUSIBLE LIE OR DISTORTION, PSYCHOLO-"
650 PRINT "GICAL DISORDER AND MENTAL ILLNESS WITHIN THE SCOPE"
660 PRINT "OF CONCEPT PROCESSING.  IF INTERESTED, YOU MAY"
670 PRINT "REACH ME THRU F.O.G. - OR, SEE END OF LISTING.)"
680 PRINT
690 INPUT "   MORE..(PRESS RETURN) ";W$
700 PRINT CHR$(26):PRINT:PRINT
710 PRINT "YOU MAY LOOK AT THE WORD LISTS FROM WHICH TO"
720 PRINT "FORMULATE YOUR INPUT BY LISTING THE DATA "
730 PRINT "STATEMENTS AT THE END OF THIS PROGRAM.  IF YOU"
740 PRINT "HAVE A PRINTER, THEN ANSWER THE NEXT QUESTION 'YES'."
750 PRINT
760 PRINT "INTERPRETING THE WORDS CAN BE DIFFICULT, SO"
770 PRINT "DON'T WORRY IF IT TAKES YOU A WHILE TO CATCH"
780 PRINT "ON.  ALSO, SOMETIMES THE OUTPUTS WILL MAKE GOOD"
790 PRINT "SENSE TO YOU (WHO FORMULATED THE INPUT), BUT MAKE"
800 PRINT "ALMOST NO SENSE TO OTHERS IN THEIR RAW FORM."
810 PRINT
820 PRINT "IT HELPS TO KEEP IN MIND:"
830 PRINT "EACH OUTPUT IS A KIND OF ORACLE, VALUABLE IF"
840 PRINT "A PERSON IS OPENED MINDED ENOUGH TO APPRECIATE"
850 PRINT "IT, BUT OF NO REAL VALUE TO SOMEONE WHO EXPECTS"
860 PRINT "A MESSAGE TO EXPLICITLY STATE SOMETHING IN TERMS"
870 PRINT "THAT MUST BE COMMONLY USED AND IN THEIR COMMONEST"
880 PRINT "FASHION IF THAT MESSAGE IS TO MEAN ANYTHING WORTH"
890 PRINT "EVEN TRYING TO UNDERSTAND.  SOME IMAGINATION IS"
900 PRINT "REQUIRED -- NOT PURE IMAGINATION, HOWEVER."
910 PRINT
920 '
930 ' ***PRINT THE WORD SET***
940 INPUT "   DO YOU WANT TO PRINT THE WORDS (Y/N) ";W$
950 IF LEFT$(W$,1)<>"Y" THEN 1230
960 PRINT "   PRESS RETURN WHEN PRINTER IS READY"
970 INPUT "   OR TYPE ANY KEY + RETURN TO ABORT: ";W$
980 IF W$<>"" THEN 940
990 ST$=STRING$(80,"-")
1000 IF FD$="" THEN LPRINT "   GENERAL VOCABULARY"

     ELSE LPRINT FD$
1010 IF FD$="" THEN LPRINT
1020 IF FD$="" THEN LPRINT "   USE 'FOR', 'WITH', 'BY', 'AS', 'ABOUT' OR"
1030 IF FD$="" THEN LPRINT "   OTHER HELPING WORD(S) AFTER 'VERB' + '-'."
1040 IF FD$="" THEN LPRINT "   USE THESE HELPERS SPARINGLY AFTER OTHER VERBS."
1050 LPRINT:LPRINT " THE VERBS:"
1060 FOR X=1 TO 64
1070   IF X/4=INT(X/4) THEN GOSUB 1090

       ELSE LPRINT X;X$(X);" ";
1080 NEXT X:GOTO 1100
1090 LPRINT X;X$(X);" ";:LPRINT:RETURN
1100 LPRINT:LPRINT ST$:LPRINT:LPRINT "THE GENERAL NOUNS:"
1110 FOR X = 1 TO 64
1120   IF X/4=INT(X/4) THEN GOSUB 1140

       ELSE LPRINT X;Y$(X);" ";
1130 NEXT X:GOTO 1150
1140 LPRINT X;Y$(X);" ";:LPRINT:RETURN
1150 LPRINT:LPRINT ST$:LPRINT:LPRINT "THE OBJECTIVE NOUNS:"
1160 FOR X = 1 TO 64
1170   IF X/4=INT(X/4) THEN GOSUB 1190

       ELSE LPRINT X;YA$(X);" ";
1180 NEXT X:GOTO 1200
1190 LPRINT X;YA$(X);" ";:LPRINT:RETURN
1200 LPRINT:LPRINT
1210 '
1220 ' ***OFFER AND DO VOCABULARY MODIFICATION***
1230 INPUT "   DO YOU WANT TO CHANGE THE WORDS (Y/N) ";W$
1240 IF LEFT$(W$,1) <> "Y" THEN 1910
1250 PRINT CHR$(26)
1260 INPUT "SET VOCABULARY TO DEFAULT (Y/N)";W$
1270 IF LEFT$(W$,1) <> "Y" THEN 1300
1280 FG$=""
1290 RESTORE:A2%=1:GOTO 190
1300 PRINT CHR$(26)
1310 INPUT "REPLACE OLD WORDS WITH NEW (Y/N) ";W$
1320 IF LEFT$(W$,1) <> "Y" THEN 1630
1330 PRINT CHR$(26)
1340 PRINT "  ENTER 1 TO QUIT":PRINT
1350 PRINT "  PRESSING <RETURN> WITHOUT KEYING"
1360 PRINT "  ANYTHING ADVANCES WITHOUT REPLACING"
1370 FOR X%=1 TO 64
1380   PRINT:PRINT:PRINT
1390   PRINT X$(X%)
1400   INPUT "ENTER REPLACEMENT";W1$
1410   IF LEFT$(W1$,1) = "1" THEN 1450
1420   IF W1$ <> "" THEN X$(X%)=W1$
1430   PRINT CHR$(26)
1440 NEXT X%
1450 FOR X%=1 TO 64
1460    PRINT:PRINT:PRINT
1470   PRINT Y$(X%)
1480   INPUT "ENTER REPLACEMENT";W1$
1490   IF LEFT$(W1$,1) = "1" THEN 1530
1500   IF W1$ <> "" THEN Y$(X%)=W1$
1510   PRINT CHR$(26)
1520 NEXT X%
1530 FOR X%=1 TO 64
1540   PRINT:PRINT:PRINT
1550   PRINT YA$(X%)
1560   INPUT "ENTER REPLACEMENT";W1$
1570   IF LEFT$(W1$,1) = "1" THEN 1630
1580   IF W1$ <> "" THEN YA$(X%)=W1$
1590   PRINT CHR$(26)
1600 '
1610 ' ***FILE AND RETRIEVE WORD SETS***
1620 NEXT X%
1630 PRINT CHR$(26)
1640 INPUT "  FILE A NEW VOCABULARY (Y/N) ";W$
1650 IF LEFT$(W$,1) <> "Y" THEN 1750
1660 INPUT "ENTER FILE NAME IN QUOTES: ";FL$
1670 PRINT
1680 PRINT "ENTER A 1 LINE DESCRIPTION OF FILE'S USE"
1690 INPUT FD$
1700 IF FD$="" THEN FD$="USING "+FL$
1710 OPEN "O",1,FL$
1720 PRINT #1,FD$;",";
1730 FOR X%=1 TO 64:PRINT #1, X$(X%);",";Y$(X%);",";YA$(X%);",";:NEXT X%
1740 CLOSE 1
1750 PRINT CHR$(26)
1760 INPUT "  RETRIEVE A VOCABULARY FILE (Y/N) ";W$
1770 IF LEFT$(W$,1) <> "Y" THEN 1910
1780 PRINT CHR$(26)
1790 INPUT " GIVE FILE DIRECTORY (Y/N)";W$
1800 IF LEFT$(W$,1) <> "Y" THEN 1820 
1810 PRINT:PRINT:FILES:PRINT
1820 INPUT "ENTER FILENAME IN QUOTES (OR CODE): ";FL$
1830 IF FL$="BIZ" THEN FL$="BIZWORDS.DAT"
1840 IF FL$="SCI" THEN FL$="SCIWORDS.DAT"
1850 OPEN "I",1,FL$
1860 INPUT #1,FD$
1870 FOR X%=1 TO 64
1880 INPUT #1,X$(X%),Y$(X%),YA$(X%)
1890 NEXT X%
1900 CLOSE 1
1910 PRINT CHR$(26)
1920 '
1930 ' ***ENTER MAIN PROCESSING***
1940 INPUT "   READY TO USE THINKER (Y/N) ";W$
1950 IF LEFT$(W$,1) <> "Y" THEN 940 ELSE 1970
1960 ' ***GET THE INPUT INFORMATION***
1970 GOTO 3040
1980 IF A2% <> 0 THEN 2030
1990 PRINT "  TO GET BACK TO THINKER OPTIONS"
2000 PRINT "  PRESS RETURN WITHOUT KEYING IN"
2010 PRINT "  ANYTHING AT 'PERSPECTIVE NO.' ":PRINT:PRINT
2020 A2%=1
2030 INPUT "ENTER PERSPECTIVE NO. FROM 1 TO 64";F$
2040 IF F$ = "" THEN 940 ELSE F%=VAL(F$)
2050 IF F%<1 OR F%>U% THEN 2030
2060 PRINT
2070 PRINT "VERB, GEN-NOUN, VERB, OBJ-NOUN TO TRY?"
2080 INPUT A$,B$,C$,D$
2090 '
2100 ' ***ALLOW THE FIRST FOUR LETTERS TO SERVE AS INPUT***
2110 I%=0:J%=0:K%=0:L%=0
2120 FOR P%=1 TO U%
2130   IF LEFT$(A$,4)=LEFT$(X$(P%),4) THEN I%=P%
2140   IF LEFT$(B$,4)=LEFT$(Y$(P%),4) THEN J%=P%
2150   IF LEFT$(C$,4)=LEFT$(X$(P%),4) THEN K%=P%
2160   IF LEFT$(D$,4)=LEFT$(YA$(P%),4) THEN L%=P%
2170 NEXT P%
2180 IF I%=0 THEN PRINT A$;" NOT KNOWN"
2190 IF J%=0 THEN PRINT B$;" NOT KNOWN"
2200 IF K%=0 THEN PRINT C$;" NOT KNOWN"
2210 IF L%=0 THEN PRINT D$;" NOT KNOWN"
2220 IF I%=0 OR J%=0 OR K%=0 OR L%=0 THEN 2070
2230 PRINT CHR$(26)
2240 '
2250 ' ***CALCULATE VALUES FOR REPLIES***
2260 I1%=I%:J1%=J%:K1%=K%:L1%=L%
2270 IF J%<=I% THEN J%=J%+F%
2280 Q1%=J%-I%
2290 IF K%<=I% THEN K%=K%+F%
2300 R1%=K%-I%
2310 IF L%<=I% THEN L%=L%+F%
2320 S1%=L%-I%
2330 IF Q1%<=0 THEN Q1%=ABS(Q1%+F%) ELSE 2350
2340 IF Q1%=0 THEN Q1%=F%
2350 IF R1%<=0 THEN R1%=ABS(R1%+F%) ELSE 2370
2360 IF R1%=0 THEN R1%=F%
2370 IF S1%<=0 THEN S1%=ABS(S1%+F%) ELSE 2390
2380 IF S1%=0 THEN S1%=F%
2390 I%=I1%:J%=J1%:K%=K1%:L%=L1%
2400 IF I%<=J% THEN I%=I%+F%
2410 Q2%=I%-J%
2420 IF K%<=J% THEN K%=K%+F%
2430 R2%=K%-J%
2440 IF L%<=J% THEN L%=L%+F%
2450 S2%=L%-J%
2460 IF Q2%<=0 THEN Q2%=ABS(Q2%+F%) ELSE 2480
2470 IF Q2%=0 THEN Q2%=F%
2480 IF R2%<=0 THEN R2%=ABS(R2%+F%) ELSE 2500
2490 IF R2%=0 THEN R2%=F%
2500 IF S2%<=0 THEN S2%=ABS(S2%+F%) ELSE 2520
2510 IF S2%=0 THEN S2%=F%
2520 I%=I1%:J%=J1%:K%=K1%:L%=L1%
2530 IF I%<=K% THEN I%=I%+F%
2540 Q3%=I%-K%
2550 IF J%<=K% THEN J%=J%+F%
2560 R3%=J%-K%
2570 IF L%<=K% THEN L%=L%+F%
2580 S3%=L%-K%
2590 IF Q3%<=0 THEN Q3%=ABS(Q3%+F%) ELSE 2610
2600 IF Q3%=0 THEN Q3%=F%
2610 IF R3%<=0 THEN R3%=ABS(R3%+F%) ELSE 2630
2620 IF R3%=0 THEN R3%=F%
2630 IF S3%<=0 THEN S3%=ABS(S3%+F%) ELSE 2650
2640 IF S3%=0 THEN S3%=F%
2650 I%=I1%:J%=J1%:K%=K1%:L%=L1%
2660 IF I%<=L% THEN I%=I%+F%
2670 Q4%=I%-L%
2680 IF J%<=L% THEN J%=J%+F%
2690 R4%=J%-L%
2700 IF K%<=L% THEN K%=K%+F%
2710 S4%=K%-L%
2720 IF Q4%<=0 THEN Q4%=ABS(Q4%+F%) ELSE 2740
2730 IF Q4%=0 THEN Q4%=F%
2740 IF R4%<=0 THEN R4%=ABS(R4%+F%) ELSE 2760
2750 IF R4%=0 THEN R4%=F%
2760 IF S4%<=0 THEN S4%=ABS(S4%+F%) ELSE 2780
2770 IF S4%=0 THEN S4%=F%
2780 I%=I1%:J%=J1%:K%=K1%:L%=L1%
2790 A6%=0
2800 '
2810 ' ***DISPLAY AND PRINT OUTPUT***
2820 PRINT:IF FD$="" THEN PRINT "   ( USING GENERAL VOCABULARY )" 

            ELSE PRINT "< ";FD$;" >"
2830 PRINT:PRINT "USING PERSPECTIVE ";F%;" ";X$(F%)
2840 PRINT
2850 PRINT X$(I%);" ";Y$(J%);" AND ";X$(K%);" ";YA$(L%);" YIELDS:"
2860 PRINT
2870 PRINT X$(Q1%);" ";Y$(Q2%);" AND ";X$(Q3%);" ";YA$(S2%);"."
2880 PRINT X$(R4%);" ";Y$(R1%);" AND ";X$(S3%);" ";YA$(S4%);"."
2890 PRINT X$(S1%);" ";Y$(R2%);" AND ";X$(R3%);" ";YA$(Q4%);"."
2900 PRINT:PRINT
2910 INPUT "PRINT OUT (Y/N) ";W$
2920 IF LEFT$(W$,1)<>"Y" THEN 3040
2930 LPRINT:IF FD$="" THEN LPRINT "   ( USING GENERAL VOCABULARY )"

             ELSE LPRINT "< ";FD$;" >"
2940 LPRINT:LPRINT "USING PERSPECTIVE ";F%;" ";X$(F%)
2950 LPRINT
2960 LPRINT X$(I%);" ";Y$(J%);" AND ";X$(K%);" ";YA$(L%);" YIELDS:"
2970 LPRINT 
2980 LPRINT X$(Q1%);" ";Y$(Q2%);" AND ";X$(Q3%);" ";YA$(S2%);"."
2990 LPRINT X$(R4%);" ";Y$(R1%);" AND ";X$(S3%);" ";YA$(S4%);"."
3000 LPRINT X$(S1%);" ";Y$(R2%);" AND ";X$(R3%);" ";YA$(Q4%);"."
3010 LPRINT:LPRINT
3020 '
3030 ' ***CLEAR SCREEN/REPEAT PROCESS***
3040 INPUT "   CLEAR SCREEN (N/Y) ";W$
3050 IF LEFT$(W$,1)="N" THEN 3090
3060 FOR X%=1 TO 24:FOR V%=1 TO 30
3070 NEXT V%:PRINT:NEXT X%
3080 PRINT CHR$(26)
3090 GOTO 1980
3100 '
3110 ' ***THE WORD LIST DATA***
3120 ' ( VERBS )
3130 DATA AID,BRING,ACT-,ADAPT
3140 DATA ALTER,ASSIGN-,APPROACH,BEGIN
3150 DATA WAIT-,IMPROVE,USE,GET
3160 DATA WATCH,GIVE,WANT,GO-
3170 DATA DEAL-,SENSE,INVOLVE,MODIFY
3180 DATA DEVISE,SAY,INTRODUCE,MAKE
3190 DATA DESIGN,SOLVE,INFLUENCE,MANAGE
3200 DATA DO,SET-,INFORM-,MOVE
3210 DATA EXTEND,CONSIDER,KEEP,NOTICE
3220 DATA END,CHOOSE,CLEAR-,KNOW
3230 DATA FEEL,TEST,LEAVE,URGE
3240 DATA FIND,THINK,LEARN,SUGGEST
3250 DATA EVOLVE,REALIZE,ORGANIZE,RELATE-
3260 DATA WORK,SHOW,PLAY-,SHARE
3270 DATA HAVE,TAKE,SEE,TRY
3280 DATA DIRECT,QUESTION,CREATE,APPLY
3290 ' ( GENERAL NOUNS )
3300 DATA HELP,CONCERN,ACTIVITY,ADAPTATION
3310 DATA CHANGE,ASSIGNMENT,STRATEGY,STARTING
3320 DATA PAUSE,GROWTH,USEFULNESS,ACHIEVEMENT
3330 DATA OBSERVATION,SOURCE,REQUIREMENT,PROGRESS
3340 DATA LOVE,PERCEPTION,INVOLVEMENT,MODIFICATION
3350 DATA INGENUITY,ASCERTION,INTRODUCTION,PRODUCTION
3360 DATA DETERMINATION,SOLUTION,MOTIVATION,MANAGEMENT
3370 DATA DEDICATION,SITUATION,INFORMATION,MOVEMENT
3380 DATA ENDEAVOR,CONSIDERATION,RECALL,SIGNIFICANCE
3390 DATA ENDING,DECISION,CLARIFICATION,KNOWLEDGE
3400 DATA ENJOYMENT,EVALUATION,DEPARTURE,ARGUMENT
3410 DATA DISCOVERY,THEORY,MENTALITY,SUGGESTION
3420 DATA EVOLUTION,REALIZATION,ORGANIZATION,RELATIONSHIP
3430 DATA OPERATION,DEMONSTRATION,ROLE,AGREEMENT
3440 DATA POTENTIAL,INPUT,PERSON,ATTEMPT
3450 DATA REGULATION,INQUIRY,CREATION,APPLICATION
3460 ' ( OBJECTIVE NOUNS )
3470 DATA ADVANTAGE,SUPPLY,ACTIVE-PART,FUNCTION
3480 DATA ALTERNATIVE,THING,TACTIC,GOAL
3490 DATA DELAY,GAIN,TOOL,COLLECTION
3500 DATA OCCURENCE,NATURE,PROPERTY,EXCURSION
3510 DATA ARRANGEMENT,PRESENCE,SYSTEM,MECHANISM
3520 DATA DEVICE,EXPRESSION,COMPLEXITY,PRODUCT
3530 DATA STRUCTURE,PROBLEM,IMPETUS,RESOURCE
3540 DATA TASK,CIRCUMSTANCE,MESSAGE,OBJECT
3550 DATA EXTENSION,CONDITION,STORAGE,PECULIARITY
3560 DATA RESULT,POSSIBILITY,AREA,SIMILARITY
3570 DATA ORIENTATION,MEASUREMENT,POSITION,LIMITATION
3580 DATA LOCATION,METHOD,TECHNIQUE,CAPABILITY
3590 DATA KIND,BENEFIT,HUMAN-BEING,CHARACTERISTIC
3600 DATA FACILITY,APPEARANCE,GAME,COMMONALITY
3610 DATA RESPONSIVENESS,RECEIVER,SUBJECT,SENDER
3620 DATA PROCESS,CHANNEL,BELIEF,LOGIC
3630 '
3640 ' THINKER.BAS IS COPYRIGHT 1985 BY
3650 ' JAMES J PHILON.  ALL RIGHTS ARE RESERVED.
3660 ' THINKER.BAS IS AVAILABLE TO MEMBERS OF THE
3670 ' FIRST OSBORNE GROUP FOR PERSONAL USE, BUT NOT
3680 ' FOR RESALE OR INCLUSION IN OTHER PROGRAMS TO SELL,
3690 ' BY PERMISSION.  TO DISCUSS OTHER POSSIBLE
3700 ' ARRANGEMENTS PLEASE CALL ME AT (317)-362-1923.
3710 '
3720 END
L,
3690 ' BY PERMISSION.  TO DISCUSS OTHER POSSIBLE
3700 ' ARRANGEMENTS PLEASE CALL ME AT (317)-362-1923.
3710 '
