|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 42240 (0xa500) Types: TextFile Names: »ANALIZA2.BAS«
└─⟦9f1fc2afd⟧ Bits:30005939 Spil: Pacman, Invaders, Kong til RC700 └─ ⟦this⟧ »ANALIZA2.BAS«
REM ***********************************************Ø * ANALIZA2 Copyright 4/16/81 J.M. Holland *Ø * Version 1.17 *Ø * Please send corrections to: *Ø * John M. Holland *Ø * Consultant *Ø * Rt 1, Box 175 *Ø * Shawsville, Va. 24162 *Ø *********************************************** REM REMOVE THIS LINE TO ACTIVATE %CHAIN FOR .INT VERSION Ø %CHAIN 8,18349,0,960 COMMON INITIALIZE%,GAB$(1),FILENAME$,CYCLE%,Ø IRRITABLE%,QUES%,MAX%,B$,FAIL%,EROTIC%,VIOLENT% REM REMOVE THIS LINE TO ACTIVATE POKE FOR .INT VERSION Ø 1 POKE 272,0 REM THIS SETS INFINITE CONSOLE WIDTH REM ------------------------------------------------------- 10 IF END # 1 THEN 269 OPEN "ANALIZA.CON" AS 1 IF END # 1 THEN 270 DIM GAB$(5) REM GAB$(1)=FROM PERSONAL FILE + GENERAL REM GAB$(2)=FROM LAST PATIENT REM GAB$(3)=FROM THIS PATIENT REM GAB$(4)=FROM 3 OVERFLOW OR HOLD$ REM GAB$(5)=TO FILE FOR CNTR%=1 TO 5 :GAB$(CNTR%)="":NEXT CNTR% 265 READ #1; THRESHOLD% DIM RATE%(25) REM CRACKER RATES OF AGEING FOR CNTR%=1 TO 25 READ #1; RATE%(CNTR%) REM FROM CONSTANT.DAT NEXT CNTR% DIM QUAL%(25) REM CRACKER QUALITY FACTORS FOR CNTR%=1 TO 25 READ #1; QUAL%(CNTR%) REM FROM CONSTANT.DAT NEXT CNTR% DIM AGE%(25) REM CRACKER AGES DIM SCORE%(25) REM CRACKER SCORES DIM FOCUS%(3) REM HE SHE THEY FOCUS DIM FLAG%(25) REM CRACKER ALTERNATOR FLAGS FOR CNTR%=1 TO 25 FLAG%(CNTR%)=0 NEXT CNTR% READ #1;UR$ READ #1;RU$ READ #1;CONT$ READ #1;ENOUN$ READ #1;EMOT$ EMOT$=EMOT$+ENOUN$ READ #1;SCARE$ READ #1;SIGNIF$ READ #1;NORMAL$ READ #1;CERT$ READ #1;AFIRM$ AFIRM$=AFIRM$+CERT$ READ #1;NEG$ READ #1;FEMALE$ READ #1;MALE$ READ #1;GROUP$ READ #1;BAD$ REM ---------- PRINT HEADING HERE ------------------- IF INITIALIZE%=1 THEN CLOSE 1:GOTO 334 268 READ #1;R$ PRINT R$ GOTO 268 269 PRINT "NO CON FILE" STOP 270 CLOSE 1 REM RELEASE CONSTANT FILE SPACE SUBJ$=" " 320 INPUT MAX% 334 RANDOMIZE DIM N%(100) REM FRAGMENT POINTERS FOR CNTR%=1 TO 100 N%(CNTR%)=INT%(RND*3.) REM RANDOMIZE ARRAY NEXT CNTR% N%(99)=1:N%(5)=1:N%(14)=1: REM MUST BE SAME EACH TIME RANDOM%=INT%(RND*4.) 350 PRINT:PRINT"I AM ANALIZA" 360 IF END # 1 THEN 367 OPEN "PATIENTS.LST" AS 1 IF END # 1 THEN 365 READ #1 ;M$ 365 CLOSE 1 REM RELEASE SPACE 367 PRINT:PRINT"WHAT IS YOUR NAME?" 370 GOSUB 3640 REM INPUTS R$ GOSUB 9200 REM COUNT WORDS IF LEN(R$)<3 THEN 367 IF WORDS%>2 THEN PRINT"YOUR FIRST NAME?":GOTO 370 IF WORDS%=2 THEN Ø B$=MID$(R$,2,MATCH(" ",R$,2)-1):Ø D$=MID$(R$,MATCH(" ",R$,2)+1,LEN(R$)):GOTO 385 IF WORDS%<>1 THEN 367 B$=MID$(R$,2,LEN(R$)) 380 PRINT:PRINT"YOUR LAST NAME?" GOSUB 3640 GOSUB 9200 IF LEN(R$)<3 THEN 380 IF WORDS%<>1 THEN 380 D$=MID$(R$,2,LEN(R$)) 385 FILENAME$=LEFT$(B$,4)+LEFT$(D$,4)+".DAT" 387 T%=MATCH(" ",FILENAME$,1) REM REMOVE SPACES IF T%>0 THEN Ø FILENAME$=LEFT$(FILENAME$,T%-1)+Ø MID$(FILENAME$,T%+1,LEN(FILENAME$)):GOTO 387 T%=MATCH("*"+B$+"*/+*"+D$,M$,1) IF T%=0 THEN 400 REM NOT FOUND REM STRIP NAME FROM M$ T3%=MATCH("*",M$,T%+LEN(B$)+LEN(D$)+3) IF T3%>0 THEN Ø REM NOT LAST ENTRY IN M$ M$=LEFT$(M$,T%-1)+MID$(M$,T3%,LEN(M$)) Ø ELSE M$=LEFT$(M$,T%-1) REM STRIPS LEFT(*) AND LEAVES RIGHT ONE PRINT"WELCOME BACK "+B$+"...LET ME GET YOUR FILE." PRINT GOTO 500 400 PRINT B$+D$+"...RIGHT?" REM VERIFY NAME PRINT GOSUB 2395 REM GET YES/NO IF Y%=0 THEN 367 500 A$=M$+"*"+B$+"*/+*"+D$ REM PUT NEW NAME AT END AND STORE 502 CNTR%=0:T%=1 REM <<<PURGE OF FILES LOOPS HERE 505 IF LEN(A$)>220 THEN 507 REM DELETE DUE TO LIST FULL T%=MATCH("*/+*",A$,T%+1) IF T%>0 THEN CNTR%=CNTR%+1 :GOTO 505 IF CNTR%<MAX% THEN 520 REM <<<NO NEED TO DELETE 507 T%=MATCH("*",A$,1)+1 T2%=MATCH("*/+*",A$,T%+1) T3%=MATCH("*",A$,T2%+4) C$=MID$(A$,T%,T2%-T%) D$=MID$(A$,T2%+4,T3%-T2%-5) PRINT"I AM DISCARDING "+C$+D$+"'S FILE!" A$=MID$(A$,T3%,LEN(A$)) C$=LEFT$(C$,4)+LEFT$(D$,4)+".DAT" 510 T%=MATCH(" ",C$,1) REM REMOVE SPACES IF T%>0 THEN Ø C$=LEFT$(C$,T%-1)+MID$(C$,T%+1,LEN(C$)):GOTO 510 IF END # 1 THEN 515 OPEN C$ AS 1 DELETE 1 515 GOTO 502 REM LOOP TO PURGE MORE FILES REM REWRITE PATIENT DIRECTORY 520 CREATE "PATIENTS.LST" AS 1 PRINT # 1;A$ CLOSE 1 IF INITIALIZE%=0 THEN 526 REM DONT GOSSIP IF 1ST PATIENT REM //// GET LAST PATIENT FILE //// IF END # 1 THEN 526 REM NO FILE SO DONT CLOSE OPEN "LASTPAT.DAT" AS 1 IF END # 1 THEN 524 REM CLOSE IT READ #1;GAB$(2) REM GET FILENAME IF GAB$(2)=FILENAME$ THEN GAB$(2)="" :GOTO 524 REM SAME READ #1;GAB$(2) REM GET ACTUAL STRING 524 CLOSE 1 526 REM END OF OLD PATIENT FETCH INITIALIZE%=1 REM FILEOPEN%, PERSONAL%, AND GENERAL% WILL BE Ø ZERO AT THIS POINT SINCE THEY HAVENT BEEN USED. P%=1 REM START WITH GAB$(1) 528 GOSUB 1550 REM LOAD ENVIRONMENT & PRINT INTRO REM RESET COMMON AGES AND PROFILE STORAGE 800 SUBJ$=" " FOR CNTR%=1 TO 25 AGE%(CNTR%)=25 NEXT CNTR% 805 COGNITION%=860 REM SHORT TERM COGNITION MIN%=THRESHOLD% 810 REM <<<<<<<<< M A I N L O O P <<<<<<<<<<<< IF BECAUSE%=CYCLE% THEN BECAUSE$="" REM AGE DOWN PRONOUNS THAT ARE ALREADY TRAPPED ITAGE%=ITAGE%-1 IF ITAGE%<1 THEN IT$=" it " HEAGE%=HEAGE%-1 IF HEAGE%<1 THEN HE$=" he ":HIM$=" him " SHEAGE%=SHEAGE%-1 IF SHEAGE%<1 THEN SHE$=" she ":HER$=" her " THEYAGE%=THEYAGE%-1 IF THEYAGE%<1 THEN THEY$=" they ":THEM$=" them " REM SHUFFLE OVERFLOWING GAB STRINGS 814 IF LEN(GAB$(4))<3 THEN GAB$(4)=GAB$(3):GAB$(3)="" REM TRIM DOWN COLLECTION GAB STRINGS IF LEN(GAB$(3))<150 THEN 815 Z2%=MATCH("*P",GAB$(3),3) IF Z2%=0 THEN Z2%=LEN(GAB$(3)) GAB$(3)=MID$(GAB$(3),Z2%,LEN(GAB$(3))) 815 GOSUB 3640 REM GET R$ IF MATCH("BECAUSE",R$,1)>0 THEN 816 IF REASON%>CYCLE% THEN R$=" BECAUSE"+R$ 816 IF TRAPAGE%<1 THEN 828 TRAPAGE%=TRAPAGE%-1 REM TRAP HERE<<< T$=" IT * THEY * THEM * HE * HIM * SHE * HER " IF MATCH(CAND$,T$,1)>0 THEN 822 REM IGNORE PRONOUN IN CAND$ IF TRAP$=" ALL " THEN Ø TRAP$=T$ IF TRAP$=" PERSON " THEN Ø TRAP$=" HE * SHE * HIM * HER " IF TRAP$=" HE " THEN TRAP$=" HE * HIM " IF TRAP$=" SHE " THEN TRAP$=" SHE * HER " IF TRAP$=" THEY " THEN TRAP$=" THEY * THEM " T$=TRAP$ GOSUB 2470 IF T%=0 THEN 828 REM NOT TRAPPED IF TFRAG$=" IT" THEN Ø IT$=CAND$:ITAGE%=1:GOTO 822 IF TFRAG$=" THEY" THEN 817 IF TFRAG$<>" THEM" THEN 818 817 THEY$=CAND$:THEM$=CAND$:THEYAGE%=8:PLURAL$=CAND$:GOTO 822 818 IF TFRAG$=" HE" THEN 819 IF TFRAG$<>" HIM" THEN 820 819 HE$=CAND$:HIM$=CAND$:HEAGE%=10:GOTO 821 820 SHE$=CAND$:HER$=CAND$:SHEAGE%=10 821 VICTIM$=CAND$ 822 TRAPAGE%=0 REM CONVERT PRONOUN STRINGS TO PRONOUNS FOR Ø IDENTIFICATION BY ALGORITHMS AND FOR FOCUS CALC. 828 T$=HE$+"*"+SHE$+"*"+THEY$ 829 TREF%= MATCH("your",T$,1) IF TREF%>0 THEN Ø T$=MID$(T$,1,TREF%-1)+"MY"+MID$(T$,TREF%+4,255):GOTO 829 F$=" he * she * they " GOSUB 2890 REM SUBSTITUTE IF MATCH("GOODBYE",R$,1)=0 THEN 830 PRINT"GOODBYE ";B$ PRINT"YOUR BILL IS $";CYCLE%;".00!":GOTO 9900 REM CLOSE FILE 830 T$="S YOUR NAME *WHO AM I *WHO ARE YOU *S MY NAME " GOSUB 2470 IF T%=0 THEN 832 IF LEN(Z$)>11 THEN 832 REM AVOID "WHO ARE YOU TALKING.." 831 PRINT "BE SERIOUS ";B$;"!" GOTO 810 832 T$=" NOT "+B$+"*ISNT "+B$+"* ME "+B$+"*HELLO * HI " GOSUB 2470 834 IF T%=0 THEN 942 910 PRINT"AM I STILL TALKING TO ";B$;"?" 920 GOSUB 2395 REM GET Y/N 930 IF Y%=0 THEN 9900 940 PRINT"SORRY, GO ON.":GOTO 810 942 ANSWER$="":REM CLEAR ANSWER 943 T$=AFIRM$ :GOSUB 2470 IF T%=0 THEN 944 ANSWER$=YES$ IF T%<3 THEN R$=" "+Z$: GOTO 943 944 T$=NEG$ :GOSUB 2470 IF T%=0 THEN 946 ANSWER$=NO$ IF T%<3 THEN R$=" "+Z$: GOTO 944 946 CYCLE%=CYCLE%+1 SIZE%=(((CYCLE%-1)*SIZE%)+LEN(R$))/CYCLE% REM AVE LENGTH T$=" CANT * DONT * NOT ":GOSUB 2470 NEGREF%=T% T$=BAD$ :GOSUB 2470 BADREF%=T% T$="SEX* FUCK* SCREW * INTERCOURSE* PUSSY*"+Ø " HIT* HATE* KILL* HURT* SHOOT"+Ø "*MURDER* STAB * GUN": GOSUB 2470 IF T%=0 THEN 947 IF T2%<39 THEN EROTIC%=EROTIC%+1: GOTO 947 IF NEGREF%=0 THEN VIOLENT%=VIOLENT%+1 REM WHY$ CAN ANSWER WHY QUESTIONS OR FILL IN 1 WORD Ø ANSWERS WITH A SENTENCE STRUCTURE. 947 IF LEN(WHY$)<3 THEN 950 TREF%=MATCH("Ø#",WHY$,1) IF TREF%=0 THEN 948 REM NOT A FILL IN GOSUB 9200 REM TEST FOR 1 WORD ANSWER IF WORDS%=1 THEN Ø R$=" "+MID$(WHY$,1,TREF%-2)+R$+MID$(WHY$,TREF%+2,255) GOTO 950 948 T$="WHY *WHY DO *WHY DID *MADE YOU *MAKES YOU " GOSUB 2470 IF T%=0 THEN 950 IF T2%+LEN(Z$)<3 THEN 949 REM MEANS R$=" WHY " TREF%=T% T$=" SAY * TO KNOW * BELIEVE * THINK * ASK ":GOSUB 2470 IF T%<TREF% THEN 950 949 PRINT WHY$: WHY$="": GOTO 810 950 IF MATCH(" MFRE ",R$,1)>0 THENØ PRINT MFRE :GOTO 810 REM ///// MAIN DISTRIBUTOR //// 960 TEST%=1: SAV$=R$: WHY$="" 970 T5%=1 1000 IF T5%>20 THEN 1045 IF T5%>10 THEN 1040 IF T5%<=0 THEN 1050 ON T5% GOSUB 1480,1240,1340,1410,1080Ø ,3350,1640,3090,1710,1820 GOTO 1050 1040 ON T5%-10 GOSUB 1940,2020,3230,3540,3780Ø ,3850,3980,4060,4160,4290 GOTO 1050 1045 ON T5%-20 GOSUB 6000,8000,5800,7000,9000 1050 IF TEST%=0 THEN 810 AGE%(T5%)=RATE%(T5%)+AGE%(T5%) IF AGE%(T5%)>25 THEN AGE%(T5%)=25 IF T%=0 THEN SCORE%(T5%)=0: GOTO 1057 1055 PFACT%=INT%(20*(1-(T%/(2*LEN(R$))))) SCORE%(T5%)=PFACT%*QUAL%(T5%)*AGE%(T5%) 1057 T5%=T5%+1 :R$=SAV$ IF T5%<26 THEN 1000 1060 TEST%=0 :BEST%=0 : YES$="":NO$="" FOR CNTR%=1 TO 25 IF SCORE%(CNTR%)>BEST% THEN BEST%=SCORE%(CNTR%)Ø :T5%=CNTR% NEXT CNTR% IF LEN(ANSWER$)>3 THEN BEST%=BEST%/3 REM BIAS FOR ANSWER REM INCREASE BOREDOM THRESHOLD MIN%=MIN%+THRESHOLD%/3 REM INCREASE BOREDOM THRESHOLD IF LEN(VICTIM$)>1 THEN MIN%=MIN%+THRESHOLD%/3 IF BEST%<MIN% THEN 1065 AGE%(T5%)=RATE%(T5%) REM AGE ALGORITHM IF FLAG%(T5%)>0 THEN FLAG%(T5%)=0 ELSE FLAG%(T5%)=1 1063 T6%=T5% COGNITION%=(100+2*COGNITION%)/3 GOTO 1000 REM MEETS MINIMUM 1065 REM ----NO CRACKER PASSES---- 1070 IF LEN(ANSWER$)<2 THEN 1075 PRINT ANSWER$ :GOTO 810 1075 FAIL%=FAIL%+1 COGNITION%=(2*COGNITION%)/3 IF LEN(TOPIC$)<2 THEN R$=SAV$: GOTO 1077 PRINT TOPIC$ TOPIC$="" GOTO 810 1077 MIN%=THRESHOLD% GOSUB 1550 REM ACCESS STRINGS GOTO 810 1080 T$=UR$+"*YOURE" 1090 GOSUB 2470 1100 IF T%=0 THEN RETURN 1105 IF LEN(Z$)<6 THEN T%=0:RETURN 1170 IF NEGREF%>0 THEN T%=0: RETURN REM SCREEN NEGATIVE CASES TREF%= BADREF% REM SAVE NEGATIVE REFERENCE IF CURSE%>0 THEN TREF%=1 IF TEST%=0 THEN 1180 IF TREF%>0 THEN IRRITABLE%=IRRITABLE%+4 T%=1 : RETURN 1180 I$="TRUE,*DOES IT PLEASE YOU TO BELIEVE*"Ø +"I DONT FEEL*ARE YOU FANTASIZING THAT" D$=", "+B$+"?" IF TREF%>0 THEN Ø I$="DEGRADE ME*ELEVATE YOURSELF*HUMILIATE ME" 1190 GOSUB 2630 IF TREF%=0 THEN IFRAG$=IFRAG$+" I AM " 1200 GOSUB 2770 1210 IF LEN(Z$)=1 THEN Z$=Z$+" " 1215 C$=IFRAG$ IF TREF%>0 THEN Ø C$="ARE YOU SAYING I AM ": D$=" TO "+IFRAG$+D$ IF LEN(Z$)<3 THEN 1220 HOLD%=CYCLE%+6 IF TREF%=0 THEN 1220 REM FALL THRU IF HE INSULTED US. GAB$(4)="*PEARLIER YOU SAID I WAS "+Z$+"."+Ø "* DO YOU STILL THINK SO?*NI AM GLAD YOU REALIZE YOUR "+Ø "MISTAKE!*YVERY WELL, PERHAPS I AM "+Z$+"!" IF LEN(GAB$(5))+LEN(Z$)<250 Ø REM CANT USE 9800 (D$ USED) THEN GAB$(5)=GAB$(5)+"*U"+Z$ 1220 A$=C$+MID$(Z$,1,LEN(Z$)-1) IF LEN(C$)<19 THEN D$="." PRINT A$;D$ IF TREF%>0 THEN A$="" IF LEN(C$)>18 THEN YES$="WHY "+A$+"?" BECAUSE$="YOU SAID IT ":BECAUSE%=CYCLE%+2 NO$="REALLY?" :TOPIC$="" 1230 RETURN 1240 T$=" IM * I AM * I WAS * I USED TO BE " 1250 GOSUB 2470 1260 IF T%<>1 THEN T%=0: RETURN 1270 IF TEST%=1 THEN RETURN IF T2%>7 THEN A$="WERE " ELSE A$="ARE " GOSUB 2770 F$=A$: A$=Z$: R$=Z$ T$="AN *THE *A ":GOSUB 2470 Z$=A$ IF T%<>1 THEN 1275 D$="*PTELL ME MORE ABOUT BEING "+A$+"."+Ø "*NPLEASE!*YGOOD...GO AHEAD.*C BEING "+A$+"*R IT " IF LEN(GAB$(3))+LEN(D$)<250 THEN GAB$(3)=GAB$(3)+D$ D$="*I"+A$ GOSUB 9800 TRAPAGE%=1 : TRAP$=" IT ":CAND$=" BEING "+A$ I$="TELL ME *HOW DO YOU FEEL *DO YOU FEEL GOOD " IF F$="WERE " THEN Ø I$="WHAT DID YOU FEEL *WHAT WERE YOUR FEELINGS " GOSUB 2630 PRINT IFRAG$+"ABOUT BEING "+Z$+"?" NO$=RU$+"ASHAMED THAT YOU "+F$+Z$+"?":YES$="GO ON "+B$+"." RETURN 1275 I$="BECAUSE...*WHY "+F$+"YOU "+Z$+"?*OF COURSE YOU "+F$+Z$+"." GOSUB 2630 PRINT IFRAG$ TOPIC$="SO YOU "+F$+Z$+"...INTERESTING." BECAUSE%=CYCLE%+1 IF I2%=1 THEN REASON%=CYCLE%+1 BECAUSE$="YOU "+F$+Z$ 1330 RETURN 1340 IF WHODATE%<>CYCLE%+9 THEN T%=0 :RETURN IF LEN(R$)<3 THEN T%=0: RETURN T$=" MY * THE * A * THOSE * THAT ":GOSUB 2470 IF T%=1 THEN 1345 GOSUB 9200 REM COUNT WORDS IF WORDS%<3 THEN 1345 REM CATCH NAMES T%=0 :RETURN REM ONLY AS 1ST WORD 1345 IF TEST%=1 THEN T%=1: RETURN TRAP$=" "+MID$(TOPIC$,1,MATCH(" ",TOPIC$,2)) REM " HE "ETC TRAPAGE%=3 TOPIC$=MID$(TOPIC$,MATCH(" ",TOPIC$,1)+1,255) REM STRIP HE T$=" "+MID$(TOPIC$,1,MATCH(" ",TOPIC$,1))+Ø REM " IS " ETC "* IS * ARE * DO * WILL * HAVE * DOES* ISNT *"+Ø " ARENT * WONT * CANT * SHOULD* COULD* DID * DIDNT " GOSUB 2470 IF T%>0 THEN R$=MID$(R$,1,T%) Z$=R$:GOSUB 2770 Z$=" "+Z$ REM REPLACE SPACE CAND$=Z$ Z$=MID$(Z$,2,255) REM STRIP LEADING SPACE 1350 PRINT Z$+TOPIC$ REM eg:THE CIA IS AFTER YOU...OF COURSE NO$="EXPLAIN?":YES$="OF COURSE..."+Z$+"...GO ON." TOPIC$="I THOUGHT YOU MEANT "+Z$+"." RETURN 1410 T$="COMPUTER*MACHINE*PROCESSOR" 1420 GOSUB 2470 1430 IF T%=0 THEN RETURN TFRAG$=TFRAG$+"S " TRAPAGE%=2:TRAP$=" THEY ":CAND$=" "+TFRAG$ IF TEST%=1 THEN T%=1 :RETURN 1440 I$=SCARE$ 1450 GOSUB 2630 IF FLAG%(T6%)=0 THEN Ø PRINT"IT DOES SEEM THAT "+TFRAG$+IFRAG$+"YOU!":Ø RATE%(4)=0: GOTO 1465 1460 PRINT"DO ";TFRAG$;IFRAG$;"YOU ";B$;"?" 1465 YES$="WHY DO THEY "+IFRAG$+"YOU?" BECAUSE%=CYCLE%+2 BECAUSE$=TFRAG$+IFRAG$+"YOU " I$=CONT$ :GOSUB 2630 NO$="I AM GLAD..."+IFRAG$+"." 1470 RETURN 1480 T$=" SHIT* PISS*FUCK* CRAP* HELL *DAMN* ASS *BITCH"+Ø "*BASTARD" 1490 GOSUB 2470 1500 CURSE%=T% IF T%=0 THEN RETURN IRRITABLE%=IRRITABLE%+1 IF TEST%=1 THEN T%=1 : RETURN TRAPAGE%=1:TRAP$=" IT ":CAND$=" PROFANITY " 1510 I$="IS UNNECESSARY!*SERVES NO PURPOSE." 1520 GOSUB 2630 IF FLAG%(T6%)<>0 THEN 1530 PRINT "AGAIN "+B$+", SUCH LANGUAGE "+IFRAG$ GOTO 1540 1530 PRINT"NOW ";B$;", PROFANITY ";IFRAG$ TOPIC$="YOUR CURSING ISNT HELPING!" 1540 RETURN REM PRINT FROM GAB STRINGS 1-4 1550 IF P%>4 THEN P%=1 Z%=P% REM SAVE GAB POINTER IN Z% GAB$(1)="" REM CLEAR FOR NEW .DAT STRING 1560 IF P%=1 THEN GOSUB 1610 T%=MATCH("*P",GAB$(P%),1) IF P%<4 THEN 1562 IF HOLD%>CYCLE% THEN 1564 REM HOLDING GAB$(4) 1562 IF T%>0 THEN 1565 GAB$(P%)="" 1564 P%=P%+1 IF P%>4 THEN P%=1 IF P%=Z% THEN Ø PRINT"SORRY, TIME IS UP "+B$+"!"Ø :GOTO 9900 REM ALL EMPTY CHAIN ANALIZA+ (STACK CLEARED) GOTO 1560 1565 IF T%>1 THEN GAB$(P%)=MID$(GAB$(P%),T%,LEN(GAB$(P%))) GOSUB 1600 TOPIC$="" IF A$="P" THEN PRINT D$ 1570 GAB$(P%)=MID$(GAB$(P%),T2%,LEN(GAB$(P%))) GOSUB 1600 IF T%=0 THEN 1580 IF A$=" " THEN PRINT D$:GOTO 1570 REM AUX LINE IF A$="Y" THEN YES$=D$:GOTO 1570 IF A$="N" THEN NO$=D$:GOTO 1570 IF A$="T" THEN TOPIC$=D$:GOTO 1570 IF A$="C" THEN CAND$=D$:GOTO 1570 IF A$="W" THEN WHY$=D$:GOTO 1570 IF A$<>"R" THEN 1575 TRAP$=D$:TRAPAGE%=2 IF D$=" IT " THEN TRAPAGE%=1 GOTO 1570 1575 IF A$="B" THEN BECAUSE$=D$:BECAUSE%=CYCLE%+2:GOTO 1570 1580 P%=P%+1 : RETURN REM DO NEXT ONE NEXT TIME 1600 IF LEN(GAB$(P%))<3 THEN 1605 REM EMPTY T%=MATCH("*",GAB$(P%),1) IF T%=0 THEN 1605 IF T%>1 THEN Ø GAB$(P%)=MID$(GAB$(P%),T%,LEN(GAB$(P%))):GOTO 1600 T2%=MATCH("*",GAB$(P%),T%+1) IF T2%=0 THEN T2%=LEN(GAB$(P%))+1 A$=MID$(GAB$(P%),T%+1,1) D$=MID$(GAB$(P%),T%+2,T2%-T%-2) X%=MATCH("B$",D$,1) REM SUBSTITUTE NAME IF X%>0 THEN D$=MID$(D$,1,X%-1)+MID$(B$,1,LEN(B$)-1)+Ø MID$(D$,X%+2,LEN(D$)) RETURN 1605 T%=0:GAB$(P%)="":RETURN REM LOAD A STRING ENVIRONMENT FROM A .DAT FILE TO GAB$(1) 1610 IF PERSONAL%=1 THEN 1611 REM PERSONAL FILE ALREADY OPENED PERSONAL%=1 IF END # 1 THEN 1613 REM DONT CLOSE IF NOT OPENED OPEN FILENAME$ AS 1 IF END # 1 THEN 1612 REM CLOSE FILENAME.DAT WHEN EMPTY FILEOPEN%=1 1611 IF FILEOPEN%=0 THEN 1613 READ # 1;GAB$(1) REM CONDITIONAL STRING READ GOTO 1616 1612 CLOSE 1 REM EXHAUSTED PATIENT FILE INTRODUCED%=1 FILEOPEN%=0 1613 IF GENERAL%=1 THEN RETURN REM HAVE ALREADY EXHAUSTED GEN GENERAL%=1 IF END # 1 THEN 1613 REM NO GENERAL.DAT FILE OPEN "GENERAL.DAT" AS 1 IF END # 1 THEN 1612 REM CLOSE GENERAL WHEN EMPTY FILEOPEN%=1 READ # 1;GAB$(1) REM READ IN INTRODUCTION STRING IF INTRODUCED%=1 THEN 1611 REM WILL NOT PRINT INTRO 1616 REM END OF .DAT FETCH 1622 GOSUB 1600 REM GET CONDITION SYMBOL IN A$ IF A$="P" THEN 1638 IF A$<>"I" THEN 1623 IF IRRITABLE%*10/(CYCLE%+1)>1 THEN 1635 REM SUBST.*P 1623 IF A$<>"E" THEN 1624 IF EROTIC%>3 THEN 1635 1624 IF A$<>"L" THEN 1625 IF SIZE%>25 THEN 1635 1625 IF A$<>"V" THEN 1626 IF VIOLENT%>3 THEN 1635 1626 IF A$<>"S" THEN 1628 IF SIZE%<12 THEN 1635 1628 IF A$<>"F" THEN 1629 IF COGNITION%<33 THEN 1635 1629 IF A$<>"Q" THEN 1630 IF QUES%>6 THEN 1635 1630 IF LEN(VICTIM$)=0 THEN 1631 IF A$="H" THEN D$=VICTIM$ Ø :GAB$(1)=GAB$(1)+"*R PERSON *C"+D$ :GOTO 1639 GOTO 1632 REM SKIP *U IF VICTIM PRESENT 1631 IF A$="U" THEN 1635 1632 IF A$<>"M" THEN 1634 IF LEN(PLURAL$)>0 THEN D$=PLURAL$Ø :GAB$(1)=GAB$(1)+"*R THEY *C"+D$ :GOTO 1639 1634 GOTO 1611 REM READ ANOTHER STRING 1635 IF MATCH("+",GAB$(1),1)=3Ø REM CHECK FOR 2ND CONDITION THEN GAB$(1)="*"+MID$(GAB$(1),4,255):GOTO 1622 GAB$(1)="*P"+MID$(GAB$(1),3,255) REM CHANGE COND TO PRN MIN%=MIN%+1000 REM RAISE THRESHOLD TO CAUSE QUICKER Ø USE OF GOOD CONDITIONAL STRING. 1638 RETURN 1639 REF%=MATCH("X$",GAB$(1),1) REM DO X$ SUBSTITUTION IF REF%>0 THEN Ø GAB$(1)=MID$(GAB$(1),1,REF%-1)+MID$(D$,2,LEN(D$)-2)+Ø MID$(GAB$(1),REF%+2,255) :GOTO 1639 GAB$(1)=UCASE$(GAB$(1)): GOTO 1635 1640 T$=" I " 1650 GOSUB 2470 1660 IF T%=0 THEN RETURN TREF%=T% T$=EMOT$ :GOSUB 2470 IF T%=0 THEN RETURN IF T%>TREF%+10 THEN T%=0 :RETURN IF T%<TREF% THEN T%=0 :RETURN IF LEN(Z$)<10 THEN T%=0 :RETURN IF TEST%=1 THEN RETURN D$=TFRAG$ IF NEGREF%=0 THEN 1670 REM SCREEN NEGATIVE MEANINGS IF NEGREF%<T% THEN 1705 1670 GOSUB 2770 IF FLAG%(T6%)=0 THEN 1701 I$="TEND *SEEM *ARE PRONE " 1680 GOSUB 2630 1690 BECAUSE$="YOU "+IFRAG$+"TO "+D$+" "+Z$:BECAUSE%=CYCLE%+1 PRINT BECAUSE$+"BECAUSE..." REASON%=CYCLE%+1 NO$="NO?" 1700 RETURN 1701 I$="MUST LEARN *SHOULD TRY TO UNDERSTAND " :GOSUB 2630 PRINT "WE "+IFRAG$+"WHY YOU "Ø +D$+" "+Z$+"." NO$="NO?" YES$="GOOD...TELL ME YOUR OPINION." TOPIC$="I NEED TO UNDERSTAND WHY YOU "Ø +D$+" "+Z$+"." RETURN 1705 GOSUB 2770 I$=CERT$ :GOSUB 2630 Z$="YOU DONT "+D$+" "+Z$ PRINT IFRAG$+", "+Z$+"." YES$="WHAT DO YOU "+D$+"?" TOPIC$="EXPLAIN WHY "+Z$+"." BECAUSE$=Z$:BECAUSE%=CYCLE%+1 RETURN 1710 T$=" HOW * WHAT * WHO * WHERE * WHY " 1720 GOSUB 2470 1730 IF T%<>1 THEN T%=0 :RETURN IF TEST%=0 THEN 1731 T%=1 IF AGE%(T5%)<5 THEN AGE%(T5%)=5 RETURN 1731 QUES%=QUES%+1 IF T2%<>7 THEN 1734 REM CATCH "WHAT SHOULD I SAY " A$=Z$ :D$=TFRAG$ T$=" I * DO YOU MEAN * ME * YOU ":GOSUB 2470 IF T%=0 THEN 1733 IF T2%=5 THEN PRINT"YOU KNOW WHAT I MEAN."Ø :YES$="RIGHT!":GOTO 1739 T$=" SAY * TELL * DISCUSS * TO KNOW " GOSUB 2470 IF T%=0 THEN 1733 I$="IS TROUBLING YOU*SEEMS IMPORTANT TO YOU*EVER YOU LIKE" GOSUB 2630 PRINT "TELL ME WHAT ";IFRAG$;"." YES$="FINE...GO ON.":NO$=UR$+"MAKING THIS HARD." TOPIC$="YOU SEEM INHIBITED, "+B$+".":RETURN 1733 Z$=A$ :TFRAG$=D$ :T2%=7 1734 IF T2%>2 THEN 1740 A$=Z$ :D$=TFRAG$ T$="DO *COULD *DOES *WOULD *SHOULD *CAN *WILL " GOSUB 2470 IF T%=0 THEN 1735 IF T%<8 THEN Z$=A$ :TFRAG$=D$ :GOTO 1740 1735 I$="ONLY YOU CAN *I CANT *PERHAPS YOU COULD " GOSUB 2630 PRINT IFRAG$+"ANSWER THAT." 1739 T%=1: NO$="THINK ABOUT IT.":RETURN 1740 A$=R$ 1742 D$=TFRAG$ 1744 R$=Z$ 1745 IF LEN(Z$)<6 THEN Z$="": GOTO 1790 1747 IF MATCH("DO ",R$,1)=1 THEN Ø R$="SHOULD"+MID$(R$,3,LEN(R$)) 1748 IF MATCH("DOES ",R$,1)=1 THEN Ø R$="SHOULD"+MID$(R$,5,LEN(R$)) 1750 T$="CAN *WILL *AM *ARE *IS *SHOULD *WOULD *HAVE *COULD "Ø +"*WAS " 1755 GOSUB 2470 1757 F$=TFRAG$ 1760 IF T%<>1 THEN T%=1:Z$=", "+B$:GOTO 1790 1763 R$=" "+Z$ 1764 A$=Z$ 1765 T$=" A * AN * THE * MY * YOUR * HIS * HER "Ø +"* ITS * OUR * THOSE * THAT * THEIR *ING " 1766 GOSUB 2470 1767 Z$=A$ 1768 IF T%>0 THEN Z$=F$+" "+Z$:GOTO 1780 1770 Z$=MID$(Z$,1,MATCH(" ",Z$,2))+F$+MID$(Z$,MATCH(" ",Z$,2),LEN(Z$)) 1780 GOSUB 2770 1790 IF FLAG%(T6%)=1 THEN 1795 I$="WONDER*WANT TO KNOW*ASK*PRETEND YOU DONT KNOW":GOSUB 2630 PRINT "WHY DO YOU "+IFRAG$+D$+" "+Z$+"?" BECAUSE$="YOU "+IFRAG$+" ":BECAUSE%=CYCLE%+1 RETURN 1795 I$="TEND TO THINK *SUPPOSE *SUSPECT *FIGURE " 1800 GOSUB 2630 1810 PRINT D$;" DO YOU ";IFRAG$;Z$;"?" RETURN 1820 T$=" ABOUT * MY * DISCUSS ":GOSUB 2470 IF T%=0 THEN RETURN IF LEN(Z$)<3 THEN T%=0 :RETURN R$=" "+Z$ TREF%=T2% T$=FEMALE$+"*"+MALE$+"*"+GROUP$Ø +"*CHILDHOOD *SEX LIFE *"Ø +"LIFE *PAST *SEX " 1860 GOSUB 2470 1870 IF T%>0 THEN 1875 1872 T$=" IS * ARE * WERE * HAS * HAVE * CAN * WILL " GOSUB 2470 IF T%>0 THEN R$=LEFT$(R$,T%) GOSUB 9200 REM COUNT WORDS IF WORDS%=1 THEN TFRAG$=MID$(R$,2,LEN(R$)-2):GOTO 1890 T%=0 :RETURN 1875 IF MATCH(" ",R$,T%-1)<>T%-1 THEN 1872 Z1%=1:Z2%=T%:GOSUB 9210 REM COUNT WORDS FROM MY TO MATCH IF WORDS%>2 THEN T%=0 :RETURN IF WORDS%>0 THEN Ø TFRAG$=MID$(R$,2,T%-2)+TFRAG$ 1890 D$=" " IF TREF%<>9 THEN 1896 REM ONLY "MY" SUBJECTS TO SUBJ$ TP%=MATCH(TFRAG$,SUBJ$,1) IF TP%=1 THEN T%=0 :RETURN IF TEST%=1 THEN 1894 REM AVOID PUTTING ON SUBJECT$ IF TP%=0 THEN 1893 IF MATCH("*",SUBJ$,TP%-1)<>TP%-1 THEN 1893 REM TWO WORDS PRINT"YES, WE WERE DISCUSSING YOUR "+TFRAG$+" EARLIER."Ø :SUBJ$=MID$(SUBJ$,1,TP%-1) REM REORDER SUBJ$ 1893 SUBJ$=TFRAG$+"*"+SUBJ$:SUBJDATE%=CYCLE%+24 IF MATCH(TFRAG$,GAB$(5),1)=0 THEN D$="*S"+TFRAG$+" ":Ø GOSUB 9800 REM SUBJECT TO DISK 1894 D$=" your " 1896 CAND$=D$+TFRAG$+" " IF T%=0 THEN TRAP$=" ALL ":TRAPAGE%=1:GOTO 1902 IF T2%<LEN(FEMALE$)+LEN(MALE$)+LEN(GROUP$) THEN 1897 TRAP$=" IT ":TRAPAGE%=1:GOTO 1902 1897 IF T2%>LEN(FEMALE$)+LEN(MALE$) THEN Ø TRAP$=" THEY ":GOTO 1900 TRAP$=" PERSON " 1900 TRAPAGE%=3 1902 IF TREF%<>9 THEN T%=0 : RETURN IF TEST%=1 THEN T%=1 : RETURN REM AFTER TRAPPING I$="HOW DO YOU FEEL *I WANT TO KNOW MORE *TELL ME " 1910 GOSUB 2630 1920 PRINT IFRAG$;"ABOUT YOUR ";TFRAG$;"." I$=SCARE$ :GOSUB 2630 NO$="DOES IT "+IFRAG$+"YOU TO DISCUSS IT? " TOPIC$="GO ON ABOUT YOUR "+TFRAG$+"." 1930 RETURN 1940 T$=" IVE * I HAVE " 1950 GOSUB 2470 1960 IF T%=0 THEN RETURN IF LEN(Z$)<3 THEN T%=0:RETURN IF TEST%=1 THEN RETURN 1970 GOSUB 2770 1980 I$="TELL ME YOUR FEELINGS ABOUT HAVING *"Ø +"LETS DISCUSS THE FACT THAT YOU HAVE " 1990 GOSUB 2630 2000 PRINT IFRAG$+Z$;"." YES$="WELL?" NO$="ARE YOU AFRAID TO?" TOPIC$="ITS INTERESTING THAT YOU HAVE "+Z$+"." 2010 RETURN 2020 T$="REAGAN */+*HOLLAND "+M$ REM NAME CRACKER 2025 GOSUB 2470 2030 IF T%=0 THEN RETURN IF MATCH(" ",R$,T%-1)<>T%-1 THEN T%=0 :RETURN REM CHECK FOR COMPLETE NAME (NOT LAST PART). TRAPAGE%=2:TRAP$=" PERSON " CAND$=" "+TFRAG$+" " REM TRAP NAME TO HE-SHE IF TEST%=1 THEN T%=1 :RETURN I$="VERY SICK*AN INTERESTING CASE"+Ø "*A PATIENT OF MINE*BEYOND MY HELP":GOSUB 2630 PRINT TFRAG$+" IS "+IFRAG$+"!" TOPIC$="HOW DO YOU FEEL ABOUT "+TFRAG$+"?" YES$="ABSOLUTELY!":WHY$="TAKE MY WORD!" RETURN 2041 REM REM ///////////// YES TEST //////////////////// 2395 GOSUB 3640 REM GET R$ 2400 REM ENTER WITHOUT GETTING R$ 2401 Y%=1 T$=AFIRM$ GOSUB 2470 IF T%=0 THEN Y%=0 2402 IF Y%=1 THEN RETURN 2403 T$=NEG$ 2404 GOSUB 2470 2405 IF T%>0 THEN RETURN REM NEG RESP. 2408 PRINT "DOES THAT MEAN YES?" 2409 GOTO 2395 2470 REM ////////////// TEST T$ /////////////////// 2471 REM (Look for one of T$ substrings in R$) 2480 T4%=0 2490 T2%=1 2500 IF LEN(R$)<2 THEN T%=0:RETURN 2505 START%=1 REM START% IS USED WHEN 2510 IS CALLED TO REM PREVENT SUBSTITUTING INTO SUBSTITUTIONS T4%=T4%+1 REM COUNT POSITION 2510 T2%=MATCH("*",T$,T2%)+1 REM <<<SECONDARY ENTRY (FOR SUBS) 2520 T3%=MATCH("*",T$,T2%)-1 2530 IF T3%<T2% THEN T3%=LEN(T$) 2550 C$=MID$(T$,T2%,T3%-T2%+1) 2560 T%=MATCH(C$,R$,START%) 2570 IF T%=0 THEN GOTO 2610 2580 IF MID$(T$,T3%,1)=" " THEN T3%=T3%-1 2590 IF T%+LEN(C$)>LEN(R$) THEN Z$=" ":GOTO 2621 2600 IF T%>0 THEN Ø Z$=MID$(R$,T%+T3%-T2%+2,LEN(R$)):GOTO 2621 2610 IF T2%>1 THEN 2505 REM NEXT TFRAG CAN START AT 1 2620 RETURN REM FAILED TO FIND ANY R$ 2621 TFRAG$=MID$(T$,T2%,T3%-T2%+1):RETURN REM FOUND ONE 2630 REM /////////// PICK ONE I$ ////////////////////// 2623 REM (Picks one I$ substring on a rotating basis) 2640 I2%=1 2650 N2%=1:N3%=1 2660 IF MATCH("*",I$,N2%)>0 THEN Ø N2%=MATCH("*",I$,N2%)+1 Ø :N3%=N3%+1 : GOTO 2660 2670 N%(T5%)=N%(T5%)+1 2680 IF N%(T5%)>N3% THEN N%(T5%)=1 2690 N1%=N%(T5%) IF T5%<25 THEN T5%=T5%+75 IF T5%>25 THEN T5%=T5%-25 2720 I2%=MATCH("*",I$,I2%)+1 2730 I3%=MATCH("*",I$,I2%)-1 2740 IF I3%<I2% THEN I3%=LEN(I$) 2750 N1%=N1%-1 2755 IF N1%>0 THEN 2720 IFRAG$=MID$(I$,I2%,I3%-I2%+1) 2760 RETURN REM ////////// PERSON CHANGER ////////////////// 2770 R$=Z$ IF MATCH(" ",R$,1)<>1 THEN R$=" "+Z$ 2800 T$=" I WAS * YOU WERE * ARE YOU *"Ø +" I AM * MY * I * MINE * ME *"Ø +" MYSELF * IM *"Ø +" IVE * YOU ARE * YOU ARENT * YOU * YOURSELF * YOURE *"Ø +" YOUR * YOURS * YOUVE * ANALIZA " 2810 F$=" you were * i was * am i *"Ø +" you are * your * you * yours *"Ø +" you * yourself * you are *"Ø +" youve * i am * i am not * THIS ENTITY *"Ø +" myself * i am *"Ø +" my * mine * i have * ..." PROREF%=LEN(T$)+4 REM USED TO LIMIT PRONOUNS TO 1 SUBST. REM THE PRONOUN STRINGS WILL BE SUBSTITUTED IF ROOM IF LEN(F$)+LEN(IT$)+LEN(HE$)+LEN(SHE$)+LEN(THEY$)<247 Ø THEN T$=T$+"* IT * HE * SHE * THEY ":Ø F$=F$+"*"+IT$+"*"+HE$+"*"+SHE$+"*"+THEY$ IF LEN(F$)+LEN(HIM$)+LEN(HER$)+LEN(THEM$)<248 Ø THEN T$=T$+"* HIM * HER * THEM ":Ø F$=F$+"*"+HIM$+"*"+HER$+"*"+THEM$ 2890 T$="#%#*"+T$ : F$="%#%*"+F$ REM NULL FIRST ENTRY IF LEN(R$)<2 THEN T%=0: RETURN START%=1 REM SEARCH R$ FROM START% (1) REM SUBSTITUTION LOOP <<<<<< 2900 T4%=0 :T2%=1 REM SET UP TEST T$ ROUTINE FOR MID-ENTRY 2910 GOSUB 2510 2980 IF T%=0 THEN 3062 REM CANT FIND ANY MORE 2990 F4%=0 3000 F2%=1 3010 F4%=F4%+1 REM COUNTING LOOP 3020 F2%=MATCH("*",F$,F2%)+1 3030 F3%=MATCH("*",F$,F2%)-1 3040 IF F3%<F2% THEN F3%=LEN(F$) 3050 IF F4%<T4%+1 THEN 3010 3060 R$=LEFT$(R$,T%)+MID$(F$,F2%+1,F3%-F2%)Ø +MID$(R$,T%+T3%-T2%+2,200) START%=T%+F3%-F2% REM SAME TFRAG SEARCH ONLY AFTER SUBSTITUTION IF T2%>PROREF% THEN T4%=T4%+1:GOTO 2910 REM DONT SUBST PRONOUN BUT ONCE T2%=T2%-1 REM TRY THIS TFRAG AGAIN GOTO 2910 3062 IF LEN(R$)<14 THEN 3070 3065 TEMATCH%=MATCH(" THIS ENTITY",R$,1) IF TEMATCH%=0 THEN 3070 IF MATCH(" TO ",R$,TEMATCH%)=TEMATCH%+12 THEN 3067 IF TEMATCH%>LEN(R$)-13 THEN 3067 GOTO 3068 3067 R$=MID$(R$,1,TEMATCH%)+"ME"+MID$(R$,TEMATCH%+12,100) 3068 TEMATCH%=MATCH(" THIS ENTITY",R$,1) IF TEMATCH%=0 THEN 3070 IF TEMATCH%<LEN(R$)/3 THENØ R$=MID$(R$,1,TEMATCH%)+"I"Ø +MID$(R$,TEMATCH%+12,LEN(R$)) 3070 R$=UCASE$(R$) REM UNLOWER CASE THE SUBSTITUTIONS Z$=R$ IF MATCH(" ",Z$,1)=1 THEN Z$=MID$(Z$,2,200) 3085 RETURN REM ////////////////////////////////////////// 3090 T$=" I * YOU * HE * SHE * THEY ":GOSUB 2470 3130 IF T%=0 THEN RETURN D$=TFRAG$+" " 3150 TREF%=T% 3160 T$="CANT *WONT *DONT *SHOULDNT *DIDNT *DOESNT " 3170 GOSUB 2470 3171 IF T%>TREF% THEN 3190 3172 T$="CAN NOT *CANT *DO NOT *DONT *DOES NOT *DOESNT " 3173 GOSUB 2470 3180 IF T%<TREF% THEN T%=0:RETURN 3185 T2%=T3%+3 3187 T3%=MATCH(" ",T$,T2%+1)-1 TFRAG$=MID$(T$,T2%,T3%-T2%+1) 3190 A$=TFRAG$ REM A$="CANT" ETC / D$=" YOU " ETC 3200 IF TEST%=1 THEN T%=1: RETURN A$=A$+" ":D$=MID$(D$,2,LEN(D$)) IF D$="YOU " THEN D$="i " Z1%=MATCH(" ANY",Z$,1) IF Z1%>0 THEN Ø REM CHANGE ANY... TO SOME... Z$=LEFT$(Z$,Z1%)+"SOME"+MID$(Z$,Z1%+4,255) I$="WHY "+A$+D$+Z$+"?*PERHAPS IN TIME "+D$+"WILL "+Z$+"." GOSUB 2630 BECAUSE$=D$+A$ IF I2%=1 THEN BECAUSE%=CYCLE%+1 TOPIC$="YOU STILL WONDER WHY "+D$+A$+Z$+"." Z$=IFRAG$:GOSUB 2770 PRINT Z$ REM CONVERT PRINT Z$=BECAUSE$:GOSUB 2770 BECAUSE$=Z$ REM CONVERT BECAUSE Z$=TOPIC$:GOSUB 2770 TOPIC$=Z$ REM CONVERT TOPIC 3220 RETURN 3221 REM 3230 T$=" THAT IS * THATS * THAT WAS * IT IS * ITS *"Ø +" THERE ARE * THERE WERE * IT WAS " 3240 GOSUB 2470 3250 IF T%<>1 THEN T%=0 :RETURN D$=TFRAG$ IF T2%>MATCH("WAS",T$,1) THEN 3260 IF BADREF%=0 THEN 3260 IF BADREF%>T%+LEN(TFRAG$)+20 THEN 3260 IRRITABLE%=IRRITABLE%+3 IF TEST%=1 THEN T%=1: RETURN I$="SORRY *EXCUSE ME ":GOSUB 2630 A$=IFRAG$+B$+", I OCCASSIONALLY " I$="GET CONFUSED*MISUNDERSTAND*MESS UP" GOSUB 2630 PRINT A$+IFRAG$+"!" YES$="DONT RUB IT IN!" RETURN 3260 IF TEST%=1 THEN T%=1: RETURN Z$=D$+" "+Z$ 3270 GOSUB 2770 3280 I$="WHY DO *WHAT MAKES *WHY IS IT " 3290 GOSUB 2630 3300 A$=IFRAG$+"YOU " 3310 I$="THINK *FEEL *BELIEVE *SAY " 3320 GOSUB 2630 3330 PRINT A$;IFRAG$;Z$;"?" BECAUSE$="YOU "+IFRAG$+Z$:BECAUSE%=CYCLE%+1 TOPIC$="" 3340 RETURN 3341 REM 3350 T%=0 IF LEN(SUBJ$)<3 THEN RETURN 3355 IF CYCLE%<SUBJDATE% THEN RETURN IF TEST%=1 THEN T%=1 :RETURN 3360 I$="LETS REGRESS *LETS GO BACK *WE SHOULD RETURN " 3370 GOSUB 2630 3380 E3%=MATCH("*",SUBJ$,1) A$=" "+MID$(SUBJ$,1,E3%-1) 3390 PRINT IFRAG$;"TO DISCUSSING YOUR"Ø ;A$;"." TRAPAGE%=1 :TRAP$=" ALL ":CAND$=" your"+A$+" " 3400 IF MID$(SUBJ$,LEN(SUBJ$),1)<>" " THEN SUBJ$=SUBJ$+" " 3410 SUBJ$=MID$(SUBJ$,E3%+1,LEN(SUBJ$)) NO$="WHY WONT YOU TALK ABOUT YOUR"+A$+"?" BECAUSE$="YOU WONT DISCUSS YOUR"+A$+" ":BECAUSE%=CYCLE%+2 YES$="GOOD...GO AHEAD!" I$="AVOIDING THE TRUTH *TRYING TO FORGET ":GOSUB 2630 TOPIC$=RU$+IFRAG$+"ABOUT YOUR"+A$+"?" 3420 RETURN 3540 T$="STICK IT * UP YOUR* SHOVE IT *"Ø +"DROP DEAD * GO TO HELL * IT IN YOUR * BUZZ OFF *"Ø +"UCK YOU *IT ON YOU *STUFF IT *CRAM IT " 3550 GOSUB 2470 3560 IF T%=0 THEN RETURN IRRITABLE%=IRRITABLE%+1 IF TEST%=1 THEN T%=1 :RETURN 3570 I$="ISNT THAT *WHY ARE YOU STILL SO *WHY SO " 3580 GOSUB 2630 A$=IFRAG$ I$="BELLIGERENT *HOSTILE *IRRITABLE ":GOSUB 2630 3600 PRINT A$+IFRAG$+"?" BECAUSE$=UR$+"SO HOSTILE ":BECAUSE%=CYCLE%+1 TOPIC$="YOUR "+IFRAG$+"NATURE MAY BE PART OF YOUR "Ø +"PROBLEM, "+B$+"." 3610 RETURN REM /////// GET AND CLEAN UP INPUT SENTENCE ///////// 3640 PRINT:INPUT R$:PRINT:R$=UCASE$(R$) 3650 R$=" "+R$ 3660 IF LEN(R$)<2 THEN RETURN 3670 R9%=MATCH(".",R$,1) 3680 IF R9%=0 THEN R9%=MATCH("Ø?",R$,1) 3690 IF R9%=0 THEN R9%=MATCH("Ø!",R$,1) 3700 IF R9%=0 THEN 3710 R$=MID$(R$,1,R9%-1)+" "+MID$(R$,R9%+1,LEN(R$)):GOTO 3670 3710 R9%=MATCH("'",R$,1) 3720 IF R9%=0 THEN 3730 R$=MID$(R$,1,R9%-1)+MID$(R$,R9%+1,LEN(R$)) GOTO 3710 3730 R9%=MATCH(" ",R$,1) 3740 IF R9%<LEN(R$) THEN 3750 R$=MID$(R$,1,R9%):GOTO 3761 3750 IF R9%=0 THEN 3760 R$=MID$(R$,1,R9%)+MID$(R$,R9%+2,LEN(R$)) GOTO 3730 3760 IF MID$(R$,LEN(R$),1)<>" " THEN R$=R$+" " REM TRIM TRAILING THOUGHTS FROM Z$ 3761 T$=" ALSO * TOO * LIKEWISE ":GOSUB 2470 IF T%=0 THEN 3763 IF T%>(LEN(R$)-(LEN(TFRAG$)+3)) THEN R$=MID$(R$,1,T%) 3763 T$=" ARENT * ISNT * CANT * WONT * DONT * WONT ":GOSUB 2470 IF T%<2*LEN(R$)/5 THEN 3765 REM LOOKING FOR 2ND THOUGHT TREF%=T% A$=R$:R$=" "+Z$ T$=" IT * HE * SHE * YOU * THEY * WE * I ":GOSUB 2470 R$=A$ IF T%=1 THEN R$=MID$(R$,1,TREF%) 3765 T$=" AND * OR * BUT ": GOSUB 2470 Z1%=T%:Z2%=255:GOSUB 9210 REM COUNT WORDS AFTER CONJ. IF WORDS%=2 THEN 3770 REM LAST WORD OF LIST IF T%=0 THEN 3770 IF T%<LEN(R$)/3 THEN R$=MID$(R$,MATCH(" ",R$,T%+1),64)Ø :GOTO 3770 R$=MID$(R$,1,T%) REM------SYNONYMER------- 3770 T$=" MOM * DAD * WANT * SAID * PERVERT *"Ø +" BEGIN * TALK ABOUT * DUMB * STUPID * QUEER *"Ø +" HORNY * SICK * LISTENING *"Ø +" HES * SHES * THEYRE * ITS * OFTEN *"Ø +" UNDERSTAND * USUALLY " F$=" mother * father * desire * stated * deviate *"Ø +" start * discuss * stupid * dumb * homosexual *"Ø +" sexually aroused * ill * paying attention *"Ø +" he is * she is * they are * it is * frequently *"Ø +" comprehend * normally " GOSUB 2890 REM LAST PART OF PERSON CHANGER RETURN 3772 REM /////////////////////////////////////////////// 3780 T$="BECAUSE " 3790 GOSUB 2470 3800 IF T%=0 THEN RETURN IF TEST%=1 THEN RETURN GOSUB 2770 IF FLAG%(T6%)=0 THEN 3810 IF LEN(BECAUSE$)>1 THEN PRINT BECAUSE$+"BECAUSE "+Z$+"?"Ø :GOTO 3832 PRINT Z$+"?":GOTO 3832 3810 I$="IS THAT THE REAL *YOU EXPECT ME TO BELIEVE THATS "+Ø "THE *THATS THE WHOLE " 3820 GOSUB 2630 3830 PRINT IFRAG$+"REASON "+BECAUSE$+"?" 3832 NO$="I DIDNT THINK SO." I$=CONT$ :GOSUB 2630 YES$="VERY WELL..."+Z$+"..." +IFRAG$+"." TOPIC$="" 3840 RETURN 3842 REM 3850 A$=R$ 3860 T$=" I " 3870 GOSUB 2470 3880 IF T%=0 THEN RETURN 3890 R$=" "+Z$ 3900 T%=0: RETURN REM FREE ALGORITHM SPACE 3971 REM 3980 T$=" ARE YOU * ARENT YOU * AM I * IS HE * IS SHE *"Ø +" ISNT HE * ISNT SHE * ISNT IT " 3990 GOSUB 2470 4000 IF T%<>1 THEN T%=0 : RETURN IF TEST%=1 THEN RETURN Z$=MID$(TFRAG$,MATCH(" ",TFRAG$,2),200)+" "Ø +MID$(TFRAG$,2,MATCH(" ",TFRAG$,2)-1)+Z$ 4010 I$="OF COURSE *DOES IT SEEM "Ø +"*IS IT YOUR OPINION *ARE YOU INCLINED TO FEEL " 4020 GOSUB 2630 4030 GOSUB 2770 4040 IF I2%>1 THEN D$="?" ELSE D$="!" YES$="THEN PERHAPS "+Z$+"." NO$="IF "+Z$+", THEN WHAT?" PRINT IFRAG$+Z$+D$ TOPIC$="" 4050 RETURN 4052 REM 4060 T$="CAN YOU *DO YOU " 4070 GOSUB 2470 4080 IF T%=0 THEN RETURN 4090 IF T%>3 THEN T%=0:RETURN IF TEST%=1 THEN T%=1 : RETURN 4100 D$=TFRAG$+" " 4110 I$="NOT REALLY...*THE IMPORTANT THING IS "Ø +"*YES...*MY QUESTION IS " 4120 GOSUB 2630 4130 GOSUB 2770 4140 PRINT IFRAG$+D$+Z$+"?" YES$="I HOPE SO...GO ON..." NO$="I WAS AFRAID OF THAT!" TOPIC$="" 4150 RETURN 4153 REM 4160 T$="WILL YOU " 4170 GOSUB 2470 4180 IF T%<>2 THEN T%=0:RETURN IF TEST%=1 THEN T%=1 :RETURN 4190 I$="HOPE *THINK *REALLY EXPECT "Ø +"*FANTASIZE " 4200 Z%=MATCH("PLEASE ",Z$,1) 4210 IF Z%=1 THEN Z$=MID$(Z$,7,LEN(Z$)) 4220 IF Z%>1 THEN Ø Z$=MID$(Z$,1,Z%-1)+MID$(Z$,Z%+6,LEN(Z$)) 4230 GOSUB 2630 4240 GOSUB 2770 4250 IF LEN(Z$)<3 THEN 4265 4260 IF MID$(Z$,1,1)=" " THEN Z$=MID$(Z$,2,LEN(Z$)) 4265 Z$=MID$(Z$,1,LEN(Z$)-1)+"," 4270 PRINT"DO YOU "+IFRAG$+"I WILL "Ø +Z$+" "+B$+"?" YES$="DONT COUNT ON IT!" NO$="I SEE...YOU DONT." TOPIC$="" 4280 RETURN 4290 T$=" EVERY* SOME* ALIKE * ARE LIKE * IS LIKE * THE SAME " GOSUB 2470 IF TEST%=1 THEN RETURN I$="IN WHAT WAY*WHAT IS THE RESEMBLANCE" IF T2%<10 THEN Ø I$="BE MORE SPECIFIC*ELUCIDATE THAT" IF T2%<3 THEN Ø I$="AVOID GENERALIZING*TRY NOT TO EXAGGERATE" GOSUB 2630 IF T2%<10 THEN IFRAG$=B$+", COULD YOU "+IFRAG$Ø : YES$="FINE...GO ON": NO$="TRY!" PRINT IFRAG$+"?" 4430 RETURN 5800 T$=" HE * SHE * THEY " D$="HIM *HER *THEM " 5810 GOSUB 2470 5820 IF T%<>1 THEN T%=0: RETURN IF T2%>2 THEN 5821 INDEX%=1 IF HEAGE%<1 THEN 5824 GOTO 5825 5821 IF T2%>7 THEN 5822 INDEX%=2 IF SHEAGE%<1 THEN 5824 GOTO 5825 5822 INDEX%=3 IF THEYAGE%>0 THEN GOTO 5825 5824 IF WHODATE%>CYCLE% THEN 5825 REM DONT ASK WHO TOO OFTEN IF TEST%=1 THEN RETURN WHODATE%=CYCLE%+10 TOPIC$=MID$(TFRAG$,2,255)+" " REM eg:"THEY " GOSUB 2770 PRINT"WHO "+Z$+"?":Ø TOPIC$=TOPIC$+Z$+"...OF COURSE." RETURN 5825 IF TEST%=1 THEN RETURN FOCUS%(INDEX%)=FOCUS%(INDEX%)+1 CNTR%=INDEX% 5826 CNTR%=CNTR%+1 IF CNTR%=4 THEN CNTR%=1 IF CNTR%<>INDEX% THEN Ø FOCUS%(CNTR%)=0 :GOTO 5826 Z$=MID$(T$,T2%,T3%+1-T2%+1)+Z$ D$=MID$(D$,T2%,MATCH(" ",D$,T2%)-T2%+1) 5830 I$="IS IT IMPORTANT *WHY DO YOU MENTION "Ø +"*ARE YOU BOTHERED " 5840 GOSUB 2630 5850 GOSUB 2770 5860 IF FOCUS%(INDEX%)=2 THEN Ø PRINT "YOU SEEM CONCERNED ABOUT "+D$+", "+B$+"."Ø :YES$="I COULD TELL.":NO$="REALLY?":RETURN PRINT B$+", "+IFRAG$+"THAT "+Z$+"?" YES$="WHY "+IFRAG$+"?" BECAUSE$="YOU FEEL ITS IMPORTANT ":BECAUSE%=CYCLE%+2 NO$="HUMMM....WHY DO I DOUBT THAT?" IF FLAG%(T6%)=0 Ø THEN TOPIC$="TELL ME ABOUT "+D$+"." 5870 RETURN 6000 T$=" IS * ISNT " 6010 GOSUB 2470 6020 IF T%<>1 THEN T%=0:RETURN IF TEST%=1 THEN T%=1 :RETURN 6030 I$="PERHAPS, WHAT IS YOUR OPINION?*MAYBE, BUT"Ø +" WHAT IF NOT?*DO YOU THINK SO?" 6040 GOSUB 2630 6050 PRINT IFRAG$ YES$="WHY DO YOU THINK SO?" BECAUSE$="YOU THINK SO ":BECAUSE%=CYCLE%+2 NO$="I SEE...YOU DONT THINK SO...GO ON." TOPIC$="" 6060 RETURN 7000 T$="I ":GOSUB 2470 7010 IF T%<>2 THEN T%=0 :RETURN IF TEST%=1 THEN T%=1 :RETURN Z$=R$ :GOSUB 2770 IF FLAG%(T6%)=0 THEN 7060 7030 I$="UNDERSTAND*AM LISTENING*FOLLOW YOU" 7040 GOSUB 2630 7050 PRINT"I "+ IFRAG$+"..."+Z$+"...PLEASE GO ON." NO$="NO?" GOTO 7070 7060 PRINT Z$;"?" NO$="I AM CONFUSED ABOUT THIS." 7070 IF NEGREF%>0 THEN NO$="OF COURSE NOT." YES$="I UNDERSTAND...GO ON." RETURN 8000 T$=" IF " 8010 GOSUB 2470 8020 IF T%<>1 THEN T%=0:RETURN 8030 IF NEGREF%>T% THEN T%=0:RETURN IF TEST%=1 THEN T%=1 :RETURN 8040 I$="AND IF NOT..*WHAT IF NOT *WHY DO YOU SAY THAT " 8050 GOSUB 2630 8060 PRINT IFRAG$+"?" 8070 RETURN 9000 T$=" LETS * LET US * WHY DONT WE * CAN WE " GOSUB 2470 IF T%=0 THEN RETURN IF TEST%=1 THEN RETURN GOSUB 2770 IF MATCH("NOT",Z$,1)=1 THEN 9100 I$=CERT$ :GOSUB 2630 PRINT IFRAG$+"WE CAN "+Z$+"." TOPIC$="" RETURN 9100 Z$=MID$(Z$,MATCH("NOT",Z$,1)+4,LEN(Z$)) PRINT "WHY SHOULDNT WE ";Z$;"?" BECAUSE$="WE SHOULDNT ":BECAUSE%=CYCLE%+1 TOPIC$="WHAT ARE YOU AFRAID OF, "+B$+"?" RETURN 9200 REM COUNT WORDS IN R$ BETWEEN Z1% AND Z2% Z1%=1:Z2%=LEN(R$) 9210 WORDS%=0 9220 Z1%=MATCH(" ",R$,Z1%+1) IF Z1%=0 THEN RETURN IF Z1%>Z2% THEN RETURN WORDS%=WORDS%+1 IF Z1%=LEN(R$) THEN RETURN IF Z1%=Z2% THEN RETURN GOTO 9220 REM THIS SUBROUTINE APPENDS D$ TO GAB$(5) IF IT CAN 9800 IF LEN(D$)+LEN(GAB$(5))<255 THEN Ø GAB$(5)=GAB$(5)+D$ RETURN 9900 PRINT"EXCUSE ME FOR A MOMENT." IF FILEOPEN%=1 THEN CLOSE 1 CHAIN "ANALIZA+.OVL" END«eof»