---

0100 ' The lines numbered 0100 thru 0166 MUST NOT BE ALTERED OR REMOVED! 0102 ' Enjoy this most useful little software offering! This program is 0104 ' copyrighted, but it may be distributed in any media, provided that: 0106 ' 0108 ' 1. You do not alter or remove the REM statements out of the 0110 ' source code or alter the documentation in any way. 0112 ' That you include BOTH answer2.bas + answer2.doc in whatever 0114 ' media is chosen for distribution. 0116 ' 0118 ' 2. You do not DISTRIBUTE a modified version of this code. If you MUST 0120 ' modify the software,... use the accepted practice of creating a 0122 ' MERGE file to contain your changes. In this way... any bugs which 0124 ' are fixed or new feature which are to be included can be done in a 0126 ' reasonably maintainable fashion. 0128 ' 0130 ' 3. Charge no fees for the distribution of this software beyond the 0132 ' minimal charge ($4 maximum) for a distribution diskette. 0134 ' If other programs are included on the diskette, do not charge 0136 ' more than once for the distribution diskette. 0138 ' 0140 ' 0142 ' If you would like to receive free updates of the program, 0144 ' send a donation ($20 is suggested for private use, $20 minimum for 0146 ' commercial or corporate usage is mandatory) to: 0148 ' 0150 ' Mike Sirmans 0152 ' 4022 Tanglewood Rd. 0154 ' Snellville, GA 30278 0156 ' Call: ZAP!-BBS (404) 972-3458 0158 ' Supporting ASCII & XMODEM downloads 0160 ' at 2400/1200/300 baud 24-hrs/day 0162 ' 0164 ' (C) Copyright 1985 by Mike Sirmans, ALL RIGHTS RESERVED. 0166 ' 1000 CLEAR:CLS:DEFINT A-Z:DEF SEG 1020 SYS$="MIKE":NM$="ZAP!-BBS":CP$="COM1":BA$="300":PW$="PASSWRD" 1021 REM 1022 REM CHANGE THE DATA IN THE LINE ABOVE TO SUIT YOUR TASTES ... 1023 REM 1024 REM SYS$ = System operator's FIRST name. 1025 REM NM$ = Name of this system. (printed as: WELCOME TO ....... ) 1026 REM CP$ = Communications port. Must be COM1 or COM2 1027 REM BA$ = Open the communication port at this baud rate. 1028 REM PW$ = Your REMOTE password list your messages (must be UPPER-case) 1029 REM 1030 SD$="ATM0Q1S2=255S10=30S0=0" 1040 CLS:KEY OFF:PR=1:LCL=0:UPD=1:UC=0:LOCATE ,,0 1060 ON ERROR GOTO 6080 1080 LOCATE 5,24:PRINT "ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ" 1100 LOCATE 6,24:PRINT "Ý Þ" 1120 LOCATE 7,24:PRINT "Ý °±²²² the ELECTRONIC ²²²±° Þ" 1140 LOCATE 8,24:PRINT "Ý °±²²² ANSWERING MACHINE ²²²±° Þ" 1160 LOCATE 9,24:PRINT "Ý Þ" 1180 LOCATE 10,24:PRINT "Ý Original concept by: Sean Nolan Þ" 1200 LOCATE 11,24:PRINT "Ý Þ" 1220 LOCATE 12,24:PRINT "Ý Re-written by Mike Sirmans Þ" 1240 LOCATE 13,24:PRINT "Ý Sysop: ZAP!-BBS Atlanta, GA Þ" 1260 LOCATE 14,24:PRINT "Ý (404) 972-3458 24-hrs/day Þ" 1280 LOCATE 15,24:PRINT "Ý Þ" 1300 LOCATE 16,24:PRINT "ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß" 1310 LOCATE 22,13:PRINT "(C) Copyright 1985 by Mike Sirmans, ALL RIGHTS RESERVED." 1320 DEF FNTI!=CSNG(FIX((VAL(MID$(TIME$,1,2))*60*60)+(VAL(MID$(TIME$,4,2))*60)+(VAL(MID$(TIME$,7,2))*1))):DEF FNBL$="BLK"+RIGHT$("0000"+RIGHT$(STR$(BLK),LEN(STR$(BLK))-1),5) 1340 DEF FNS$(A1$,A)=A1$+SPACE$(A-LEN(A1$)) 1360 BK$=CHR$(8)+CHR$(32)+CHR$(8):BK1$=CHR$(29)+CHR$(32)+CHR$(29) 1380 IF CP$="COM2" THEN LSB=&H2F8:MSB=&H2F9:LCR=&H2FB:MCR=&H2FC:LSR=&H2FD:MSR=&H2FE ELSE LSB=&H3F8:MSB=&H3F9:LCR=&H3FB:MCR=&H3FC:LSR=&H3FD:MSR=&H3FE 1400 OPEN "I",2,"ANSWER.DEF":INPUT #2,BP$,CH$,NUM,MUN:CLOSE #2 1420 KEY 1,"":KEY (1) ON:ON KEY(1) GOSUB 6200 1440 KEY 2,"":KEY (2) ON:ON KEY(2) GOSUB 6300 1460 KEY 3,"":KEY (3) ON:ON KEY(3) GOSUB 6260 1480 KEY 4,"":KEY (4) ON:ON KEY(4) GOSUB 6280 1500 DIM LI$(100):M$=CHR$(10)+CHR$(13) 1540 REM 1560 REM ------------------- BEGINNING OF PROGRAM LOGIC -------------------- 1580 REM 1600 IF INP(MSR)<128 THEN OUT MCR,&H4:GOSUB 6460:OUT MCR,&H0 1620 CLOSE:OPEN CP$+":"+BA$+",N,8,1,RS,CD,DS" AS #3 1640 PR=0:A$="ATZ":GOSUB 6500:GOSUB 6460:A$=SD$:GOSUB 6500:PR=1 1660 CLS 1680 LOCATE 17,24:PRINT "°±²²² the ELECTRONIC ²²²±°" 1700 LOCATE 18,24:PRINT "°±²²² ANSWERING MACHINE ²²²±°" 1720 LOCATE 22,13:PRINT "(C) Copyright 1985 by Mike Sirmans, ALL RIGHTS RESERVED." 1740 LOCATE 3,24 1760 PRINT "STANDBY..."; 1780 UPD=0:GOSUB 6660:UPD=1 1788 LOCATE 3,24 1790 PRINT "Ready at ";TIME$;" on ";DATE$; 1800 WE$=INKEY$ 1820 IF WE$="X" OR WE$="x" THEN LOCATE 22,13:PRINT " PROGRAM TERMINATED... ":SYSTEM:END 1840 IF WE$="L" OR WE$="l" THEN 2000 1850 IF WE$="R" OR WE$="r" THEN GOSUB 6350 1860 IF(INP(MSR)AND &H40)=0 THEN GOTO 1800 1880 REM ----------------------------------------------------------------- 1900 PR=0:A$="ATQ0X1V1A":GOSUB 6500:TCC!=FNTI!+30:DF$="":PR=1 1920 IF INP(MSR)<128 AND FNTI!0 THEN DF$=DF$+INPUT$(LOC(3),3) ELSE 1965 1960 IF INSTR(DF$,"CONNECT") THEN QQ=VAL(MID$(DF$,INSTR(DF$,"CONNECT")+8,4)):GOTO 2020 1965 IF FNTI!=>TCC! THEN 2740 ELSE 1920 1980 REM ----------------------------------------------------------------- 2000 PR=0:A$="ATQ1E1H1M0":GOSUB 6500:CLOSE #3:PR=1:LCL=1:GOTO 2040 2020 GOSUB 21280:IF QQ=0 OR QQ=300 THEN Q=&H180:BPS=-1:GOSUB 11654 ELSE IF QQ=1200 OR QQ=2400 THEN BPS=-2-(QQ/1200):Q=48*(BPS+5):GOSUB 11654 ELSE 1940 2040 CLS:CNCT=1 2060 A$="WELCOME TO "+NM$+CHR$(10)+CHR$(13):GOSUB 6500 2070 M$=CHR$(13) 2080 IF LCL=1 THEN 2220 2090 MUN=MUN+1:GOSUB 6970 2100 GOSUB 6340:GOSUB 6460 2120 PRINT "Do you need linefeeds (Y/N) ? "; 2140 PRINT #3,"Do you need linefeeds (Y/N) ? "; 2160 GOSUB 5720 2180 IF LEFT$(B$,1)="n" OR LEFT$(B$,1)="N" THEN 2201 2200 M$=CHR$(10)+CHR$(13) 2201 PRINT M$+"Enter your REAL First Name: "; 2202 PRINT #3,M$+"Enter your REAL First Name: "; 2203 UC=1:GOSUB 5720:UC=0:FR1$=B$ 2204 PRINT "Enter your REAL Last Name: "; 2205 PRINT #3,"Enter your REAL Last Name: "; 2206 UC=1:GOSUB 5720:UC=0:FR2$=B$ 2207 PRINT M$+"Your name is - ";FR1$;" ";FR2$;" ...right ? "; 2208 PRINT #3,M$+"Your name is - ";FR1$;" ";FR2$;" ...right ? "; 2209 GOSUB 5720 2210 IF LEFT$(B$,1)="y" OR LEFT$(B$,1)="Y" THEN 2212 2211 A$=M$+M$:GOSUB 6500:GOTO 2201 2212 OPEN "MESSAGES" FOR APPEND AS #2 2213 PRINT #2, STRING$(50,"-");CHR$(13);CHR$(10); 2214 PRINT #2, DATE$;" ";TIME$;" Caller #";MUN;" ... "FR1$;" ";FR2$;CHR$(13);CHR$(10); 2215 CLOSE #2 2220 A$=M$:GOSUB 6500 2240 OPEN "OUTMSG" FOR INPUT AS #2 2260 WHILE NOT EOF(2) 2280 A$=INPUT$(1,#2) 2300 IF A$=CHR$(8) THEN GOSUB 3340:GOTO 2380 2320 IF A$=CHR$(10) THEN 2380 2340 IF A$=CHR$(13) THEN PRINT:IF LCL=0 THEN PRINT #3,M$;:GOTO 2380 ELSE GOTO 2380 2360 PRINT A$;:IF LCL=0 THEN PRINT #3,A$; 2380 WEND 2400 CLOSE #2 2420 A$=M$:GOSUB 6500 2440 A$="Main functions":GOSUB 6500 2460 PRINT "E)nter msg O)perator page G)oodbye ?)Help : "; 2480 IF LCL=0 THEN PRINT #3,"E)nter msg O)perator page G)oodbye ?)Help : "; 2500 GOSUB 5720 2520 C$=LEFT$(B$,1) 2540 IF C$="E" OR C$="e" THEN 3580 2560 IF C$="O" OR C$="o" THEN 2820 2580 IF C$="G" OR C$="g" THEN 2680 2600 IF C$="~" THEN 4920 2620 IF C$="?" THEN 3460 2640 A$="Invalid command!":GOSUB 6500 2660 GOTO 2420 2680 CLOSE #2 2685 A$=M$:GOSUB 6500 2690 OPEN "BYEMSG" FOR INPUT AS #2 2695 WHILE NOT EOF(2) 2700 A$=INPUT$(1,#2) 2705 IF A$=CHR$(8) THEN GOSUB 3340:GOTO 2725 2710 IF A$=CHR$(10) THEN 2725 2715 IF A$=CHR$(13) THEN PRINT:IF LCL=0 THEN PRINT #3,M$;:GOTO 2725 ELSE GOTO 2725 2720 PRINT A$;:IF LCL=0 THEN PRINT #3,A$; 2725 WEND 2730 CLOSE #2:FOR I=1 TO 2:GOSUB 6460:NEXT I 2740 CLOSE #3:GOTO 1000 2750 ' 2820 IF CH$="ON " THEN 2880 2840 A$=M$+"Sorry, "+SYS$+" isn't around right now. Try again later...":GOSUB 6500 2860 GOTO 2420 2880 A$=M$+"Please, stand by.":GOSUB 6500 2900 PRINT "Paging SYSOP ";:IF LCL=0 THEN PRINT #3,"Paging SYSOP "; 2920 A$="." 2940 FOR E=1 TO 30 2960 PRINT A$;:IF LCL=0 THEN PRINT #3,A$; 2980 IF BP$="ON " THEN BEEP 3000 GOSUB 6460 3020 NEXT E 3040 A$=M$+"Sorry, "+SYS$+" just doesn't seem to be around at the moment...":GOSUB 6500 3060 A$="Until then, just leave a message if you will..."+M$:GOSUB 6500 3080 GOTO 2420 3100 IF LCL=1 THEN PRINT M$+"CHAT is not supported in LOCAL-mode !":GOSUB 6460:GOTO 2420 3110 A$=M$+"*** ATTENTION *** Sysop is ONLINE !"+M$:GOSUB 6500 3120 LOCATE ,,1 3121 REM 3122 REM ------------- CHAT SUPPORT ROUTINE --------------- 3123 REM 3130 WHILE EOF(3) 3131 IF POS(0)>79 THEN PRINT:PRINT #3,M$;:GOTO 3130 3132 A$=INKEY$:IF LEN(A$)>1 THEN GOSUB 6340:GOTO 3130 3138 IF A$=CHR$(8) OR A$=CHR$(7) OR A$=CHR$(26) OR A$=CHR$(227) OR A$=CHR$(127) THEN 3200 ELSE IF A$=CHR$(27) THEN 3400 3140 IF A$=CHR$(13) AND LCL=0 THEN PRINT:PRINT#3,M$;:GOTO 3130 3150 IF A$<>"" THEN 3190 3160 WEND 3180 A$=INPUT$(1,3):IF A$=CHR$(8) OR A$=CHR$(7) OR A$=CHR$(26) OR A$=CHR$(227) THEN 3200 3185 IF A$=CHR$(13) THEN PRINT:PRINT #3,M$;:GOTO 3130 3190 PRINT A$;:PRINT #3,A$;:GOTO 3130 3200 GOSUB 3340:GOTO 3130 3290 REM 3291 REM ------------- END OF CHAT ROUTINE ---------------- 3292 REM 3340 IF POS(0)>1 THEN PRINT BK1$;:IF LCL=0 THEN PRINT#3,BK$; 3360 RETURN 3400 A$=M$+M$+"CHAT terminated...":GOSUB 6500 3420 LOCATE ,,0 3440 GOTO 2420 3460 A$=M$+"Help !!!"+M$:GOSUB 6500 3480 A$="E)nter ........... You can enter a message to operator":GOSUB 6500 3500 A$="O)perator page ... See if "+SYS$+"'s available to CHAT":GOSUB 6500 3520 A$="G)oodbye ......... Logoff system":GOSUB 6500 3540 A$="?)Help ........... This help file":GOSUB 6500 3560 GOTO 2420 3580 A$=M$+"Enter a message to Sysop"+M$:GOSUB 6500 3600 FOR I=1 TO 60 3620 LI$(I)="" 'clear out dim-array 3640 NEXT 3760 A$=M$+"Enter YOUR message here... you are limited to a maximum of 60 lines.":GOSUB 6500 3780 A$="IMPORTANT! Enter a NULL (blank) line to END-message entry."+M$:GOSUB 6500 3800 L=1:UC=0 3820 IF L=60 THEN LI$(L)="***END***":GOTO 3940 3840 PRINT ">";:IF LCL=0 THEN PRINT #3,">"; 3860 GOSUB 5720 3880 IF B$="" THEN LI$(L)="***END***":GOTO 3940 3900 LI$(L)=B$ 3920 L=L+1:GOTO 3820 3940 A$=M$+"Editing Subfunction":GOSUB 6500 3960 PRINT "E)dit, L)ist, C)ontinue, N)ew, A)bort, S)ave, ?)Help : "; 3980 IF LCL=0 THEN PRINT #3, "E)dit, L)ist, C)ontinue, N)ew, A)bort, S)ave, ?)Help : "; 4000 GOSUB 5720 4020 C$=LEFT$(B$,1) 4060 IF C$="E" OR C$="e" THEN 4720 4080 IF C$="L" OR C$="l" THEN 4580 4100 IF C$="C" OR C$="c" THEN 3820 4120 IF C$="N" OR C$="n" THEN 3580 4140 IF C$="A" OR C$="a" THEN 2420 4160 IF C$="S" OR C$="s" THEN 4380 4170 IF C$="?" THEN 4200 4180 A$="Invalid command!":GOSUB 6500 4190 GOTO 3940 4200 A$=M$+"Help (again) !!!"+M$:GOSUB 6500 4220 A$="E)dit ....... Allows you to make changes & fix message":GOSUB 6500 4240 A$="L)ist ....... Print message back to you so you can REVIEW it":GOSUB 6500 4260 A$="C)ontinue ... Allows you to continue to add lines to message":GOSUB 6500 4280 A$="N)ew ........ Start over":GOSUB 6500 4300 A$="A)bort ...... Zap message & quit":GOSUB 6500 4320 A$="S)ave ....... write message to file for SYSOP":GOSUB 6500 4340 A$="?)Help ...... This file"+M$:GOSUB 6500 4360 GOTO 3940 4380 L=1 4400 OPEN "MESSAGES" FOR APPEND AS #2 4420 PRINT #2, CHR$(13);CHR$(10); 4440 IF LI$(L)="***END***" THEN 4500 4460 PRINT #2, LI$(L);CHR$(13);CHR$(10); 4480 L=L+1:GOTO 4440 4500 CLOSE #2 4520 A$=M$+"Message saved":GOSUB 6500 4540 NUM=NUM+1:GOSUB 6970 4560 GOTO 2420 4580 L=1 4600 IF LI$(L)="***END***" THEN 4680 4620 FM$=STR$(L) 4640 A$=FM$+":"+LI$(L):GOSUB 6500 4660 L=L+1:GOTO 4600 4680 A$=M$:GOSUB 6500 4700 GOTO 3940 4720 PRINT M$+"Enter line number to EDIT or... Q to quit : "; 4740 IF LCL=0 THEN PRINT #3,M$+"Enter line number to EDIT or... Q to quit : "; 4760 GOSUB 5720 4780 IF LEFT$(B$,1)="Q" OR LEFT$(B$,1)="q" THEN 3940 4800 PL=VAL(B$) 4820 A$=">"+LI$(PL):GOSUB 6500 4840 PRINT ">";:IF LCL=0 THEN PRINT #3,">"; 4860 GOSUB 5720 4880 LI$(PL)=B$ 4900 GOTO 4720 4920 A$=M$+"---------------------":GOSUB 6500 4940 A$= " LIST MESSAGE FILE ":GOSUB 6500 4960 A$= "---------------------"+M$:GOSUB 6500 4980 PRINT"Enter YOUR access code: ";:IF LCL=0 THEN PRINT #3,"Enter YOUR access code: "; 5000 UC=-1:GOSUB 5720:UC=0 5020 IF B$=PW$ THEN 5060 5040 A$="AUTHORIZATION FAILURE"+M$:GOSUB 6500:GOTO 2420 5060 OPEN "MESSAGES" FOR INPUT AS #2:GOTO 5200 5080 A$=M$+"Sorry, no MESSAGES at this time.":GOSUB 6500:GOTO 2420 5200 A$=M$+"Press to stop/start, to quit"+M$:GOSUB 6500:PA=1 5210 TCC!=FNTI!+180 5220 WHILE NOT EOF(2) 5240 IF LCL=1 THEN 5300 5250 IF EOF(3) THEN 5300 5260 UU$=LEFT$(INPUT$(LOC(3),#3),1) 5280 IF UU$=" " THEN GOSUB 5699:GOTO 5240 5290 IF UU$=CHR$(27) THEN 5660 5300 YY$=INKEY$ 5320 IF YY$=" " THEN GOSUB 5699:GOTO 5240 5340 IF YY$=CHR$(27) THEN 5660 5400 IF PA=0 THEN 5440 5420 IF FNTI!"+M$:GOSUB 6500:GOTO 2420 5699 TCC!=FNTI!+180:IF PA=0 THEN PA=1:RETURN ELSE PA=0:RETURN 5700 REM 5710 REM ---------- FETCH RESPONSE (TIMES OUT IN 3-MINUTES) ---------- 5712 REM 5720 B$="":TCC!=FNTI!+180:LOCATE ,,1 5725 IF LCL=1 THEN 5740 5730 IF EOF(3) THEN 5740 5735 A$=INPUT$(LOC(3),3):GOSUB 6440:GOTO 5730 5740 A$="" 5760 IF LCL=1 THEN 5800 5762 IF(INP(MSR)AND &H80)=0 THEN 1000 5770 IF EOF(3) THEN 5800 5780 IF LOC(3)<>0 THEN A$=INPUT$(1,#3) 5800 Y$=INKEY$:IF Y$<>"" THEN A$=Y$ 5810 IF A$="" THEN 5980 5812 TCC!=FNTI!+180 5820 IF A$=CHR$(8) AND LEN(B$)=0 THEN 5980 5840 IF A$=CHR$(8) THEN B$=LEFT$(B$,LEN(B$)-1):GOSUB 3340:GOTO 5980 5860 IF A$=CHR$(10) THEN 5980 5880 IF A$=CHR$(13) THEN 6020 5900 IF UC<>0 THEN IF (ASC(A$)>96) AND (ASC(A$)<123) THEN A$=CHR$(ASC(A$)-32) 5920 IF LEN(B$)>77 AND LCL=0 THEN PRINT #3,CHR$(7);:GOTO 5980 5940 B$=B$+A$ 5960 IF UC=-1 THEN A$="." 5970 PRINT A$;:IF LCL=0 THEN PRINT #3,A$; 5980 IF FNTI! to toggle CHAT... chat is ";CH$ 6700 LOCATE 6,24 6720 PRINT " to toggle BEEP... beep is ";BP$ 6740 LOCATE 7,24 6760 PRINT " at any time to BREAK into CHAT" 6780 LOCATE 8,24 6800 PRINT " at any time to disconnect user" 6820 LOCATE 9,24 6840 PRINT " to end program" 6860 LOCATE 10,24 6880 PRINT " to enter LOCAL mode processing" 6890 LOCATE 11,24 6892 PRINT " to RESET number of msgs/callers" 6900 LOCATE 13,24 6920 PRINT "Number of Messages.... ";NUM 6940 LOCATE 14,24 6960 PRINT "Number of Calls....... ";MUN 6970 IF UPD=0 THEN RETURN 6980 OPEN "O",2,"ANSWER.DEF" 6990 WRITE #2,BP$,CH$,NUM,MUN:CLOSE #2 7000 RETURN 8000 REM 8001 REM ---------- CHANGE MSR & LCR TO ADAPT TO CALLERS COMM SETTINGS -------- 8002 REM 11654 R1=INP(LCR):DF=INP(MSB):OUT MSB,0:OUT LCR,R1 OR 128:IF Q=384 THEN OUT LSB,&H80:OUT MSB,&H1:GOTO 11684 11662 IF Q=256 THEN OUT LSB,&H0:OUT MSB,&H1:GOTO 11684 11664 IF Q=96 THEN OUT LSB,&H60:OUT MSB,&H0:GOTO 11684 11666 IF Q=48 THEN OUT LSB,&H30:OUT MSB,&H0 11684 OUT LCR,R1:OUT MSB,DF:RETURN 21280 WHILE NOT EOF(3):DF$=INPUT$(LOC(3),3):WEND:RETURN

---

The views and opinions stated within this web page are those of the author or authors which wrote them and may not reflect the views and opinions of the ISP or account user which hosts the web page. The opinions may or may not be those of the Chairman of The Skeptic Tank.

Return to The Skeptic Tank's main Index page.

E-Mail Fredric L. Rice / The Skeptic Tank