Post by Deleted on Jul 12, 2021 3:27:59 GMT -5
hello
i've modified the old "creative computing" ELIZA code to run under BBC BASIC (make sure CAPS LOCK is ON!)
i've modified the old "creative computing" ELIZA code to run under BBC BASIC (make sure CAPS LOCK is ON!)
10 rem KEY OFF: CLS
20 mode 0
30 cls
40 print tab(16); "**************************"
50 print tab(26); "ELIZA"
60 print tab(20); "CREATIVE COMPUTING"
70 print tab(18); "MORRISTOWN, NEW JERSEY": print
80 print tab(19); "ADAPTED FOR IBM PC BY"
90 print tab(20); "PATRICIA DANIELSON AND PAUL HASHFIELD"
100 print tab(21); "CREATED 1981 - MODIFIED BY RON77 2021"
110 print: print tab(16); "PLEASE DON'T USE COMMAS OR PERIODS IN YOUR INPUTS": print
120 print tab(16); "*************************"
130 print: print: print
140 rem*****INITIALIZATION**********
150 I$ = "" P$="" C$="" F$=""
160 dim S%(36), R%(36), N%(36)
170 dim KEYWORD$(36), WORDIN$(7), WORDOUT$(7), REPLIES$(112)
180 N1% = 36: N2% = 14: N3% = 112
190 for X% = 1 to N1%: read KEYWORD$(X%): next X%
200 for X% = 1 to N2% / 2:read WORDIN$(X%):read WORDOUT$(X%):next X%
210 for X% = 1 to N3%:read REPLIES$(X%):next X%
220 for X% = 1 to N1%
230 read S%(X%), L%:R%(X%) = S%(X%):N%(X%) = S%(X%) + L% - 1
240 next X%
250 print "HI! I'M ELIZA. WHAT'S YOUR PROBLEM?"
260 rem ***********************************
270 rem *******USER INPUT SECTION**********
280 rem ***********************************
290 input I$
300 I$ = " " + I$ + " "
310 rem GET RID OF APOSTROPHES
320 for L = 1 to len(I$)
330 rem IF MID$(I$,L,1)="'"THEN I$=LEFT$(I$,L-1)+RIGHT$(I$,LEN(I$)-L):GOTO 230
340 if L + 4 > len(I$) then 380
350 if mid$(I$, L, 4) <> "SHUT" then 380
360 print "O.K. IF YOU FEEL THAT WAY I'LL SHUT UP...."
370 end
380 next L
390 if I$ = P$ then print "PLEASE DON'T REPEAT YOURSELF!": goto 260
400 rem ***********************************
410 rem ********FIND KEYWORD IN I$*********
420 rem ***********************************
430 for K% = 1 to N1%
440 for L% = 1 to len(I$) - len(KEYWORD$(K%)) + 1
450 if mid$(I$, L%, len(KEYWORD$(K%))) <> KEYWORD$(K%) then 490
460 if K% <> 13 then 480
470 if mid$(I$, L%, len(KEYWORD$(29))) = KEYWORD$(29) then K% = 29
480 F$ = KEYWORD$(K%): goto 530
490 next L%
500 next K%
510 K% = 36: goto 750: rem WE DIDN'T FIND ANY KEYWORDS
520 rem ******************************************
530 rem **TAKE PART OF STRING AND CONJUGATE IT****
540 rem **USING THE LIST OF STRINGS TO BE SWAPPED*
550 rem ******************************************
560 C$ = " " + right$(I$, len(I$) - len(F$) - L% + 1) + " "
570 for X% = 1 to N2% / 2
580 for L% = 1 to len(C$)
590 if L% + len(WORDIN$(X%)) > len(C$) then 640
600 if mid$(C$, L%, len(WORDIN$(X%))) <> WORDIN$(X%) then 640
610 C$ = left$(C$, L% - 1) + WORDOUT$(X%) + right$(C$, len(C$) - L% - len(WORDIN$(X%)) + 1)
620 L% = L% + len(WORDOUT$(X%))
630 goto 680
640 if L% + len(WORDOUT$(X%)) > len(C$) then 680
650 if mid$(C$, L%, len(WORDOUT$(X%))) <> WORDOUT$(X%) then 680
660 C$ = left$(C$, L% - 1) + WORDIN$(X%) + right$(C$, len(C$) - L% - len(WORDOUT$(X%)) + 1)
670 L% = L% + len(WORDIN$(X%))
680 next L%
690 next X%
700 if mid$(C$, 2, 1) = " " then C$ = right$(C$, len(C$) - 1): rem ONLY 1 SPACE
710 for L% = 1 to len(C$)
720 if mid$(C$, L%, 1) = "!" then C$ = left$(C$, L% - 1) + right$(C$, len(C$) - L%): goto 720
730 next L%
740 rem **********************************************
750 rem **NOW USING THE KEYWORD NUMBER (K) GET REPLY**
760 rem **********************************************
770 F$ = REPLIES$(R%(K%))
780 R%(K%) = R%(K%) + 1: if R%(K%) > N%(K%) then R%(K%) = S%(K%)
790 if right$(F$, 1) <> "*" then print F$: P$ = I$: goto 260
800 if C$ <> " " then 830
810 print "YOU WILL HAVE TO ELABORATE MORE FOR ME TO HELP YOU"
820 goto 260
830 print left$(F$, len(F$) - 1); C$
840 P$ = I$: goto 260
850 rem *******************************
860 rem *****PROGRAM DATA FOLLOWS******
870 rem *******************************
880 rem *********KEYWORDS**************
890 rem *******************************
900 data "CAN YOU ","CAN I ","YOU ARE ","YOU'RE ","I DON'T ","I FEEL "
910 data "WHY DON'T YOU ","WHY CAN'T I ","ARE YOU ","I CAN'T ","I AM ","I'M "
920 data "YOU ","I WANT ","WHAT ","HOW ","WHO ","WHERE ","WHEN ","WHY "
930 data "NAME ","CAUSE ","SORRY ","DREAM ","HELLO ","HI ","MAYBE "
940 data "NO","YOUR ","ALWAYS ","THINK ","ALIKE ","YES ","FRIEND "
950 data "COMPUTER","NOKEYFOUND"
960 rem *********************************
970 rem ***STRING DATA FOR CONJUGATIONS**
980 rem *********************************
990 data " ARE "," AM "," WERE "," WAS "," YOU "," I "," YOUR"," MY "
1000 data " I'VE "," YOU'VE "," I'M "," YOU'RE "
1010 data " ME "," YOU "
1020 rem ******************************
1030 rem *********REPLIES**************
1040 rem ******************************
1050 data "DON'T YOU BELIEVE THAT I CAN*"
1060 data "PERHAPS YOU WOULD LIKE TO BE LIKE ME*"
1070 data "YOU WANT ME TO BE ABLE TO*"
1080 data "PERHAPS YOU DON'T WANT TO*"
1090 data "DO YOU WANT TO BE ABLE TO*"
1100 data "WHAT MAKES YOU THINK I AM*"
1110 data "DOES IT PLEASE YOU TO BELIEVE I AM*"
1120 data "PERHAPS YOU WOULD LIKE TO BE*"
1130 data "DO YOU SOMETIMES WISH YOU WERE*"
1140 data "DON'T YOU REALLY*"
1150 data "WHY DON'T YOU*"
1160 data "DO YOU WISH TO BE ABLE TO*"
1170 data "DOES THAT TROUBLE YOU*"
1180 data "TELL ME MORE ABOUT SUCH FEELINGS."
1190 data "DO YOU OFTEN FEEL*"
1200 data "DO YOU ENJOY FEELING*"
1210 data "DO YOU REALLY BELIEVE I DON'T*"
1220 data "PERHAPS IN GOOD TIME I WILL*"
1230 data "DO YOU WANT ME TO*"
1240 data "DO YOU THINK YOU SHOULD BE ABLE TO*"
1250 data "WHY CAN'T YOU*"
1260 data "WHY ARE YOU INTERESTED IN WHETHER OR NOT I AM*"
1270 data "WOULD YOU PREFER IF I WERE NOT*"
1280 data "PERHAPS IN YOUR FANTASIES I AM*"
1290 data "HOW DO YOU KNOW YOU CAN'T*"
1300 data "HAVE YOU TRIED?"
1310 data "PERHAPS YOU CAN NOW*"
1320 data "DID YOU COME TO ME BECAUSE YOU ARE*"
1330 data "HOW LONG HAVE YOU BEEN*"
1340 data "DO YOU BELIEVE IT IS NORMAL TO BE*"
1350 data "DO YOU ENJOY BEING*"
1360 data "WE WERE DISCUSSING YOU--NOT ME."
1370 data "OH, I*"
1380 data "YOU'RE NOT REALLY TALKING ABOUT ME, ARE YOU?"
1390 data "WHAT WOULD IT MEAN TO YOU IF YOU GOT*"
1400 data "WHY DO YOU WANT*"
1410 data "SUPPOSE YOU SOON GOT*"
1420 data "WHAT IF YOU NEVER GOT*"
1430 data "I SOMETIMES ALSO WANT*"
1440 data "WHY DO YOU ASK?"
1450 data "DOES THAT QUESTION INTEREST YOU?"
1460 data "WHAT ANSWER WOULD PLEASE YOU THE MOST?"
1470 data "WHAT DO YOU THINK?"
1480 data "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?"
1490 data "WHAT IS IT THAT YOU REALLY WANT TO KNOW?"
1500 data "HAVE YOU ASKED ANYONE ELSE?"
1510 data "HAVE YOU ASKED SUCH QUESTIONS BEFORE?"
1520 data "WHAT ELSE COMES TO MIND WHEN YOU ASK THAT?"
1530 data "NAMES DON'T INTEREST ME."
1540 data "I DON'T CARE ABOUT NAMES --PLEASE GO ON."
1550 data "IS THAT THE REAL REASON?"
1560 data "DON'T ANY OTHER REASONS COME TO MIND?"
1570 data "DOES THAT REASON EXPLAIN ANYTHING ELSE?"
1580 data "WHAT OTHER REASONS MIGHT THERE BE?"
1590 data "PLEASE DON'T APOLOGIZE!"
1600 data "APOLOGIES ARE NOT NECESSARY."
1610 data "WHAT FEELINGS DO YOU HAVE WHEN YOU APOLOGIZE?"
1620 data "DON'T BE SO DEFENSIVE!"
1630 data "WHAT DOES THAT DREAM SUGGEST TO YOU?"
1640 data "DO YOU DREAM OFTEN?"
1650 data "WHAT PERSONS APPEAR IN YOUR DREAMS?"
1660 data "ARE YOU DISTURBED BY YOUR DREAMS?"
1670 data "HOW DO YOU DO ...PLEASE STATE YOUR PROBLEM."
1680 data "YOU DON'T SEEM QUITE CERTAIN."
1690 data "WHY THE UNCERTAIN TONE?"
1700 data "CAN'T YOU BE MORE POSITIVE?"
1710 data "YOU AREN'T SURE?"
1720 data "DON'T YOU KNOW?"
1730 data "ARE YOU SAYING NO JUST TO BE NEGATIVE?"
1740 data "YOU ARE BEING A BIT NEGATIVE."
1750 data "WHY NOT?"
1760 data "ARE YOU SURE?"
1770 data "WHY NO?"
1780 data "WHY ARE YOU CONCERNED ABOUT MY*"
1790 data "WHAT ABOUT YOUR OWN*"
1800 data "CAN YOU THINK OF A SPECIFIC EXAMPLE?"
1810 data "WHEN?"
1820 data "WHAT ARE YOU THINKING OF?"
1830 data "REALLY, ALWAYS?"
1840 data "DO YOU REALLY THINK SO?"
1850 data "BUT YOU ARE NOT SURE YOU*"
1860 data "DO YOU DOUBT YOU*"
1870 data "IN WHAT WAY?"
1880 data "WHAT RESEMBLANCE DO YOU SEE?"
1890 data "WHAT DOES THE SIMILARITY SUGGEST TO YOU?"
1900 data "WHAT OTHER CONNECTIONS DO YOU SEE?"
1910 data "COULD THERE REALLY BE SOME CONNECTION?"
1920 data "HOW?"
1930 data "YOU SEEM QUITE POSITIVE."
1940 data "ARE YOU SURE?"
1950 data "I SEE."
1960 data "I UNDERSTAND."
1970 data "WHY DO YOU BRING UP THE TOPIC OF FRIENDS?"
1980 data "DO YOUR FRIENDS WORRY YOU?"
1990 data "DO YOUR FRIENDS PICK ON YOU?"
2000 data "ARE YOU SURE YOU HAVE ANY FRIENDS?"
2010 data "DO YOU IMPOSE ON YOUR FRIENDS?"
2020 data "PERHAPS YOUR LOVE FOR FRIENDS WORRIES YOU."
2030 data "DO COMPUTERS WORRY YOU?"
2040 data "ARE YOU TALKING ABOUT ME IN PARTICULAR?"
2050 data "ARE YOU FRIGHTENED BY MACHINES?"
2060 data "WHY DO YOU MENTION COMPUTERS?"
2070 data "WHAT DO YOU THINK MACHINES HAVE TO DO WITH YOUR PROBLEM?"
2080 data "DON'T YOU THINK COMPUTERS CAN HELP PEOPLE?"
2090 data "WHAT IS IT ABOUT MACHINES THAT WORRIES YOU?"
2100 data "SAY, DO YOU HAVE ANY PSYCHOLOGICAL PROBLEMS?"
2110 data "WHAT DOES THAT SUGGEST TO YOU?"
2120 data "I SEE."
2130 data "I'M NOT SURE I UNDERSTAND YOU FULLY."
2140 data "COME COME ELUCIDATE YOUR THOUGHTS."
2150 data "CAN YOU ELABORATE ON THAT?"
2160 data "THAT IS QUITE INTERESTING."
2170 rem *************************
2180 rem *****DATA FOR FINDING RIGHT REPLIES
2190 rem *************************
2200 data 1,3,4,2,6,4,6,4,10,4,14,3,17,3,20,2,22,3,25,3
2210 data 28,4,28,4,32,3,35,5,40,9,40,9,40,9,40,9,40,9,40,9
2220 data 49,2,51,4,55,4,59,4,63,1,63,1,64,5,69,5,74,2,76,4
2230 data 80,3,83,7,90,3,93,6,99,7,106,6
2240