1 CLS: PRINT@200,"MiniNet Ver 1.03" 2 PRINT"Copyright (c)1983 David J. Ulmer" 3 CLEAR330:MAXFILES=5:CR$=CHR$(13) 4 CS$=CHR$(19):CQ$=CHR$(17):CC$=CHR$(3):BS$=CHR$(8):D$=".DO" 5 ON MDM GOSUB 300 6 ON ERROR GOTO 200 7 DEFINT A-Z 99 ' 100 'Mainline 110 U=18:'U=Max Menu entries+1 120 GOSUB 1000 130 PRINT#2,"":PRINT#2,"TRS-80 Model 100 MiniNet V1.03" 135 PRINT#2,"":PRINT#2,"Welcome Message... " 140 GOSUB 2000 150 GOSUB 3000 160 GOTO 110 199 ' 200 'Error Trap Routine 210 IF ERR=18 THEN CLOSE:RESUME 998 220 IF ERR=60 THEN RESUME 900 240 A$="System Error"+STR$(ERR)+" in "+STR$(ERL) 250 PRINTA$:PRINT#2,A$:RESUME 920 299 ' 300 'Modem Interrupt service 320 MDMOFF:I$=INPUT$(1,1):IF I$<>CC$ THEN 340 330 PRINT#2,"":PRINT#2,"Aborted..." 340 RETURN 399 ' 500 'Get User input 510 A$="":PRINT#2,CQ$; 520 I=PEEK(65414):IF I=0 THEN T=T+1:IF T=9999 THEN ERROR 60ELSE520 530 I$=INPUT$(1,1):PRINT#2,I$; 540 IF I$=CC$ THEN I$="":T=-1:RETURN 550 IF I$=CR$THEN T=0:PRINT#2,"":RETURN 560 IF I$=BS$ THEN I=LEN(A$):IFI>0 THEN A$=LEFT$(A$,I-1):GOTO 520 570 A$=A$+I$:GOTO 520 599 ' 900 'Timeout Logoff 910 PRINT#2," ":PRINT#2,"Sorry your time for typing has expired.." 920 PRINT#2,"":PRINT#2,"Goodbye ";N$;", Stay Positive!" 925 D=19:IF M<4 THEN998 930 ON ERROR GOTO 950 940 D=D-1:IF D=M THEN998ELSE F$="MU"+STR$(D)+D$:KILL F$:GOTO 940 950 RESUME 930 998 RUN3 999 ' 1000 CALL 21179:'Wait for call 1010 PRINT"Waiting to be called at ";TIME$;CR$; 1020 IF (INP(208)-224)>0 THEN 1010 1030 I=1:CALL 21200:'OffHook 1032 FOR J=1 TO 2:FOR K=1 TO 1000:NEXT 1035 POKE65344,1:CALL28399:IFPEEK(65344)<>0THENI=I+1:IF I=999 THEN1000ELSE 1035 1038 NEXT J 1040 OPEN "MDM:7I1E" FOR INPUT AS 1 1050 OPEN "MDM:7I1E" FOR OUTPUT AS 2 1099 RETURN 1999 ' 2000 'Check Name and Password 2010 PRINT#2,"":PRINT#2,"First Name?";:GOSUB500 2020 OPEN "ADRS"FOR INPUT AS 3 2040 IF EOF(3) THEN PRINT#2,"":PRINT#2,"No Match":CLOSE3:N$="":GOTO 2010 2050 INPUT#3,N$:IF A$<>N$ THEN LINEINPUT#3,N$:GOTO 2040 2060 INPUT#3,P$ 2070 PRINT#2,"Password?";:GOSUB500:IF A$<>P$THEN 2070 2080 CLOSE3:PRINT#2,"":PRINT#2,"Login ";N$;" at ";TIME$;" on ";DAY$;" ";DATE$ 2090 PRINTUSING"\ \";N$:RETURN 2999 ' 3000 'Main Menu 3020 I$="":MDMON:OPEN "MENU" FOR INPUT AS 3 3030 LINEINPUT#3,A$:IF I$<>CC$ THEN PRINT#2,A$ 3040 IF EOF(3)=0THEN 3030 3050 CLOSE3:M=VAL(LEFT$(A$,3)):IF L=0 THEN L=M:IF M<5 THEN M=4 3080 I$="":'No Menu entry 3090 MDMOFF:PRINT#2,"Enter Selection Number or Return ?"; 3092 GOSUB500:IF PEEK(65414)<>0 THEN 3092 3100 S=VAL(A$):IF S<=0ORS>M THEN 3000 3110 ON S GOTO 920,3130,3140 3120 IF S>3 THEN GOSUB 5000 3125 GOTO 3000 3130 GOSUB 4000:GOTO 3080 3140 GOSUB 6000:GOTO 3080 3999 ' 4000 'Upload! 4010 B=FRE(0)-900:IF U=L THEN PRINT#2,"You must re-dial":GOTO 920 4020 IF M=U-1ORB<0 THEN PRINT#2,"Memory Full...Wait...":D=5:GOSUB6030:GOTO 4010 4025 PRINT#2,"":PRINT#2,"*** Type CTRL-C to END your Upload ***" 4030 PRINT#2,"Upload will pause after <";B;"> Bytes":N=M+1 4040 PRINT#2,"to Save File #5 to Cassette..." 4070 F$="MU"+STR$(N)+D$:OPEN F$ FOR OUTPUT AS 3 4080 PRINT#2,"Enter Text:" 4090 B=FRE(0)-900:D=5 4100 IF B<0THEN GOSUB6030:GOTO4090 4102 GOSUB500:PRINT#2,CS$;:PRINT#3,A$:B=B-LEN(A$) 4105 IF T<>-1 THEN 4100 4110 CLOSE3:PRINT#2,CQ$:PRINT#2,"File Closed. OK to save Y/N ?";:GOSUB500 4120 IF A$="N"ORA$="n"THEN:RETURN 4130 PRINT#2,"":PRINT#2,"Thank you for uploading!" 4140 OPEN "MENU" FOR APPEND AS 3 4150 PRINT#3,USING"##";M+1;:PRINT#3,USING"\ \";". "+N$+"'s";:PRINT#3,TIME$+" on "+DAY$+" "+DATE$ 4160 CLOSE3 4170 M=M+1:IF M>LTHEN L=M 4175 IF MM THEN RETURN 6020 :PRINT#2,"Delete#";D;", Are you sure Y/N ?";:GOSUB500:IF A$<>"Y"AND A$<>"y" THENRETURN 6030 PRINT#2,"":PRINT#2,".Wait...":FOR I=1 TO 1000:NEXT 6035 OPEN "MENU" FOR INPUT AS 4 6040 INPUT#4,A$:IF VAL(LEFT$(A$,2))<>D THEN 6040 6045 CLOSE4:PRINTA$ 6050 I=INSTR(1,A$,"."):A$=MID$(A$,I+2,6) 6060 N1$="MU"+STR$(D)+D$:N2$=A$+D$:NAME N1$ AS N2$ 6080 OPEN A$ FOR INPUT AS 4:A$="CAS:"+A$:OPEN A$ FOR OUTPUT AS 5 6082 IF EOF(4) THEN CLOSE4,5:GOTO 6090 6084 LINEINPUT #4,A$:PRINT#5,A$:GOTO 6082 6090 OPEN N2$ FOR OUTPUT AS 4 6100 OPEN "MENU" FOR INPUT AS 5 6110 LINEINPUT#5,A$:IF VAL(LEFT$(A$,3))<>D THEN PRINT#4,A$:GOTO 6110 6120 IF M=D THEN6140ELSELINEINPUT#5,A$ 6130 N1$="mu"+STR$(D+1)+D$:N3$="mu"+STR$(D)+D$:NAME N1$ASN3$ 6139 PRINT#4,USING"##";D;:PRINT#4,RIGHT$(A$,LEN(A$)-2):D=D+1:GOTO 6120 6140 CLOSE4,5:M=M-1 6150 N1$="MU"+STR$(M+1)+D$ 6160 NAME "MENU.DO" AS N1$:NAME N2$ AS "MENU.DO" 6170 OPEN N1$ FOR OUTPUT AS 4:CLOSE4 6180 RETURN 6999 '