10 CLEAR 1024,MAXRAM 20 DEFINT A-Z 30 DEFSTR A,C,D,E,L,R,S,Z 40 DIM AR(9),ZP(9) 100 DF="DeetyP" 110 CO="%TI|%DA|%DT|%NL|%CS|%CL|%RN|%FL|%OF|%P%|%FI|%0%|%1%|%2%|%3%|%4%|%5%|%6%|%7%|%8%|%9%|%ME|%LI|%SE" 120 CN="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 " 130 DY="Sunday Monday Tuesday WednesdayThursday Friday Saturday " 140 DM="JanFebMarAprMayJunJulAugSepOctNovDec" 900 CLS 910 PRINT"Hiya Boss!" 920 PRINT 1000 MA=0 1010 TD=1 1020 TN=0 1100 GOSUB 3000:LI=ZO'get line 1110 ZL=LI 1120 ZI=ZL:GOSUB 3500:ZL=ZO'upper case 1125 T1=INSTR(1,ZL,CHR$(34)) 1130 IF T1=0 THEN 1160 1135 T2=INSTR(T1+1,ZL,CHR$(34)) 1140 IF T2=0 THEN 1160 1145 MID$(ZL,T1,T2-T1+1)=STRING$(T2-T1+1,255) 1150 GOTO 1125 1160 OPEN DF FOR INPUT AS 1 1170 LINE INPUT #1,SL'throw out first line for now 1200 IF EOF(1) THEN 1900'unrecognized input 1210 LINE INPUT #1,SL'get search line 1220 IF SL="" THEN LINE INPUT #1,SL:GOTO 1200'if no more match strings, skip response line 1 250 IF LEFT$(SL,1)="|" OR LEFT$(SL,1)="&" THEN SL=RIGHT$(SL,LEN(SL)-1) 1260 T1=INSTR(1,SL,"|")-1'get search word 1270 IF T1=-1 THEN T1=LEN(SL) 1280 T2=INSTR(1,SL,"&")-1 1290 IF T2=-1 THEN T2=LEN(SL) 1300 IF T2V2 THEN V3=V2 1730 AR(MA)=MID$(LI,V1,V3-V1+1) 1740 MA=MA+1 1750 RETURN 1900 CLOSE 1910 OPEN DF FOR INPUT AS 1 2000 LINE INPUT #1,RL'get response line 2010 CLOSE #1 2050 TC=0'find out how many possible responses 2060 T1=0 2070 T1=INSTR(T1+1,RL,"|") 2 080 IF T1<>0 THEN TC=TC+1:GOTO 2070 2100 TC=INT(RND(1)*(TC+1))'get random response 2110 T1=0 2120 IF T1=TC THEN 2170 2130 T2=INSTR(1,RL,"|") 2140 RL=RIGHT$(RL,LEN(RL)-T2) 2150 T1=T1+1 2160 GOTO 2120 2170 T2=INSTR(1,RL,"|") 2180 IF T2=0 THEN T2=LEN(RL)+1 2190 RL=LEFT$(RL,T2-1) 2250 T1=1:ZO="" 2300 T1=INSTR(T1+LEN(ZO),RL,"%") 2310 IF T1=0 THEN 2500 2320 T2=INSTR(T1+1,RL,"%") 2330 IF T2=0 THEN 9000 'error 2340 ZI=MID$(RL,T1,T2-T1+1) 2350 TC=INSTR(1,CO,LEFT$(ZI,3)) 2360 IF TC=0 THEN 9000 'error 2370 TC=VAL(MID$(CN,TC,2)) 2380 ON TC GOSUB 4000,4100,4200,4300,4400,4500,4600,4700,4800,4900,5000,5100,5200,5300,5400,5500,5600,5700,5800,5900,6000,6100,6200,6300,6400,6500,6600,6700,6800,6900 2390 RL=LEFT$(RL,T1-1)+ZO+RIGHT$(RL,LEN(RL)-T2) 2400 GOTO 2300 2500 PRINT 2510 PRINT RL 2520 PRINT 2530 GOTO 1000 3000 ZO="" 3010 PRINT CHR$(27);"P"; 3020 ZZ#=RND(1) 3030 ZT=INKEY$:IF ZT="" THEN 3020 3040 ZC%=ASC(ZT) 3050 IF ZC%=13 THEN 3200 3060 IF ZC%=8 OR ZC%=127 THEN IF LEN(ZO)=0 THEN BEEP:GOTO 3020 ELSE PRINT CHR$(127);:ZO=LEFT$(ZO,LEN(ZO)-1):GOTO 3020 3070 IF ZC%=24 THEN PRINT STRING$(LEN(ZO),127);:GOTO 3000 3080 IF ZC%<32 OR ZC%>127 THEN BEEP:GOTO 3020 3090 ZO=ZO+ZT 3100 PRINT ZT; 3110 GOTO 3020 3200 PRINT CHR$(27);"Q" 3210 ZO=ZO+" " 3220 RETURN 3500 ZO=ZI 3510 FOR I=1 TO LEN(ZO) 3520 ZT=MID$(ZO,I,1) 3530 IF ZT>="a" AND ZT<="z" THEN MID$(ZO,I,1)=CHR$(ASC(ZT)-32) 3540 NEXT 3550 RETURN 3700 MP=0 3710 IF MID$(RL,T2+1,1)<>"(" THEN RETURN 3720 V5=T2+1 3730 V6=INSTR(V5+1,RL,")") 3740 IF V6=0 THEN 9000'error 3750 V7=V5 3760 V8=INSTR(V7+1,RL,",") 3770 IF V8=0 OR V8>V6 THEN V8=V6 3780 ZP(MP)=MID$(RL,V7+1,V8-(V7+1)) 3790 MP=MP+1 3800 V7=V8 3810 IF V812 OR V3=0 THEN ZO=RIGHT$(STR$(V3-12),LEN(STR$(V3-12))-1)+RIGHT$(ZO,6)+" pm" ELSE ZO=TIME$+" am" 4030 IF LEFT$(ZO,1)="0" THEN ZO=RIGHT$(ZO,LEN(ZO)-1) 4040 IF LEFT$(ZO,2)="12" THEN IF MID$(ZO,LEN(ZO)-1,1)="a" THEN MID$(ZO,LEN(ZO)-1,1)="p" ELSE MID$(ZO,LEN(ZO)-1,1)="a" 4050 RETURN 4100 ZO=MID$(DY,INSTR(DY,DAY$),9) 4110 ZO=LEFT$(ZO,INSTR(ZO+" "," ")-1) 4120 RETURN 4200 ZO=MID$(STR$(VAL(MID$(DATE$,4,2))),2)+" "+MID$(DM,VAL(LEFT$(DATE$,2))*3-2,3)+" 19"+RIGHT$(DATE$,2) 4210 RETURN 4300 ZO=CHR$(13)+CHR$(10) 4310 RETURN 4400 ZO=CHR$(12) 4410 RETURN 4500 GOSUB 3700 4510 IF MP<1 THEN 9000'error 4520 EL="I can't call that routine":ON ERROR GOTO 9500 4530 IF VAL(ZP(0))<0 OR VAL(ZP(0))>65535 THEN ON ERROR GOTO 9900:ZO=EL:RETURN 4540 CALL VAL(ZP(0)) 4600 GOSUB 3700 4610 IF MP<1 THEN 9000'error 4620 RUN ZP(0) 4700 ZO="" 4705 FOR I=-1606 TO -1430 STEP 33 4710 FOR J=I TO I+22 STEP 11 4715 IF PEEK(J)=0 THEN 4750 4720 FOR K=J+3 TO J+8 4725 ZO=ZO+CHR$(PEEK(K)) 4730 NEXT 4735 ZO=ZO+"."+CHR$(PEEK(J+9))+CHR$(PEEK(J+10))+" " 4740 NEXT 4745 ZO=LEFT$(ZO,LEN(ZO)-3)+CHR$(13)+CHR$(10) 4750 NEXT 4755 ZO=LEFT$(ZO,LEN(ZO)-2) 4760 RETURN 4800 CLS 4810 POWER OFF,RESUME 4820 RUN 4900 ZO="%" 4910 RETURN 5000 GOSUB 3700 5010 IF MP<2 THEN 9000'error 5020 EL="I can't find that file":ON ERROR GOTO 9500 5030 OPEN ZP(0) FOR APPEND AS 1 5040 EL="I can't add to that file" 5050 PRINT #1,ZP(1) 5060 CLOSE 5070 ON ERROR GOTO 9900 5080 ZO="" 5090 RETURN 5100 IF MA>0 THEN ZO=AR(0) ELSE ZO="" 5110 RETURN 5200 IF MA>1 THEN ZO=AR(1) ELSE ZO="" 5210 RETURN 5300 IF MA>2 THEN ZO=AR(2) ELSE ZO="" 5310 RETURN 5400 IF MA>3 THEN ZO=AR(3) ELSE ZO="" 5410 RETURN 5500 IF MA>4 THEN ZO=AR(4) ELSE ZO="" 5510 RETURN 5600 IF MA>5 THEN ZO=AR(5) ELSE ZO="" 5610 RETURN 5700 IF MA>6 THEN ZO=AR(6) ELSE ZO="" 5710 RETURN 5800 IF MA>7 THEN ZO=AR(7) ELSE ZO="" 5810 RETURN 5900 IF MA>8 THEN ZO=AR(8) ELSE ZO="" 5910 RETURN 6000 IF MA>9 THEN ZO=AR(9) ELSE ZO="" 6010 RETURN 6100 MENU 6200 GOSUB 3700 6205 IF MP<1 THEN 9000'error 6210 EL="I can't find that file":ON ERROR GOTO 9500 6215 OPEN ZP(0) FOR INPUT AS 1 6220 EL="Problems reading this file" 6230 IF EOF(1) OR INKEY$<>"" THEN 6270 6240 LINE INPUT #1,ZO 6250 PRINT ZO 6260 GOTO 6230 6270 ZO="" 6275 CLOSE 6280 ON ERROR GOTO 9900 6290 RETURN 6300 GOSUB 3700 6305 IF MP<3 THEN 9000'error 6310 EL="I can't find that file":ON ERROR GOTO 9500 6315 ZI=ZP(1):GOSUB 3500:ZP(1)=ZO 6320 OPEN ZP(0) FOR INPUT AS 1 6325 EL="Problems reading this file" 6330 IF EOF(1) THEN ZO=ZP(2):GOTO 6370 6340 LINE INPUT #1,ZN 6345 ZI=ZN:GOSUB 3500 6350 IF INSTR(ZO,ZP(1))<>0 THEN ZO=ZN:GOTO 6370 6360 GOTO 6330 6370 CLOSE 6380 ON ERROR GOTO 9900 6390 RETURN 9000 PRINT 9010 PRINT"Boss, I don't feel so good." 9020 PRINT 9030 GOTO 1000 9500 ON ERROR GOTO 9900 9510 PRINT 9520 PRINT"Sorry Boss, ";EL 9530 PRINT 9540 RESUME 1000 9900 PRINT 9910 PRINT "Boss, we blew this one BIG!" 9920 PRINT"Error";ERR;"in Line";ERL 9930 PRINT 9940 STOP