0 'MiniNet v.2.1--original program Copyright 1983 by David J. Ulmer, revisions Copyright 1986 by Tom Fitzpatrick. "This program may be copied, distributed and updated as long as the result is also made public domain." 1 MAXFILES=4:SCREEN,1 3 CLEAR400:DEFINTA-Y:DEFSTRC,F,J,K,P,Q,W,Z:G=-1:C=CHR$(27):CB=CHR$(8):CG=CHR$(7):CN=CHR$(14):CQ=CHR$(17):CR=CHR$(13):CS=CHR$(19):CX=CHR$(24):Z=CR+CHR$(10):U=17:FA="M":FB=".DO":FC="ADRS":ONERRORGOTO100:ONMDMGOSUB300:GOTO1000 100 MDMOFF:I=ERR:IFI=6THENRESUMENEXTELSEIFI=54THENRESUME910ELSEIFI=18THENRESUME929ELSEP="ERROR"+STR$(I)+"/"+STR$(ERL):PRINTP:RESUME101 101 ONERRORGOTO990:GOSUB700:P=LEFT$(P,5):GOSUB600:GOTO910 200 IFR=1THENRETURNELSEMDMON:RETURN 300 MDMOFF:K=INPUT$(1,1):IFK=CSTHENL=G:KEY8,"^S":GOSUB505:KEY8,Q:L=V:GOSUB200:RETURNELSEIFK=CXTHENPOKE65450,0:RETURNELSEGOSUB200:RETURN 400 P=Z+"CTRL-S Pauses, CTRL-X Aborts"+Z:GOSUB600:RETURN 500 MDMOFF:L=V:J=Q:P=P+CQ:GOSUB600 505 T=V 506 I=PEEK(65414):IFDGANDI<2THENDG=V:KEY8,Q:P=CQ:GOSUB600ELSEIFI>50THENDG=1:P=CS:GOSUB600:KEY8,"^S 507 K=INKEY$:IFK=QTHENIFI=VTHENT=T+1:IFT<2700THEN506ELSEP="Time out!":GOSUB600:ERROR18ELSEIFR=1THEN506ELSEK=INPUT$(1,1) 509 IFL=GTHENRETURNELSEIFK=CRTHENP=Z:GOSUB600:RETURNELSEIF(K=CBORK=CHR$(127))ANDL>0THENL=L-1:J=LEFT$(J,L):P=K+" "+K:ELSEIFK78THENP=CGELSEP=K:J=J+P:L=L+1 570 GOSUB600:GOTO505 600 IFR<>1THENPRINT#2,P; 601 IFHTHENPRINTP;:RETURNELSERETURN 620 B=(FRE(G)-900)/2:IFB>1000THENB=1000:RETURNELSERETURN 625 GOSUB500 630 IFJ=QTHENRETURNELSEFORE=1TOLEN(J):O=ASC(MID$(J,E)):IFO>96THENMID$(J,E)=CHR$(O-32) 635 NEXT:RETURN 640 OPEN"I"FORINPUTAS3:GOSUB200:GOSUB400 642 INPUT#3,P:IFP<>FTHEN642 645 IFEOF(3)ORP=CQORK=CXTHENCLOSE3:RETURNELSEP=INPUT$(1,3):IFP<>CTHENGOSUB600:GOTO645ELSEP=Q:GOSUB500:P=J:IFJ>QTHENGOSUB700:GOTO645ELSERETURN 680 P=P+"? (Y/N)":GOSUB625:J=LEFT$(J,1):RETURN 700 CLOSE4:IF(INP(187)AND6)=2THENLPRINTP;:RETURNELSEOPEN"l"FORAPPENDAS4:PRINT#4,P;:CLOSE4:RETURN 790 R=1:H=V:POKE65414,0 800 H=NOTH 801 PRINTCCHR$(81+H);:RETURN 810 ERROR54 820 R=G:RETURN 830 K=CX:POKE65450,0:RETURN 900 P="Log off":GOSUB680:IFJ="N"THEN3000ELSEGOSUB620:IFB>500THENP="Leave Sysop a msg.":GOSUB680:IFJ="Y"THENF="FDBK":GOSUB640 910 P="Off @"+TIME$:GOSUB600:CLOSE:IFW=QTHEN990ELSEP=LEFT$(TIME$,5):GOSUB700:DEFSNGA,B:GOSUB960:GOSUB970:B=B-15:P=DATE$+LEFT$(TIME$,5):FORA=1TO13:POKEA+B,ASC(MID$(P,A)):NEXT 912 FC="M 4":J=W:GOSUB630:W=J:GOSUB960 913 GOSUB970:IFP>QTHENPOKE(B-LEN(P)+INSTR(P,"\")),68:GOTO913 929 D=19:IFM<5THEN990 930 ONERRORGOTO950 940 D=D-1:IFD0ANDR=VTHEN1010ELSEIFR=1THEN1050 1020 POKE63067,77:CALL(6*16^3+14*16^2+160+6):FORA=1TO2:FORB=1TO1000:NEXT 1030 POKE65344,1:CALL28399:IFPEEK(65344)>0THENI=I+1:IFI>500THEN990ELSE1030 1040 NEXT:OPENPFORINPUTAS1:OPENPFOROUTPUTAS2 1050 P=CG:GOSUB500:P="Mininet v.2.1":GOSUB600 2000 GOSUB6300:ONKEYGOSUB6200,800,830,810:KEY1,"Chat "+C:D=H:H=G 2005 P=Z+"Enter I.D. or NEW:":GOSUB625:IFJ="NEW"THENF=J:GOSUB640:GOTO990ELSEOPENFCFORINPUTAS3 2015 IFEOF(3)THENP="No Match":GOSUB600:CLOSE3:A=A+1:IFA>2THEN910ELSE2005 2020 INPUT#3,F,FE,FD:IFJ=FTHENM1=VAL(LEFT$(FD,2)):D1=VAL(MID$(FD,4,2)):Y1=VAL(MID$(FD,7,2)):WA=MID$(FD,9,5):CLOSE3:W=FE:P=Z+W+DATE$+LEFT$(TIME$,5):H=D:GOSUB700ELSE2015 2025 FORA=VTO2:KEYA+5,MID$(W,A*4+1,4):NEXT:S=4:J=Q:GOSUB5000:P="Press ":GOSUB500 3000 GOSUB200:OPENFAFORINPUTAS3:GOSUB400 3030 LINEINPUT#3,J:IFK<>CXTHENP=J+Z:GOSUB600 3040 IFNOTEOF(3)THEN3030ELSECLOSE3:M=VAL(LEFT$(J,3)):IFM<5THENM=5 3080 K=Q:P=Z+"Menu # (1 -"+STR$(M)+")?":GOSUB500:S=VAL(J):IFS<1ORS>MTHEN3000ELSEONSGOTO900,3130,3140:GOTO5000 3130 GOSUB4000:GOTO3080 3140 GOSUB6000:GOTO3080 4000 GOSUB620:S=V:IFM=U-1ORB<80THENP="No Room!":GOSUB600:RETURNELSEP=Z+"Subject?(15 Chars Max):":GOSUB500:S$=J:IFJ=QTHENRETURNELSEIFLEN(J)>15ORINSTR(J,",")THEN4000ELSEJ=Q:GOTO4010 4005 P=Z+"Send mail to( Aborts):":GOSUB625:IFJ=QTHENRETURNELSEF=J:OPENFCFORINPUTAS3 4006 IFNOTEOF(3)THENINPUT#3,FD,J,FD:GOSUB630:IFJ=FTHENCLOSE3ELSE4006ELSECLOSE3:P=F+" isn't a user here!"+Z:GOSUB600:GOTO4005 4010 P=Z+"Message will end after"+STR$(B)+" bytes"+Z+"or on a blank line"+Z:GOSUB600:N=M+1:F=FA+STR$(N)+FB:OPENFFOROUTPUTAS3:PRINT#3,"\ "DATE$" @ "LEFT$(TIME$,5)W;J 4020 IFB<160THENP="Last line!"ELSEP=Q 4030 GOSUB500:PRINT#3,J:IFJ>QTHENB=B-LEN(J):IFB>79THEN4020 4050 CLOSE3:P="Save":GOSUB680:IFJ="N"THENRETURNELSEIFJ<>"Y"THEN4050ELSEP="Saved."+Z:GOSUB600:IFS=VTHENOPENFAFORAPPENDAS3:GOTO4080ELSEOPENFFORINPUTAS3:F=FA+STR$(S)+FB:OPENFFORAPPENDAS4 4060 IFNOTEOF(3)THENLINEINPUT#3,J:PRINT#4,J:GOTO4060ELSECLOSE3,4:RETURN 4080 PRINT#3,USING"## ";M+1;:PRINT#3,USING"\ \";CHR$(34)+S$+CHR$(34);:PRINT#3," "W:CLOSE3:M=M+1:RETURN 5000 T=V:GOSUB200:F=FA+STR$(S)+FB:OPENFFORINPUTAS3:A=LEN(J):IFA<3THENY=GELSEY=V:IFA>3ANDS=4ANDINSTR(W,"*")THENY=2 5010 J=W:GOSUB630:FE=J:GOSUB400 5020 IFEOF(3)ORK=CXTHEN5070ELSELINEINPUT#3,J:IFK=CNORINKEY$=CNTHENT=V:K=CN:IFJ=QTHENK=J:GOSUB200:GOTO5020ELSE5020 5030 IFY=GTHENM2=VAL(MID$(J,3,2)):D2=VAL(MID$(J,6,2)):WB=MID$(J,14,5):IFY12THENT=V:GOTO5020 5050 P=J+Z:GOSUB600:GOTO5020 5070 CLOSE3:GOSUB620:IFM=VTHENRETURNELSEIFB<80OR(S=5ANDINSTR(W,"*")=V)THEN5080ELSEIFS=4THENGOSUB4005ELSEP="Respond":GOSUB680:IFJ="Y"THENJ=Q:GOSUB4010 5080 GOTO3080 6000 P=Z+"Free:"+STR$(FRE(V))+" File # to delete?":GOSUB500:D=VAL(J):IFD<6ORD>MTHENRETURNELSEOPENFAFORINPUTAS4 6010 IFEOF(4)THENCLOSE4:RETURNELSEINPUT#4,J:IFVAL(LEFT$(J,2))<>DTHEN6010 6020 CLOSE4:GOSUB620:IFB>79ANDINSTR(19,J,W)=VANDINSTR(W,"*")=VTHENRETURNELSEP="Delete "+LEFT$(J,INSTR(5,J,CHR$(34))):GOSUB680:IFJ<>"Y"THENRETURN 6040 FD=FA+STR$(D)+FB:FE="T"+FB:NAMEFD$ASFE$:OPENFAFORINPUTAS3:OPENFEFOROUTPUTAS4 6050 LINEINPUT#3,J:IFVAL(LEFT$(J,3))<>DTHENPRINT#4,J:GOTO6050 6080 IFM=DTHENCLOSE3,4:M=M-1:FD=FA+STR$(M+1)+FB:NAME"M.DO"ASFD$:NAMEFE$AS"M.DO":OPENFDFOROUTPUTAS4:CLOSE4ELSELINEINPUT#3,J:FD=FA+STR$(D+1)+FB:FF=FA+STR$(D)+FB:NAMEFD$ASFF$:FF=Q:PRINT#4,USING"##";D;:PRINT#4,RIGHT$(J,LEN(J)-2):D=D+1:GOTO6080 6090 P="File deleted"+Z:GOSUB600:RETURN 6200 MDMOFF:KEYOFF:L=G:A=H:H=G:GOSUB801:P="Chat engaged..."+Z+CG:GOSUB600 6210 GOSUB505:P=K:IFP=CTHENP="disengaged"+Z+CG:GOSUB600:H=A:GOSUB801:KEYON:GOSUB200:RETURNELSEIFP=CRTHENP=ZELSEIFP=CBTHENP=P+" "+P 6220 GOSUB600:GOTO6210 6300 KEYOFF:FORI=1TO8:READP:KEYI,P:NEXT:KEYON:RETURN 6301 DATAQuit,,,Run,Ring,,,,,View,^X,Zoom,,,, 6400 GOSUB980:END Mininet 2.1X Modifications: (Delete this section if the internal modem is to be used.) To convert Mininet 2.1 to an external modem program, edit this file and make the following changes: 1. Using the [F1](Find) key, find all occurences of mdm and replace them with com 2. Change lines 1, 820, 1000 and 1010 to: 1 MAXFILES=4:SCREEN,1:P$="COM:38N1E":OPENP$FOROUTPUTAS1:OPENP$FORINPUTAS2:PRINT#1,"ATS0=1E0Q1":CLOSE 820 R=G:PRINT#2,"ATA":RETURN 1000 GOSUB6300:ONKEYGOSUB6400,,,790,820:P="COM:38N1D":OPENPFORINPUTAS1:OPENPFOROUTPUTAS2:COMON:CLS:PRINT,:CALL32428 1010 PRINTCRTIME$;:IFK=QANDR=VTHEN1010ELSEP=CG:GOSUB500:P="Mininet v.2.1X":GOSUB600 3. Delete lines 1020, 1030, 1040 and 1050. Notes about modems: The modem routines were designed for use with a Hayes compatible, auto answer modem. If you are not using a Hayes compatible, line 1 a) sets the modem to answer on the first ring, b) sets the command echo off, c) turns the result code to screen option off. Line 820 tells the modem to pick up the phone and send an answer carrier without it first ringing. Also, make sure that your modem is set to support RS-232 DTR signals(this is usually a DIP switch on the modem). Good luck, and happy telecomputing!