1 GOTO 30000 5 IF PEEK(764)=255 THEN GOTO 9 6 GET #1,N:IF ECHO=1 THEN ? CHR$(N);:IF LOCAL=0 THEN IF N=126 THEN N=ASC(".") 7 IF LOCAL=0 THEN PUT #2,N 8 RETURN 9 IF LOCAL=1 THEN GOTO 5 10 STATUS #2,X:IF PEEK(747)=0 THEN GOTO 5 11 GET #2,N:IF N=ASC(".") THEN PUT #2,N:? "$-";:RETURN 12 IF N=7 THEN PUT #2,7:? "$)";:RETURN 13 ? CHR$(N);:IF ECHO=1 THEN PUT #2,N 14 RETURN 75 CH=1:Y$="" 80 GOSUB CHARGET 90 IF N=126 AND CH>1 THEN CH=CH-1:GOTO 80 95 IF N=126 AND CH=1 THEN Y$="":X$=" ":GOSUB LOUTN:GOTO 80 100 IF N=155 AND CH>1 THEN CH=CH-1:X$="":GOSUB LOUTY:X$=Y$:Y$=X$(1,CH):X$="":RETURN 105 IF N=155 AND CH=1 THEN Y$="":X$="":GOSUB LOUTY:RETURN 110 Y$(CH,CH)=CHR$(N) 120 CH=CH+1:IF CH=80 THEN CH=79:X$="$-":GOSUB LOUTN:GOTO 80 130 GOTO 80 200 IF LOCAL=1 THEN ? X$:RETURN 210 ? X$:? #2;X$:RETURN 250 IF LOCAL=1 THEN ? X$;:RETURN 260 ? X$;:? #2;X$;:RETURN 300 IF LOCAL=1 THEN ? N:RETURN 310 ? N:? #2;N:RETURN 350 IF LOCAL=1 THEN ? N;:RETURN 360 ? N;:? #2;N;:RETURN 500 GOSUB MODEMCLOSE:XIO 36,#2,0,0,"R:":XIO 38,#2,32,0,"R:":A$="ONLINE: ":GOSUB WINDOW 510 ? :? 520 ? " START LOCAL LOGIN" 530 ? " SELECT TOGGLE CHAT" 540 ? " OPTION SEND CARRIER" 550 ? " HELP QUIT BBS" 560 ? 570 IF STRIG(0)=1 THEN LOCAL=0:AT=0:GOSUB MODEMOPEN:GOTO 1000 575 IF PEEK(53279)=6 THEN LOCAL=1:AT=1:GOSUB MODEMOPEN:GOTO 1000 580 IF PEEK(53279)=5 AND CHAT=0 THEN CHAT=1:A$="ONLINE: [CHAT]":GOSUB WINDOW 590 IF PEEK(53279)=5 AND CHAT=1 THEN CHAT=0:A$="ONLINE: [OFF]":GOSUB WINDOW 600 IF PEEK(53279)=3 THEN GOSUB MODEMOPEN:X$="ATA.":GOSUB LOUTY:GOSUB MODEMCLOSE 610 IF PEEK(732)=17 THEN POKE 732,0:GOSUB MODEMCLOSE:END 620 GOTO 570 1000 GOSUB MODEMCLOSE:XIO 38,#2,32,0,"R:":GOSUB MODEMOPEN:FOR ZZ=1 TO 200:NEXT ZZ:X$="850 BBS - Hit RETURN:":GOSUB LOUTN 1010 GOSUB CHARGET 1020 IF N=13 OR N=141 THEN X$="":GOSUB LOUTY:X$="ASCII MODE.":GOSUB LOUTY:AT=0 1030 IF N=155 THEN X$="":GOSUB LOUTY:X$="ATASCII MODE.":GOSUB LOUTY:AT=1:GOTO 1050 1035 IF N<>13 AND N<>155 AND N<>141 THEN X$="":GOSUB LOUTY:GOTO 1040 1037 GOTO 1049 1040 REM 1042 IF C=0 THEN GOSUB MODEMCLOSE:XIO 36,#2,0,0,"R:":C=1:GOTO 1000 1043 IF C=1 THEN GOSUB MODEMCLOSE:XIO 36,#2,10,0,"R:":C=0:GOTO 1000 1044 GOTO 1000 1049 X$="Do you need linefeeds":GOSUB LOUTN:GOSUB YESNO 1050 GOSUB MODEMCLOSE 1060 IF AT=1 THEN XIO 38,#2,32,0,"R:" 1070 IF AT=0 AND Y=0 THEN XIO 38,#2,0,0,"R:" 1080 IF AT=0 AND Y=1 THEN XIO 38,#2,64,0,"R:" 1100 GOSUB MODEMOPEN 1110 IF AT=1 THEN FILE$="WELCOME.ATA" 1120 IF AT=0 THEN FILE$="WELCOME.ASC" 1130 GOSUB FILEDUMP 1140 X$="":GOSUB LOUTY:X$="Enter User ID: ":GOSUB LOUTN:GOSUB LINEGET:GOSUB UPPER 1145 IF Y$="" THEN GOTO 1140 1147 IF Y$="NEW" THEN GOTO 1140 1150 X$="Please wait..checking ID file...":GOSUB LOUTY 1160 GOSUB MODEMCLOSE:CLOSE #3:OPEN #3,4,0,"D:PASS":NAME$=Y$ 1170 TRAP 1500:INPUT #3,X$ 1180 IF X$=NAME$ THEN GOTO 1200 1190 GOTO 1170 1200 INPUT #3,PW$:INPUT #3,SEC$:INPUT #3,PH$ 1210 CLOSE #3:GOSUB MODEMOPEN:CHANCE=0 1220 X$="":GOSUB LOUTY:X$="Enter PASSWORD: ":GOSUB LOUTN:GOSUB LINEGET:GOSUB UPPER 1225 IF Y$="" THEN GOTO 1220 1230 IF CHANCE>3 THEN GOTO HANGUP 1240 IF Y$<>PW$ THEN CHANCE=CHANCE+1:X$="INCORRECT...TRY #":GOSUB LOUTN:N=CHANCE:GOSUB NOUTY:GOTO 1220 1250 IF Y$=PW$ THEN X$="Enter last 4 phone digits.":GOSUB LOUTY:X$="(XXX)/XXX-":GOSUB LOUTN:GOSUB LINEGET:GOTO 1252 1251 GOTO 1260 1252 IF Y$=PH$ THEN X$="Access granted.":GOSUB LOUTY:GOTO 1270 1253 IF Y$<>PH$ THEN X$="Incorrect.":GOSUB LOUTY:GOTO 1140 1260 GOTO 1140 1270 X$="":GOSUB LOUTY:X$="Welcome, ":GOSUB LOUTN:X$=NAME$:GOSUB LOUTY 1280 X$="Security Level: ":GOSUB LOUTN:N=VAL(SEC$(1,2)):GOSUB NOUTY 1290 IF CHAT=1 THEN X$="The SysOp is availiable.":GOSUB LOUTY 1295 IF CHAT=0 THEN X$="The SysOp is NOT availiable.":GOSUB LOUTY 1297 X$="The last caller was ":GOSUB LOUTN:X$=LASTNAME$:GOSUB LOUTN:X$=".":GOSUB LOUTY 1298 A$(9,9+LEN(NAME$))=NAME$:GOSUB WINDOW 1300 FILE$="BULLETIN":GOSUB FILEDUMP 1400 GOTO 2000 1500 GOSUB MODEMOPEN:X$="Apply for a password":GOSUB LOUTN:GOSUB YESNO 1510 IF Y=0 THEN GOTO 1140 1520 X$="":GOSUB LOUTY 1530 X$="User ID application...":GOSUB LOUTY:X$="======================":GOSUB LOUTY 1540 X$="What is your REAL FULL name?":GOSUB LOUTY:GOSUB 1700 1550 X$="What is your HANDLE?":GOSUB LOUTY:GOSUB 1700 1560 X$="What password do you want?(1-10 chars)":GOSUB LOUTY:GOSUB 1700 1570 X$="What type of computer do you have?":GOSUB LOUTY:GOSUB 1700 1580 X$="What is your VOICE phone # XXX-XXX-XXXX":GOSUB LOUTY:GOSUB 1700 1590 X$="Where did you hear about this BBS?":GOSUB LOUTY:GOSUB 1700 1600 SEC$="01 C G " 1610 X$="Thank you!":GOSUB LOUTY:X$="":GOSUB LOUTY:GOTO 1270 1700 GOSUB LINEGET 1705 X$="Correct":GOSUB LOUTN:GOSUB YESNO:IF Y=0 THEN GOTO 1530 1710 GOSUB MODEMCLOSE:CLOSE #3:OPEN #3,9,0,"D:PASSAP":? #3;Y$:CLOSE #3:GOSUB MODEMOPEN:RETURN 2000 POKE 54018,0:REM ** MAIN MENU SUBROUTINE ** 2010 X$="":GOSUB LOUTY:GOSUB LOUTY:X$="Press ? for help.":GOSUB LOUTY:X$="":GOSUB LOUTY 2020 X$="MAIN MENU> ":GOSUB LOUTN:GOSUB LINEGET:GOSUB UPPER 2030 IF Y$="?" OR Y$="HELP" THEN FILE$="MAINMENU":GOSUB FILEDUMP 2040 IF SEC$(5,5)="C" AND Y$="C" THEN GOSUB 20000 2050 IF SEC$(6,6)="D" AND Y$="D" THEN GOSUB MODEMCLOSE:RUN "D:DOORS.BAS" 2060 IF SEC$(9,9)="G" AND Y$="G" THEN GOTO HANGUP 3000 GOTO 2010 20000 IF CHAT=0 THEN X$="I'm sorry...SysOp is not available.":GOSUB LOUTY:GOTO 2000 20010 X$="Paging SysOp...":GOSUB LOUTN 20020 POKE 54018,56 20030 FOR A=1 TO 13 20040 FOR X=1 TO 50:POKE 54016,16:NEXT X:POKE 54016,0 20050 FOR X=1 TO 100:NEXT X 20055 IF PEEK(764)<>255 THEN 20100 20060 X$=".":GOSUB LOUTN:NEXT A 20070 X$="":GOSUB LOUTY:GOSUB LOUTY:X$="SysOp is not availiable.":GOSUB LOUTY:GOTO 2000 20100 X$="":GOSUB LOUTY:GOSUB LOUTY:X$="SysOp online!":GOSUB LOUTY 20110 GOSUB CHARGET 20120 IF N=94 THEN X$="":GOSUB LOUTY:X$="Chat over.":GOSUB LOUTY:GOTO 2000 20130 GOTO 20110 29999 END 30000 POKE 741,40:POKE 742,155:POKE 82,0 30010 POKE 559,0:POKE 560,30:FOR X=1 TO 34:READ A:POKE 39965+X,A:NEXT X:Z=0:POKE 559,34 30020 DIM A$(120):GOTO 30100 30030 FOR X=1 TO LEN(A$) 30032 Y=ASC(A$(X,X)):IF Y>128 THEN Y=Y-128:Z=128 30040 IF Y<32 THEN POKE 39719+X+80,Y+64+Z:GOTO 30070 30050 IF Y<96 THEN POKE 39719+X+80,Y-32+Z:GOTO 30070 30060 POKE 39719+X,Y+Z 30070 Z=0:NEXT X:RETURN 30080 DATA 112,112,66,120,155,13,66,104,156,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,65,30,156 30100 POKE 710,148:OPEN #1,4,0,"K:" 30110 DIM X$(255),FILE$(40),NAME$(20),DATE$(8),PW$(10),CMD$(20),FILE2$(40),FILE3$(40),Y$(255),SEC$(50),LASTNAME$(20) 30120 DIM PH$(4) 30200 LOUTY=200:LOUTN=250:NOUTY=300:NOUTN=350:CHARGET=5:LINEGET=75:MODEMOPEN=30500:MODEMCLOSE=30600:WINDOW=30030 30210 YESNO=30700:FILEDUMP=30800:HANGUP=31500:UPPER=31600 30300 LOCAL=0:AT=1:ECHO=1:LASTNAME$="REBOOT" 30399 ? "$)":? :? 30400 A$="ONLINE: [CHAT]":CHAT=1 30405 GOSUB WINDOW 30410 XIO 38,#2,0,0,"R1:":XIO 36,#2,10,0,"R:":GOSUB MODEMOPEN:X$="ATS0=1 M1 X4 E0":GOSUB LOUTY 30415 FOR D=1 TO 200:NEXT D 30420 GOTO 500 30499 END 30500 CLOSE #2:OPEN #2,13,0,"R1:" 30510 XIO 40,#2,0,0,"R1:":RETURN 30600 CLOSE #2:RETURN 30700 X$="(Y/N)?":GOSUB LOUTN:ECHO=0 30705 GOSUB CHARGET 30710 IF N=89 OR N=121 THEN X$="Yes":GOSUB LOUTY:Y=1:ECHO=1:RETURN 30720 IF N=78 OR N=110 THEN X$="No":GOSUB LOUTY:Y=0:ECHO=1:RETURN 30730 GOTO 30705 30800 X$="":GOSUB LOUTY:GOSUB LOUTY:GOSUB MODEMCLOSE 30810 FILE2$(1,3)="D1:":FILE2$(4,LEN(FILE$)+4)=FILE$ 30820 FILE3$="D8:TEMP" 30830 TRAP 31000:CLOSE #3:CLOSE #4:OPEN #3,4,0,FILE2$:OPEN #4,8,0,FILE3$ 30840 TRAP 30860:INPUT #3,X$:? #4;X$ 30850 GOTO 30840 30860 CLOSE #3:CLOSE #4:GOSUB MODEMOPEN 30870 CLOSE #3:OPEN #3,4,0,"D8:TEMP" 30880 TRAP 30930:INPUT #3,X$:GOSUB LOUTY 30882 IF LOCAL=1 THEN IF PEEK(764)<>255 THEN GOTO 30900 30884 IF LOCAL=0 THEN STATUS #1,X:IF PEEK(747)<>0 OR PEEK(764)<>255 THEN GOTO 30900 30890 GOTO 30880 30900 ECHO=0:GOSUB CHARGET:IF N=ASC(".") THEN ECHO=0:GOSUB CHARGET:IF N=ASC(".") THEN 30882 30910 IF N=ASC(" ") THEN CLOSE #3:ECHO=1:RETURN 30920 GOTO 30882 30930 CLOSE #3:ECHO=1:RETURN 31000 GOSUB MODEMOPEN:X$="SYSTEM ERROR #":GOSUB LOUTN:N=PEEK(195):GOSUB NOUTY 31010 IF AT=1 THEN X$="$)$)$)" 31020 IF AT=0 THEN X$="..." 31030 GOSUB LOUTY:RETURN 31500 LASTNAME$=NAME$:GOTO 31520 31510 REM 31515 IF STRIG(0)=0 THEN GOSUB MODEMCLOSE:GOTO 500 31517 GOTO 31510 31520 X$="Thank you for calling, ":GOSUB LOUTN:X$=NAME$:GOSUB LOUTY 31530 X$="":GOSUB LOUTY 31540 X$=" 850 BBS Systems for ATARI 8-BIT ":GOSUB LOUTY 31545 X$=" 850 BBS COPYRIGHT (c)1989":GOSUB LOUTY 31550 X$=" Stephen Richardson ATCOMM Software":GOSUB LOUTY 31555 X$="":GOSUB LOUTY 31560 X$=" 850 BBS Systems for ATARI 8-BIT ":GOSUB LOUTY 31562 X$="":GOSUB LOUTY:X$="Please hang up now.":GOSUB LOUTY 31570 IF LOCAL=1 THEN GOSUB MODEMCLOSE:GOTO 500 31580 GOTO 31510 31600 IF Y$="" THEN RETURN 31601 FOR CH=1 TO LEN(Y$) 31605 X=ASC(Y$(CH,CH)) 31610 IF X>=97 AND X<=122 THEN X=X-32 31620 Y$(CH,CH)=CHR$(X) 31630 NEXT CH 31640 RETURN ----------- end of file -----------